From: Stefan Strohauer Date: Mon, 17 Feb 2014 14:50:47 +0000 (+0100) Subject: Added first draft of CCE-Simulation. Few updates for Plotgraph.C X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=4182bf3b6a4da2a0fc3f615392bc3dac6543fb37;p=radhard.git Added first draft of CCE-Simulation. Few updates for Plotgraph.C --- diff --git a/CCESimulation/build_cce_distribution.m b/CCESimulation/build_cce_distribution.m new file mode 100644 index 0000000..5f96ef5 --- /dev/null +++ b/CCESimulation/build_cce_distribution.m @@ -0,0 +1,28 @@ +function cce_distribution = build_cce_distribution(selected_matrix, x_coord, y_coord, delta_x, delta_y, X, Y) +a = 1/20; +c = 0.9; + +if selected_matrix == "quadratic" + cce_distribution = 0.5*exp(-1/10*sqrt((X-x_coord).^2 + (Y-y_coord).^2) ); +elseif selected_matrix == "Mi29a0" + cce_distribution = c*exp(-a*sqrt((X-x_coord).^2 + (Y-y_coord).^2) ); +# cce_distribution(sqrt((X-x_coord).^2 + (Y-y_coord).^2) < 2) = 1; % CCE of the diode + +# cce_distribution = 1./(exp(1/10*(sqrt((X-x_coord).^2 + (Y-y_coord).^2)-15) ) + 1); % Fermi-Dirac CCE + + # cce_distribution = c*exp(-1/200*((X-x_coord).^2 + (Y-y_coord).^2) ); + # cce_distribution = sqrt((X-x_coord).^2 + (Y-y_coord).^2); +elseif (selected_matrix == "Mi29a1") + cce_distribution = c*exp(-a*sqrt((X-x_coord).^2 + (Y-y_coord).^2) ) + c*exp(-a*sqrt((X-(x_coord-delta_x/2)).^2 + (Y-y_coord).^2) ); +elseif (selected_matrix == "Mi29a2") + cce_distribution = c*exp(-a*sqrt((X-x_coord).^2 + (Y-y_coord).^2) ) + c*exp(-a*sqrt((X-(x_coord-delta_x/2)).^2 + (Y-y_coord).^2) ); +elseif (selected_matrix == "Mi29a3") + cce_distribution = c*exp(-a*sqrt((X-x_coord).^2 + (Y-y_coord).^2) ) + c*exp(-a*sqrt((X-(x_coord-delta_x/2)).^2 + (Y-y_coord).^2) ); +elseif (selected_matrix == "Mi29a4") + cce_distribution = c*exp(-a*sqrt((X-x_coord).^2 + (Y-y_coord).^2) ) + c*exp(-a*sqrt((X-(x_coord-delta_x/2)).^2 + (Y-(y_coord+delta_y/2)).^2) ); +elseif (selected_matrix == "Mi29a5") + cce_distribution = c*exp(-a*sqrt((X-x_coord).^2 + (Y-y_coord).^2) ) ... + + c*exp(-a*sqrt((X-x_coord).^2 + (Y-(y_coord+delta_y/2)).^2) ) ... + + c*exp(-a*sqrt((X-(x_coord-delta_x/2)).^2 + (Y-y_coord).^2)) ... + + c*exp(-a*sqrt((X-(x_coord-delta_x/2)).^2 + (Y-(y_coord+delta_y/2)).^2) ); +end \ No newline at end of file diff --git a/CCESimulation/main.m b/CCESimulation/main.m new file mode 100644 index 0000000..fc1e37a --- /dev/null +++ b/CCESimulation/main.m @@ -0,0 +1,104 @@ +%% main script + +% selected_matrix = "Mi29a0"; +selected_matrix = "quadratic"; +granularity = 500; +numPixel = 6; % number of pixels in one row and one column + +if selected_matrix == "quadratic" + delta_x = 32; + delta_y = 32; + staggered_factor = 0; +elseif selected_matrix == "Mi29a0" + delta_x = 64; + delta_y = 16; + staggered_factor = 1/2; +elseif selected_matrix == "Mi29a1" + delta_x = 64; + delta_y = 16; + staggered_factor = 1/4; +elseif selected_matrix == "Mi29a2" + delta_x = 64; + delta_y = 32; + staggered_factor = 0; +elseif selected_matrix == "Mi29a3" + delta_x = 64; + delta_y = 32; + staggered_factor = 1/4; +elseif selected_matrix == "Mi29a4" + delta_x = 64; + delta_y = 64; + staggered_factor = 0; +elseif selected_matrix == "Mi29a5" + delta_x = 64; + delta_y = 64; + staggered_factor = 0; +end + +[X, Y] = meshgrid( linspace(0, (numPixel-1)*delta_x, granularity), linspace(0, (numPixel-1)*delta_y, granularity)); +pixelCCE = zeros(granularity, granularity, numPixel, numPixel); %% second 2 arguments: x and y coordinate of the pixel; first 2 arguments: matrix with CCE entries + +% create CCE matrix for each pixel +for i = 1:numPixel + for j = 1:numPixel + x_coord = (j-1)*delta_x + mod(i+1,2)*delta_x*staggered_factor; % every second row is shifted by delta_x/2 to the right + y_coord = (i-1)*delta_y; + + pixelCCE(:, :, j, i) = build_cce_distribution(selected_matrix, x_coord, y_coord, delta_x, delta_y, X, Y); + end +end + + +maxCCE = zeros(size(pixelCCE(:,:,1,1))); +sumCCE = zeros(size(pixelCCE(:,:,1,1))); +for i = 1:numPixel + for j = 1:numPixel + maxCCE = max(maxCCE, pixelCCE(:, :, j, i)); + sumCCE = sumCCE + pixelCCE(:, :, j, i); + end +end + + +combined_CCE = maxCCE./sumCCE; +# selection = (X>delta_x*floor(numPixel/2)) & (Xdelta_y*floor(numPixel/2)) & (Y