From 4a06ce08d7dbe999c1deac0a6778bd4789536adf Mon Sep 17 00:00:00 2001 From: Blake Walters Date: Mon, 9 Aug 2021 11:49:48 -0700 Subject: [PATCH 01/14] Fix many small transport bugs in synchdmlc --- .../omega/beamnrc/CMs/SYNCHDMLC_cm.mortran | 203 +++++--- .../beamnrc/CMs/SYNCHDMLC_macros.mortran | 476 ++++++++++++++---- .../omega/progs/gui/beamnrc/synchdmlc.tcl | 20 +- 3 files changed, 516 insertions(+), 183 deletions(-) diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran index 1565b296e..0b33392d6 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran @@ -1144,16 +1144,12 @@ $REAL INDEXTMP; "T>temporary input variable for field indices in dynamic and " step-and-shoot simulations $LOGICAL check_full_qtr; -"a flag indicating whether a sector of a given leaf cross-section has" -"an alternative definition to that specified in the BEAMnrc Manual" -"indexing: LEAFTYPE, 1 (Y bound) or 2 (Z bound), boundary no. -$INTEGER I_LEAF_ALT_DEF(5,2,10); $REAL YTMP; DO I=1,5[ DO J=1,2[ DO K=1,10[ - I_LEAF_ALT_DEF(I,J,K)=0; + I_LEAF_ALT_DEF_$SYNCHDMLC(I,J,K)=0; ] ] ] @@ -1609,7 +1605,7 @@ IF(NUM_HLF>0) [ ' WRAILBOT_$SYNCHDMLC(2) > WGROOVE_$SYNCHDMLC(2)+WTIP_$SYNCHDMLC(2).'/ ' Leaf cross-section differs from that specified in the BEAMnrc'/ ' Manual.'//); - I_LEAF_ALT_DEF(2,1,4) = 1; + I_LEAF_ALT_DEF_$SYNCHDMLC(2,1,4) = 1; ] IF(WRAILTOP_$SYNCHDMLC(2)>WRAILBOT_$SYNCHDMLC(2))[ OUTPUT ICM_$SYNCHDMLC; @@ -1617,7 +1613,7 @@ IF(NUM_HLF>0) [ ' WRAILTOP_$SYNCHDMLC(2) > WRAILBOT_$SYNCHDMLC(2).'/ ' This differs from the cross-section specified in the BEAMnrc'/ ' Manual.'//); - I_LEAF_ALT_DEF(2,1,6) = 1; + I_LEAF_ALT_DEF_$SYNCHDMLC(2,1,6) = 1; ] IF(WRAILTOP_$SYNCHDMLC(2)0) [ (//' ***WARNING IN CM ',I3,' ($SYNCHDMLC) in HALF ISO leaf definition:'/ ' WRAILBOT_$SYNCHDMLC(3) > WRAILTOP_$SYNCHDMLC(3).'/ ' This differs from the cross-section specified in the BEAMnrc Manual.'//); - I_LEAF_ALT_DEF(3,1,1) = 1; + I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1) = 1; ] IF(WRAILBOT_$SYNCHDMLC(3)0) [ ' WRAILBOT_$SYNCHDMLC(4) > WGROOVE_$SYNCHDMLC(4)+WTIP_$SYNCHDMLC(4).'/ ' This differs from the cross-section specified in the BEAMnrc'/ ' Manual.'//); - I_LEAF_ALT_DEF(4,1,4) = 1; + I_LEAF_ALT_DEF_$SYNCHDMLC(4,1,4) = 1; ] IF(WRAILTOP_$SYNCHDMLC(4)>WRAILBOT_$SYNCHDMLC(4))[ OUTPUT ICM_$SYNCHDMLC; (//' ***WARNING IN CM ',I3,' ($SYNCHDMLC) in QTR TARGET leaf definition:'/ ' WRAILTOP_$SYNCHDMLC(4) > WRAILBOT_$SYNCHDMLC(4).'/ ' This differs from the cross-section specified in the BEAMnrc Manual.'//); - I_LEAF_ALT_DEF(4,1,6) = 1; + I_LEAF_ALT_DEF_$SYNCHDMLC(4,1,6) = 1; ] IF(WRAILTOP_$SYNCHDMLC(4)0) [ (//' ***WARNING IN CM ',I5,' ($SYNCHDMLC) in QTR ISO leaf definition:'/ ' WRAILBOT_$SYNCHDMLC(5) < WRAILTOP_$SYNCHDMLC(5)-WTONGUE_$SYNCHDMLC(5).'/ ' Cross-section definition differs from BEAMnrc Manual.'//); - I_LEAF_ALT_DEF(5,1,2) = 1; + I_LEAF_ALT_DEF_$SYNCHDMLC(5,1,2) = 1; IF(WRAILBOT_$SYNCHDMLC(5)0) [ (//' ***WARNING IN CM ',I5,' ($SYNCHDMLC) in QTR ISO leaf definition:'/ ' ZGROOVE_$SYNCHDMLC(5) > ZTONGUE_$SYNCHDMLC(5).'/ ' This differs from the cross-section specified in the BEAMnrc Manual.'//); - I_LEAF_ALT_DEF(5,2,4) = 1; + I_LEAF_ALT_DEF_$SYNCHDMLC(5,2,4) = 1; ] IF(ZHOLETOP_$SYNCHDMLC(5)0) [ YREG_$SYNCHDMLC(I,7)=YREG_$SYNCHDMLC(I,2)+LEAFWIDTH_$SYNCHDMLC(2); YREG_$SYNCHDMLC(I,6)=YREG_$SYNCHDMLC(I,7)- ABS(WRAILBOT_$SYNCHDMLC(2)-WRAILTOP_$SYNCHDMLC(2)); - IF(I_LEAF_ALT_DEF(2,1,6)=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(2,1,6)=1)[ YTMP = YREG_$SYNCHDMLC(I,6); ] ELSE[ YTMP = YREG_$SYNCHDMLC(I,7); ] - IF(I_LEAF_ALT_DEF(2,1,4)=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(2,1,4)=1)[ YREG_$SYNCHDMLC(I,4)=YTMP-WGROOVE_$SYNCHDMLC(2)-WTIP_$SYNCHDMLC(2); YREG_$SYNCHDMLC(I,3)=YTMP-WRAILBOT_$SYNCHDMLC(2); ] @@ -2492,7 +2488,7 @@ IF(TOT_LEAF_$SYNCHDMLC>0) [ WRAILBOT_$SYNCHDMLC(3)); YREG_$SYNCHDMLC(I,3)=YREG_$SYNCHDMLC(I,1)+WTONGUE_$SYNCHDMLC(3); YREG_$SYNCHDMLC(I,4)=YREG_$SYNCHDMLC(I,3)+WTIP_$SYNCHDMLC(3); - IF(I_LEAF_ALT_DEF(3,1,1)=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1)[ YREG_$SYNCHDMLC(I,5)=YREG_$SYNCHDMLC(I,1)+WRAILBOT_$SYNCHDMLC(3); ] ELSE[ @@ -2505,20 +2501,20 @@ IF(TOT_LEAF_$SYNCHDMLC>0) [ ELSEIF(LEAFTYPE_$SYNCHDMLC(I)=4)["qtr target leaf" YREG_$SYNCHDMLC(I,2)=YREG_$SYNCHDMLC(I,1)+WTONGUE_$SYNCHDMLC(4); YREG_$SYNCHDMLC(I,7)=YREG_$SYNCHDMLC(I,2)+LEAFWIDTH_$SYNCHDMLC(4); - IF(I_LEAF_ALT_DEF(4,1,5)=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(4,1,5)=1)[ YREG_$SYNCHDMLC(I,6)=YREG_$SYNCHDMLC(I,7)-WGROOVE_$SYNCHDMLC(4); ] ELSE[ YREG_$SYNCHDMLC(I,6)=YREG_$SYNCHDMLC(I,7)- ABS(WRAILBOT_$SYNCHDMLC(4)-WRAILTOP_$SYNCHDMLC(4)); ] - IF(I_LEAF_ALT_DEF(4,1,6)=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(4,1,6)=1)[ YTMP = YREG_$SYNCHDMLC(I,6); ] ELSE[ YTMP = YREG_$SYNCHDMLC(I,7); ] - IF(I_LEAF_ALT_DEF(4,1,4)=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(4,1,4)=1)[ YREG_$SYNCHDMLC(I,4)=YTMP-WGROOVE_$SYNCHDMLC(4)-WTIP_$SYNCHDMLC(4); YREG_$SYNCHDMLC(I,3)=YTMP-WRAILBOT_$SYNCHDMLC(4); ] @@ -2526,7 +2522,7 @@ IF(TOT_LEAF_$SYNCHDMLC>0) [ YREG_$SYNCHDMLC(I,3)=YTMP-WGROOVE_$SYNCHDMLC(4)-WTIP_$SYNCHDMLC(4); YREG_$SYNCHDMLC(I,4)=YTMP-WRAILBOT_$SYNCHDMLC(4); ] - IF(I_LEAF_ALT_DEF(4,1,5)=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(4,1,5)=1)[ YREG_$SYNCHDMLC(I,5)=YTMP-WRAILBOT_$SYNCHDMLC(4)+ WRAILTOP_$SYNCHDMLC(4); ] @@ -2535,7 +2531,7 @@ IF(TOT_LEAF_$SYNCHDMLC>0) [ ] ] ELSE ["qtr isocenter leaf" - IF(I_LEAF_ALT_DEF(5,1,2)=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,1,2)=1)[ YREG_$SYNCHDMLC(I,3)=YREG_$SYNCHDMLC(I,1)+WRAILTOP_$SYNCHDMLC(5)- WRAILBOT_$SYNCHDMLC(5); YREG_$SYNCHDMLC(I,2)=YREG_$SYNCHDMLC(I,1)+WTONGUE_$SYNCHDMLC(5); @@ -2556,8 +2552,8 @@ IF(TOT_LEAF_$SYNCHDMLC>0) [ DO J = 1, 7 [ SURPARA1_$SYNCHDMLC(I,J)=YREG_$SYNCHDMLC(I,J)/TEMP1; - "OUTPUT I, J, YREG_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" - " OUTPUT I, J, SURPARA1_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" + OUTPUT I, J, YREG_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" + OUTPUT I, J, SURPARA1_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" ];"End of J Loop" ]; "End of K Loop" ]; "End of L loop" @@ -2896,14 +2892,14 @@ DO L=1,TOT_LEAF_$SYNCHDMLC[ SUBINDEX_$SYNCHDMLC(L,I,2,6)=2; SUBINDEX_$SYNCHDMLC(L,I,2,7)=2; SUBINDEX_$SYNCHDMLC(L,I,3,1)=2; - IF(I_LEAF_ALT_DEF(LEAFTYPE_$SYNCHDMLC(L),1,4)~=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(L),1,4)~=1)[ SUBINDEX_$SYNCHDMLC(L,I,3,2)=2; ] SUBINDEX_$SYNCHDMLC(L,I,3,3)=2; SUBINDEX_$SYNCHDMLC(L,I,3,5)=2; SUBINDEX_$SYNCHDMLC(L,I,3,6)=2; SUBINDEX_$SYNCHDMLC(L,I,3,7)=2; - IF(I_LEAF_ALT_DEF(LEAFTYPE_$SYNCHDMLC(L),1,4)~=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(L),1,4)~=1)[ SUBINDEX_$SYNCHDMLC(L,I,3,8)=2; ] SUBINDEX_$SYNCHDMLC(L,I,4,1)=2; @@ -2912,13 +2908,13 @@ DO L=1,TOT_LEAF_$SYNCHDMLC[ SUBINDEX_$SYNCHDMLC(L,I,4,6)=2; SUBINDEX_$SYNCHDMLC(L,I,4,7)=2; SUBINDEX_$SYNCHDMLC(L,I,4,8)=2; - IF(I_LEAF_ALT_DEF(LEAFTYPE_$SYNCHDMLC(L),1,5)~=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(L),1,5)~=1)[ SUBINDEX_$SYNCHDMLC(L,I,5,1)=2; ] SUBINDEX_$SYNCHDMLC(L,I,5,3)=2; SUBINDEX_$SYNCHDMLC(L,I,5,5)=2; SUBINDEX_$SYNCHDMLC(L,I,5,6)=2; - IF(I_LEAF_ALT_DEF(LEAFTYPE_$SYNCHDMLC(L),1,6)=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(L),1,6)=1)[ SUBINDEX_$SYNCHDMLC(L,I,6,1)=2; ] ELSE[ @@ -2963,12 +2959,12 @@ DO L=1,TOT_LEAF_$SYNCHDMLC[ ] ELSE [ "This is an Half or Quarter Isocenter Leaf" "Common to both Half and Quarter" - IF(I_LEAF_ALT_DEF(LEAFTYPE_$SYNCHDMLC(L),1,1)=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(L),1,1)=1)[ SUBINDEX_$SYNCHDMLC(L,I,1,9)=2; ] ELSE[ IF (LEAFTYPE_$SYNCHDMLC(L)=3 | - I_LEAF_ALT_DEF(LEAFTYPE_$SYNCHDMLC(L),2,4)=1) [ + I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(L),2,4)=1) [ "either 1) half isocentre or 2) quarter isocentre with zg>zt" SUBINDEX_$SYNCHDMLC(L,I,1,4)=2; ] @@ -2976,13 +2972,13 @@ DO L=1,TOT_LEAF_$SYNCHDMLC[ SUBINDEX_$SYNCHDMLC(L,I,1,7)=2; ] IF(LEAFTYPE_$SYNCHDMLC(L)=3 | - I_LEAF_ALT_DEF(LEAFTYPE_$SYNCHDMLC(L),2,4)=1)[ + I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(L),2,4)=1)[ "either 1) half isocentre or 2) quarter isocentre with zg>zt" SUBINDEX_$SYNCHDMLC(L,I,2,4)=2; ] SUBINDEX_$SYNCHDMLC(L,I,2,5)=2; SUBINDEX_$SYNCHDMLC(L,I,2,7)=2; - IF(I_LEAF_ALT_DEF(LEAFTYPE_$SYNCHDMLC(L),1,2)~=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(L),1,2)~=1)[ SUBINDEX_$SYNCHDMLC(L,I,2,9)=2; ] SUBINDEX_$SYNCHDMLC(L,I,3,2)=2; @@ -3007,7 +3003,7 @@ DO L=1,TOT_LEAF_$SYNCHDMLC[ SUBINDEX_$SYNCHDMLC(L,I,6,8)=2; SUBINDEX_$SYNCHDMLC(L,I,6,9)=2; - IF(I_LEAF_ALT_DEF(LEAFTYPE_$SYNCHDMLC(L),2,4)~=1) [ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(L),2,4)~=1) [ "Quarter Isocenter with zg=6) [I1=6; I2=10;] - ELSEIF(NZ=4) [I1=4; I2=5;] - ELSEIF((NY=2|NY=3) & NZ>=8) [I1=8; I2=10;] - ELSEIF((NY=3|NY=4|NY=5) & NZ=1) [I1=1; I2=2;] - ELSEIF((NY=3|NY=4|NY=5) & NZ=2) [I1=2; I2=3;] - ELSEIF(NY>=3 & NZ=3) [I1=3; I2=4;] - ELSEIF((NY=2|NY=3) & (NZ=5|NZ=6|NZ=7)) [I1=5; I2=8;] - ELSEIF(NY=4 & (NZ=5|NZ=6|NZ=7|NZ=8)) [I1=5; I2=9;] - ELSEIF(NY=4 & NZ=9) [I1=9; I2=10;] - ELSEIF((NY=5|NY=6) & (NZ=5|NZ=6)) [I1=5; I2=7;] - ELSEIF((NY=5|NY=6) & NZ>=7) [I1=7; I2=10;] - ELSEIF(NY=6 & NZ<=2) [I1=1; I2=3;] - + "Deal with each NY case" + IF(NY=1) [ + IF(NZ<=3) [I1=1; I2=4;] + ELSEIF(NZ=4) [I1=4; I2=5;] + ELSEIF(NZ=5) [I1=5; I2=6;] + ELSE [I1=6; I2=10;] + ] + ELSEIF(NY=2) [ + IF(NZ<=3) [I1=1; I2=4;] + ELSEIF(NZ=4) [I1=4; I2=5;] + ELSEIF(NZ<=7) [I1=5; I2=8;] + ELSE [I1=8; I2=10;] + ] + ELSEIF(NY=3) [ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,4)=1) [ + IF(NZ=1) [I1=1; I2=2;] + ELSEIF(NZ=2) [I1=2; I2=3;] + ELSEIF(NZ=3) [I1=3; I2=4;] + ELSEIF(NZ=4) [I1=4; I2=5;] + ELSEIF(NZ<=7) [I1=5; I2=8;] + ELSE [I1=8; I2=10;] + ] + ELSE [ + IF(NZ<=3) [I1=1; I2=4;] + ELSEIF(NZ=4) [I1=4; I2=5;] + ELSEIF(NZ<=8) [I1=5; I2=9;] + ELSE [I1=9; I2=10;] + ] + ] + ELSEIF(NY=4) [ + IF(NZ=1) [I1=1; I2=2;] + ELSEIF(NZ=2) [I1=2; I2=3;] + ELSEIF(NZ=3) [I1=3; I2=4;] + ELSEIF(NZ=4) [I1=4; I2=5;] + ELSEIF(NZ<=7) [I1=5; I2=8;] + ELSE [I1=8; I2=10;] + ] + ELSEIF(NY=5) [ + IF(NZ=1) [I1=2; I2=3;] + ELSEIF(NZ=2) [I1=2; I2=3;] + ELSEIF(NZ=3) [I1=3; I2=4;] + ELSEIF(NZ=4) [I1=4; I2=5;] + ELSEIF(NZ<=6) [I1=5; I2=7;] + ELSE [I1=7; I2=10;] + ] + ELSEIF(NY=6) [ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1) [ + IF(NZ=1) [I1=1; I2=1;] + ELSE[ I1=2; I2=10;] + ] + ELSE [ + IF(NZ<=2) [I1=1; I2=3;] + ELSEIF(NZ=3) [I1=3; I2=4;] + ELSEIF(NZ=4) [I1=4; I2=5;] + ELSEIF(NZ<=6) [I1=5; I2=7;] + ELSE [ I1=7; I2=10;] + ] + ] ] ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=1) [ "Full leaf" @@ -3758,22 +3796,55 @@ IF(LEAFIS~=0) [ ] ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=3) [ "Half Isocenter leaf" - - IF((NY=1|NY=2) & NZ<=3) [I1=1; I2=4;] - ELSEIF((NY=1|NY=2) & (NZ=4|NZ=5)) [I1=4; I2=6;] - ELSEIF(NZ=6) [I1=6; I2=7;] - ELSEIF(NY<=4 & NZ=7) [I1=7; I2=8;] - ELSEIF(NY=1 & NZ>=8) [I1=8; I2=10;] - ELSEIF((NY=2|NY=3|NY=4) & NZ=8) [I1=8; I2=9;] - ELSEIF((NY=2|NY=3|NY=4) & NZ=9) [I1=9; I2=10;] - ELSEIF(NY=3 & NZ=1) [I1=1; I2=2;] - ELSEIF(NY=3 & (NZ=2|NZ=3|NZ=4|NZ=5)) [I1=2; I2=6;] - ELSEIF((NY=4|NY=5) & NZ<=2) [I1=1; I2=3;] - ELSEIF((NY=4|NY=5) & (NZ=3|NZ=4|NZ=5)) [I1=3; I2=6;] - ELSEIF((NY=5|NY=6) & NZ>=7) [I1=7; I2=10;] - ELSEIF(NY=6 & NZ<=4) [I1=1; I2=5;] - ELSEIF(NY=6 & NZ=5) [I1=5; I2=6;] - + IF(NY=1) [ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1) [ + IF(NZ<=8) [I1=1; I2=9;] + ELSE [I1=9; I2=10;] + ] + ELSE [ + IF(NZ<=3) [I1=1; I2=4;] + ELSEIF(NZ<=5) [I1=4; I2=6;] + ELSEIF(NZ=6) [I1=6; I2=7;] + ELSEIF(NZ=7) [I1=7; I2=8;] + ELSE [I1=8; I2=10;] + ] + ] + ELSEIF(NY=2) [ + IF(NZ<=3) [I1=1; I2=4;] + ELSEIF(NZ<=5) [I1=4; I2=6;] + ELSEIF(NZ=6) [I1=6; I2=7;] + ELSEIF(NZ=7) [I1=7; I2=8;] + ELSEIF(NZ=8) [I1=8; I2=9;] + ELSE [I1=9; I2=10;] + ] + ELSEIF(NY=3) [ + IF(NZ=1) [I1=1; I2=2;] + ELSEIF(NZ<=5) [I1=2; I2=6;] + ELSEIF(NZ=6) [I1=6; I2=7;] + ELSEIF(NZ=7) [I1=7; I2=8;] + ELSEIF(NZ=8) [I1=8; I2=9;] + ELSE [I1=9; I2=10;] + ] + ELSEIF(NY=4) [ + IF(NZ<=2) [I1=1; I2=3;] + ELSEIF(NZ<=5) [I1=3; I2=6;] + ELSEIF(NZ=6) [I1=6; I2=7;] + ELSEIF(NZ=7) [I1=7; I2=8;] + ELSEIF(NZ=8) [I1=8; I2=9;] + ELSE [I1=9; I2=10;] + ] + ELSEIF(NY=5) [ + IF(NZ<=2) [I1=1; I2=3;] + ELSEIF(NZ<=5) [I1=3; I2=6;] + ELSEIF(NZ=6) [I1=6; I2=7;] + ELSE [I1=7; I2=10;] + ] + ELSEIF(NY=6) [ + IF(NZ<=4) [I1=1; I2=5;] + ELSEIF(NZ=5) [I1=5; I2=6;] + ELSEIF(NZ=6) [I1=6; I2=7;] + ELSE [I1=7; I2=10;] + ] ] ELSE [ "Quarter Isocenter leaf" diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran index fadb53e88..2a865de4f 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran @@ -182,6 +182,11 @@ REPLACE {$MAXFIELDLEAF} WITH {{COMPUTE $MAXLEAF*$MAXFIELD_$SYNCHDMLC}} "I> when doing range rejection "V> for particles in the leaves and beyond the most open "V> leaf. 0 (default) otherwise. +"V>I_LEAF_ALT_DEF_$SYNCHDMLC An array of flags indicating whether a sector +"V> of a given leaf cross-section has an alternative +"V> definition to that specified in the BEAMnrc Manual" +"V> indexing: LEAFTYPE, 1 (Y bound) or 2 (Z bound), +"V> boundary no. ; REPLACE{;COMIN/CM_$SYNCHDMLC/;} WITH { ;COMMON/CM_$SYNCHDMLC/ @@ -206,6 +211,7 @@ REPLACE{;COMIN/CM_$SYNCHDMLC/;} WITH { IR_$SYNCHDMLC,NUM_LEAF_$SYNCHDMLC, ORIENT_$SYNCHDMLC, SUBINDEX_$SYNCHDMLC,NGROUP_$SYNCHDMLC, LEAFTYPE_$SYNCHDMLC, + I_LEAF_ALT_DEF_$SYNCHDMLC, TITLE_$SYNCHDMLC; DOUBLE PRECISION ZMAX_$SYNCHDMLC, @@ -230,7 +236,8 @@ REPLACE{;COMIN/CM_$SYNCHDMLC/;} WITH { N_GAP_$SYNCHDMLC,IR_$SYNCHDMLC,NUM_LEAF_$SYNCHDMLC($MAXLEAF), ORIENT_$SYNCHDMLC,SUBINDEX_$SYNCHDMLC($MAXLEAF,5,6,9), NGROUP_$SYNCHDMLC, - LEAFTYPE_$SYNCHDMLC($MAXLEAF); + LEAFTYPE_$SYNCHDMLC($MAXLEAF), + I_LEAF_ALT_DEF_$SYNCHDMLC(5,2,10); CHARACTER*1 TITLE_$SYNCHDMLC(60); } @@ -685,20 +692,63 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ "Target leaf" - IF((NY=1|NY=2) & NZ<=3) [ZLHS=1; ZRHS=4;] - ELSEIF(NY=1 & NZ=5) [ZLHS=5; ZRHS=6;] - ELSEIF(NY=1 & NZ>=6) [ZLHS=6; ZRHS=10;] - ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] - ELSEIF((NY=2|NY=3) & NZ>=8) [ZLHS=8; ZRHS=10;] - ELSEIF((NY=3|NY=4|NY=5) & NZ=1) [ZLHS=1; ZRHS=2;] - ELSEIF((NY=3|NY=4|NY=5) & NZ=2) [ZLHS=2; ZRHS=3;] - ELSEIF(NY>=3 & NZ=3) [ZLHS=3; ZRHS=4;] - ELSEIF((NY=2|NY=3) & (NZ=5|NZ=6|NZ=7)) [ZLHS=5; ZRHS=8;] - ELSEIF(NY=4 & (NZ=5|NZ=6|NZ=7|NZ=8)) [ZLHS=5; ZRHS=9;] - ELSEIF(NY=4 & NZ=9) [ZLHS=9; ZRHS=10;] - ELSEIF((NY=5|NY=6) & (NZ=5|NZ=6)) [ZLHS=5; ZRHS=7;] - ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] - ELSEIF(NY=6 & NZ<=2) [ZLHS=1; ZRHS=3;] + IF(NY=1) [ + IF(NZ<=3) [ZLHS=1; ZRHS=4;] + ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] + ELSEIF(NZ=5) [ZLHS=5; ZRHS=6;] + ELSE [ZLHS=6; ZRHS=10;] + ] + ELSEIF(NY=2) [ + IF(NZ<=3) [ZLHS=1; ZRHS=4;] + ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] + ELSEIF(NZ<=7) [ZLHS=5; ZRHS=8;] + ELSE [ZLHS=8; ZRHS=10;] + ] + ELSEIF(NY=3) [ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,4)=1) [ + IF(NZ=1) [ZLHS=1; ZRHS=2;] + ELSEIF(NZ=2) [ZLHS=2; ZRHS=3;] + ELSEIF(NZ=3) [ZLHS=3; ZRHS=4;] + ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] + ELSEIF(NZ<=7) [ZLHS=5; ZRHS=8;] + ELSE [ZLHS=8; ZRHS=10;] + ] + ELSE [ + IF(NZ<=3) [ZLHS=1; ZRHS=4;] + ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] + ELSEIF(NZ<=8) [ZLHS=5; ZRHS=9;] + ELSE [ZLHS=9; ZRHS=10;] + ] + ] + ELSEIF(NY=4) [ + IF(NZ=1) [ZLHS=1; ZRHS=2;] + ELSEIF(NZ=2) [ZLHS=2; ZRHS=3;] + ELSEIF(NZ=3) [ZLHS=3; ZRHS=4;] + ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] + ELSEIF(NZ<=7) [ZLHS=5; ZRHS=8;] + ELSE [ZLHS=8; ZRHS=10;] + ] + ELSEIF(NY=5) [ + IF(NZ=1) [ZLHS=2; ZRHS=3;] + ELSEIF(NZ=2) [ZLHS=2; ZRHS=3;] + ELSEIF(NZ=3) [ZLHS=3; ZRHS=4;] + ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] + ELSEIF(NZ<=6) [ZLHS=5; ZRHS=7;] + ELSE [ZLHS=7; ZRHS=10;] + ] + ELSEIF(NY=6) [ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1) [ + IF(NZ=1) [ZLHS=1; ZRHS=1;] + ELSE[ ZLHS=2; ZRHS=10;] + ] + ELSE [ + IF(NZ<=2) [ZLHS=1; ZRHS=3;] + ELSEIF(NZ=3) [ZLHS=3; ZRHS=4;] + ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] + ELSEIF(NZ<=6) [ZLHS=5; ZRHS=7;] + ELSE [ ZLHS=7; ZRHS=10;] + ] + ] ] ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=1) ["Full leaf" @@ -720,21 +770,55 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" ] ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=3) [ "Half Isocenter leaf" - - IF((NY=1|NY=2) & NZ<=3) [ZLHS=1; ZRHS=4;] - ELSEIF((NY=1|NY=2) & (NZ=4|NZ=5)) [ZLHS=4; ZRHS=6;] - ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] - ELSEIF(NY<=4 & NZ=7) [ZLHS=7; ZRHS=8;] - ELSEIF(NY=1 & NZ>=8) [ZLHS=8; ZRHS=10;] - ELSEIF((NY=2|NY=3|NY=4) & NZ=8) [ZLHS=8; ZRHS=9;] - ELSEIF((NY=2|NY=3|NY=4) & NZ=9) [ZLHS=9; ZRHS=10;] - ELSEIF(NY=3 & NZ=1) [ZLHS=1; ZRHS=2;] - ELSEIF(NY=3 & (NZ=2|NZ=3|NZ=4|NZ=5)) [ZLHS=2; ZRHS=6;] - ELSEIF((NY=4|NY=5) & NZ<=2) [ZLHS=1; ZRHS=3;] - ELSEIF((NY=4|NY=5) & (NZ=3|NZ=4|NZ=5)) [ZLHS=3; ZRHS=6;] - ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] - ELSEIF(NY=6 & NZ<=4) [ZLHS=1; ZRHS=5;] - ELSEIF(NY=6 & NZ=5) [ZLHS=5; ZRHS=6;] + IF(NY=1) [ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1) [ + IF(NZ<=8) [ZLHS=1; ZRHS=9;] + ELSE [ZLHS=9; ZRHS=10;] + ] + ELSE [ + IF(NZ<=3) [ZLHS=1; ZRHS=4;] + ELSEIF(NZ<=5) [ZLHS=4; ZRHS=6;] + ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] + ELSEIF(NZ=7) [ZLHS=7; ZRHS=8;] + ELSE [ZLHS=8; ZRHS=10;] + ] + ] + ELSEIF(NY=2) [ + IF(NZ<=3) [ZLHS=1; ZRHS=4;] + ELSEIF(NZ<=5) [ZLHS=4; ZRHS=6;] + ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] + ELSEIF(NZ=7) [ZLHS=7; ZRHS=8;] + ELSEIF(NZ=8) [ZLHS=8; ZRHS=9;] + ELSE [ZLHS=9; ZRHS=10;] + ] + ELSEIF(NY=3) [ + IF(NZ=1) [ZLHS=1; ZRHS=2;] + ELSEIF(NZ<=5) [ZLHS=2; ZRHS=6;] + ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] + ELSEIF(NZ=7) [ZLHS=7; ZRHS=8;] + ELSEIF(NZ=8) [ZLHS=8; ZRHS=9;] + ELSE [ZLHS=9; ZRHS=10;] + ] + ELSEIF(NY=4) [ + IF(NZ<=2) [ZLHS=1; ZRHS=3;] + ELSEIF(NZ<=5) [ZLHS=3; ZRHS=6;] + ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] + ELSEIF(NZ=7) [ZLHS=7; ZRHS=8;] + ELSEIF(NZ=8) [ZLHS=8; ZRHS=9;] + ELSE [ZLHS=9; ZRHS=10;] + ] + ELSEIF(NY=5) [ + IF(NZ<=2) [ZLHS=1; ZRHS=3;] + ELSEIF(NZ<=5) [ZLHS=3; ZRHS=6;] + ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] + ELSE [ZLHS=7; ZRHS=10;] + ] + ELSEIF(NY=6) [ + IF(NZ<=4) [ZLHS=1; ZRHS=5;] + ELSEIF(NZ=5) [ZLHS=5; ZRHS=6;] + ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] + ELSE [ZLHS=7; ZRHS=10;] + ] ] ELSE [ "Quarter Isocenter leaf" @@ -768,51 +852,127 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" ELSE [ ZDIST = 1.0E20; ]; IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ "Target leaf" - IF(NZ=1 & NY<=5) [ + IF(NZ=1) [ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1) [ + LHS=1; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ELSE [ + IF(NY<=5) [ + LHS=1; J=LEAFIS; + RHS=6; I=LEAFIS; + ] + ELSE [ + LHS=6; J=LEAFIS; + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] + ELSE [RHS=3; I=LEAFIS+1;] + ] + ] + ] + ELSEIF(NZ=2) [ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,4)=1) [ + IF(NY<=2) [ + LHS=1; J=LEAFIS; + RHS=3; I=LEAFIS; + ] + ELSE[ + LHS=3; J=LEAFIS; + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] + ELSE [RHS=3; I=LEAFIS+1;] + ] + ] + ELSE[ + IF(NY<=3) [ + LHS=1; J=LEAFIS; + RHS=4; I=LEAFIS; + ] + ELSE[ + LHS=4; J=LEAFIS; + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] + ELSE [RHS=3; I=LEAFIS+1;] + ] + ] + ] + ELSEIF(NZ=3)[ LHS=1; J=LEAFIS; - RHS=6; I=LEAFIS; - ] ELSEIF(NZ=1 & NY=6) [ - LHS=6; J=LEAFIS; - IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] - ELSE [RHS=3; I=LEAFIS+1;] - ] ELSEIF(NZ=2 & NY<=2) [ - LHS=1; J=LEAFIS; - RHS=3; I=LEAFIS; - ] ELSEIF(NZ=2 & NY>=3) [ - LHS=3; J=LEAFIS; - IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] - ELSE [RHS=3; I=LEAFIS+1;] - ] ELSEIF(NZ=3|NZ=4|NZ=5) [ - LHS=1; J=LEAFIS; - RHS=7; I=LEAFIS; - ] ELSEIF(NY=1 & (NZ=6|NZ=7)) [ - IF(LEAFIS=1) [LHS=1; J=LEAFIS;] - ELSE [LHS=7; J=LEAFIS-1;] - RHS=2; I=LEAFIS; - ] ELSEIF(NY>=2 & NZ=6) [ - LHS=2; J=LEAFIS; RHS=7; I=LEAFIS; - ] ELSEIF(NZ=7 & (NY=2|NY=3|NY=4)) [ - LHS=2; J=LEAFIS; - RHS=5; I=LEAFIS; - ] ELSEIF((NZ=7|NZ=8) & NY>=5) [ - LHS=5; J=LEAFIS; - IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] - ELSE [RHS=1; I=LEAFIS+1;] - ] ELSEIF(NZ=8 & NY<=3) [ - IF(LEAFIS=1) [LHS=1; J=LEAFIS;] - ELSE [LHS=7; J=LEAFIS-1;] - RHS=4; I=LEAFIS; - ] ELSEIF(NZ=8 & NY=4) [ - LHS=4; J=LEAFIS; - RHS=5; I=LEAFIS; - ] ELSEIF(NZ=9) [ + ] + ELSEIF(NZ=4)[ + LHS=1; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ELSEIF(NZ=5)[ + LHS=1; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ELSEIF(NZ=6)[ + IF(NY=1)[ + IF(LEAFIS=1) [LHS=1; J=LEAFIS;] + ELSE [LHS=7; J=LEAFIS-1;] + RHS=2; I=LEAFIS; + ] + ELSE[ + LHS=2; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ] + ELSEIF(NZ=7)[ + IF(NY=1)[ + IF(LEAFIS=1) [LHS=1; J=LEAFIS;] + ELSE [LHS=7; J=LEAFIS-1;] + RHS=2; I=LEAFIS; + ] + ELSEIF(NY<=4)[ + LHS=2; J=LEAFIS; + RHS=5; I=LEAFIS; + ] + ELSE[ + LHS=5; J=LEAFIS; + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] + ELSE [RHS=1; I=LEAFIS+1;] + ] + ] + ELSEIF(NZ=8)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,4)=1) [ + IF(NY<=3)[ + IF(LEAFIS=1) [LHS=1; J=LEAFIS;] + ELSE [LHS=7; J=LEAFIS-1;] + RHS=4; I=LEAFIS; + ] + ELSEIF(NY=4)[ + LHS=4; J=LEAFIS; + RHS=5; I=LEAFIS; + ] + ELSE[ + LHS=5; J=LEAFIS; + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] + ELSE [RHS=1; I=LEAFIS+1;] + ] + ] + ELSE[ + IF(NY<=2)[ + IF(LEAFIS=1) [LHS=1; J=LEAFIS;] + ELSE [LHS=7; J=LEAFIS-1;] + RHS=4; I=LEAFIS; + ] + ELSEIF(NY<=4)[ + LHS=4; J=LEAFIS; + RHS=5; I=LEAFIS; + ] + ELSE[ + LHS=5; J=LEAFIS; + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] + ELSE [RHS=1; I=LEAFIS+1;] + ] + ] + ] + ELSEIF(NZ=9)[ IF(LEAFIS=1) [LHS=1; J=LEAFIS;] ELSE [LHS=7; J=LEAFIS-1;] IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] ELSE [RHS=1; I=LEAFIS+1;] - ] - ] + ] + ] ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=1) ["full leaf" IF(NZ=1) [IF(LEAFIS=1) [LHS=1; J=LEAFIS;] ELSE [LHS=6; J=LEAFIS-1;] @@ -866,44 +1026,146 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" ELSE [LHS=7; J=LEAFIS-1;] IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] ELSE [RHS=1; I=LEAFIS+1;] - ] ELSEIF((NZ=2|NZ=3) & (NY=1|NY=2)) [ - IF(LEAFIS=1) [LHS=1; J=LEAFIS;] - ELSE [LHS=7; J=LEAFIS-1;] - RHS=3; I=LEAFIS; - ] ELSEIF(NZ=2 & NY=3) [ - LHS=3; J=LEAFIS; - RHS=4; I=LEAFIS; - ] ELSEIF(NZ=2 & NY>=4) [ - LHS=4; J=LEAFIS; - IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] - ELSE [RHS=1; I=LEAFIS+1;] - ] ELSEIF(NZ=3 & (NY=3|NY=4|NY=5)) [ - LHS=3; J=LEAFIS; - RHS=6; I=LEAFIS; - ] ELSEIF((NZ=3|NZ=4) & NY=6) [ - LHS=6; J=LEAFIS; - IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] - ELSE [RHS=1; I=LEAFIS+1;] - ] ELSEIF(NZ=4 & NY<=5) [ - LHS=1; J=LEAFIS; - RHS=6; I=LEAFIS; - ] ELSEIF(NZ=5|NZ=6|NZ=7) [ - LHS=1; J=LEAFIS; - RHS=7; I=LEAFIS; - ] ELSEIF(NZ=8 & NY<=4) [ - IF(LEAFIS=1) [LHS=1; J=LEAFIS;] - ELSE [LHS=5; J=LEAFIS-1;] - RHS=5; I=LEAFIS; - ] ELSEIF(NZ=8 & NY>=5) [ - LHS=5; J=LEAFIS; - RHS=7; I=LEAFIS; - ] ELSEIF(NZ=9 & NY=1) [ - IF(LEAFIS=1) [LHS=1; J=LEAFIS;] - ELSE [LHS=5; J=LEAFIS-1;] - RHS=2; I=LEAFIS; - ] ELSEIF(NZ=9 & NY>=2) [ - LHS=2; J=LEAFIS; - RHS=7; I=LEAFIS; + ] + ELSEIF(NZ=2)[ + IF(NY<=2)[ + IF(LEAFIS=1) [ LHS=1; J=LEAFIS;] + ELSE [LHS=7; J=LEAFIS-1;] + RHS=3; I=LEAFIS; + ] + IF(NY=3)[ + LHS=3; J=LEAFIS; + RHS=4; I=LEAFIS; + ] + ELSE[ + LHS=4; J=LEAFIS; + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] + ELSE [RHS=1; I=LEAFIS+1;] + ] + ] + ELSEIF(NZ=3)[ + IF(NY<=2)[ + IF(LEAFIS=1) [ LHS=1; J=LEAFIS;] + ELSE [LHS=7; J=LEAFIS-1;] + RHS=3; I=LEAFIS; + ] + IF(NY<=5)[ + LHS=3; J=LEAFIS; + RHS=6; I=LEAFIS; + ] + ELSE[ + LHS=6; J=LEAFIS; + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] + ELSE [RHS=1; I=LEAFIS+1;] + ] + ] + ELSEIF(NZ=4)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1) [ + IF(NY=1)[ + IF(LEAFIS=1) [ LHS=1; J=LEAFIS;] + ELSE [LHS=7; J=LEAFIS-1;] + RHS=2; I=LEAFIS; + ] + ELSEIF(NY<=5)[ + LHS=2; J=LEAFIS; + RHS=6; I=LEAFIS; + ] + ELSE[ + LHS=6; J=LEAFIS; + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] + ELSE [RHS=1; I=LEAFIS+1;] + ] + ] + ELSE[ + IF(NY<=5)[ + LHS=1; J=LEAFIS; + RHS=6; I=LEAFIS; + ] + ELSE[ + LHS=6; J=LEAFIS; + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] + ELSE [RHS=1; I=LEAFIS+1;] + ] + ] + ] + ELSEIF(NZ=5)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1) [ + IF(NY=1)[ + IF(LEAFIS=1) [ LHS=1; J=LEAFIS;] + ELSE [LHS=7; J=LEAFIS-1;] + RHS=2; I=LEAFIS; + ] + ELSE[ + LHS=2; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ] + ELSE[ + LHS=2; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ] + ELSEIF(NZ=6)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1) [ + IF(NY=1)[ + IF(LEAFIS=1) [ LHS=1; J=LEAFIS;] + ELSE [LHS=7; J=LEAFIS-1;] + RHS=2; I=LEAFIS; + ] + ELSE[ + LHS=2; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ] + ELSE[ + LHS=2; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ] + ELSEIF(NZ=7)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1) [ + IF(NY=1)[ + IF(LEAFIS=1) [ LHS=1; J=LEAFIS;] + ELSE [LHS=7; J=LEAFIS-1;] + RHS=2; I=LEAFIS; + ] + ELSE[ + LHS=2; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ] + ELSE[ + LHS=2; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ] + ELSEIF(NZ=8)[ + IF(NY<=4)[ + IF(LEAFIS=1) [LHS=1; J=LEAFIS;] + ELSE [LHS=5; J=LEAFIS-1;] + RHS=5; I=LEAFIS; + ] + ELSE[ + LHS=5; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ] + ELSEIF(NZ=9)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1) [ + LHS=1; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ELSE[ + IF(NY=1)[ + IF(LEAFIS=1) [LHS=1; J=LEAFIS;] + ELSE [LHS=5; J=LEAFIS-1;] + RHS=2; I=LEAFIS; + ] + ELSE[ + LHS=2; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ] ] ] ELSE [ "Isocenter Quarter" diff --git a/HEN_HOUSE/omega/progs/gui/beamnrc/synchdmlc.tcl b/HEN_HOUSE/omega/progs/gui/beamnrc/synchdmlc.tcl index 69ea67cae..fd9b88ab2 100644 --- a/HEN_HOUSE/omega/progs/gui/beamnrc/synchdmlc.tcl +++ b/HEN_HOUSE/omega/progs/gui/beamnrc/synchdmlc.tcl @@ -296,9 +296,9 @@ proc edit_SYNCHDMLC { id zmax } { set top .synchdmlc$id.top - label $top.mainlabel -text "Multi-leaf collimator $cm_ident($id)" \ - -font $helvfont - pack $top.mainlabel -side top -padx 10 + #label $top.mainlabel -text "Multi-leaf collimator $cm_ident($id)" \ +# -font $helvfont + # pack $top.mainlabel -side top -padx 10 # SYNCHDMLC_macros.mortran:REPLACE {$MAXLEAF} WITH {64} # read the macro file for CM SYNCHDMLC to get defaults and put a label on the @@ -330,9 +330,9 @@ proc edit_SYNCHDMLC { id zmax } { tk_dialog .nope "Too bad" "Couldn't get the defaults" info 0 OK } - label $top.default1 -text "The default maximum number\ - of leaves is $default1." -font $helvfont - pack $top.default1 -side top + # label $top.default1 -text "The default maximum number\ +# of leaves is $default1." -font $helvfont + # pack $top.default1 -side top label $top.zmax -text $zmax -font $helvfont pack $top.zmax -pady 5 @@ -481,11 +481,11 @@ proc edit_SYNCHDMLC { id zmax } { pack $top.openings.label $top.openings.inps -side top pack $top.openings -side top -fill x - pack $top -side top -pady 5 + pack $top -side top -pady 0 #now get ecut,pcut,materials,etc - frame .synchdmlc$id.bottom -bd 4 + frame .synchdmlc$id.bottom -bd 0 frame .synchdmlc$id.bottom.ecut button .synchdmlc$id.bottom.ecut.b -text "?" -command \ @@ -597,7 +597,7 @@ proc edit_SYNCHDMLC { id zmax } { pack .synchdmlc$id.bottom -side top -pady 5 - frame .synchdmlc$id.buts -bd 4 + frame .synchdmlc$id.buts -bd 1 button .synchdmlc$id.buts.okb -text "OK" -command "destroy .synchdmlc$id"\ -relief groove -bd 8 button .synchdmlc$id.buts.helpb -text "Help" -command\ @@ -2315,7 +2315,7 @@ proc draw_SYNCHDMLC { id } { # put the canvas up set ncan 3 - set width 200.0 + set width 150.0 set canwidth [expr $width+150.0] set scrlheight [expr 2*$canwidth] set scrlwidth [expr 2*$canwidth] From 32710544574e9a53f7373b560fd4adb1fc7f8824 Mon Sep 17 00:00:00 2001 From: Blake Walters Date: Mon, 13 Sep 2021 10:12:22 -0700 Subject: [PATCH 02/14] Address input override bugs for M120 Millenium MLC --- .../omega/beamnrc/CMs/SYNCHDMLC_cm.mortran | 39 ++- .../beamnrc/CMs/SYNCHDMLC_macros.mortran | 233 +++++++++--------- 2 files changed, 145 insertions(+), 127 deletions(-) diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran index 0b33392d6..ae59bacfe 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran @@ -712,7 +712,7 @@ REPLACE {$GEO_SHIFT_1_(#)} WITH { } ;IMPLICIT NONE; -;COMIN/CMs,CM_$SYNCHDMLC,EPCONT,STACK,USER,EGS-IO/; +;COMIN/MISC,SCORE,CMs,CM_$SYNCHDMLC,EPCONT,STACK,USER,EGS-IO/; "T> "T>********************************** "T>TYPE DECLARATIONS FOR HOWFAR_$SYNCHDMLC @@ -764,6 +764,13 @@ IF(ORIENT_$SYNCHDMLC=1) [ ELSE[ XYL(1)=X(NP); XYL(2)=Y(NP);UVL(1)=U(NP);UVL(2)=V(NP);] ; +"IF(Z(NP)>47.62001 & Z(NP)<54.37999)[" + "IF(med(irl) = 0)[" + " write(*,*)' iq,x,y,z ',iq(np),x(np),y(np),z(np);" + " write(*,*)' ir,med ',ir(np),med(irl);" + " write(*,*)' ihstry ',ihstry;" + " ]" + " ]" STEP_UNIT=0.0; COUNT = 0; OUTOFCMFLAG=0; @@ -968,6 +975,10 @@ ELSEIF( (STEP_UNIT>DIST1) & (DIST1>=0)) [ ] IRNEW = NEWREGION_$SYNCHDMLC; + "Holy assumption: If there is no airgap between leaves, we could" + "have the situation where we do not transport as far as the new" + "region but the region no. is changed anyway" + "Consider using the _FIND macro to get the reg. no. anyway" RETURN; ] ELSE [ $SYNCHDMLC_MINDISTANCE(DIST2); @@ -2439,8 +2450,16 @@ IF(TOT_LEAF_$SYNCHDMLC>0) [ WTONGUE_$SYNCHDMLC(2); ] ELSEIF(LEAFTYPE_$SYNCHDMLC(I)=3)["half isocenter leaf" - YREG_$SYNCHDMLC(I,1)=YREG_$SYNCHDMLC(I-1,7)+LEAFGAP_$SYNCHDMLC- + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1)[ + "here we are saying that leaf gap is defined wrt tongue/groove" + YREG_$SYNCHDMLC(I,1)=YREG_$SYNCHDMLC(I-1,7)+LEAFGAP_$SYNCHDMLC- + WTONGUE_$SYNCHDMLC(3)- + ABS(WRAILBOT_$SYNCHDMLC(3)-WRAILTOP_$SYNCHDMLC(3)); + ] + ELSE[ + YREG_$SYNCHDMLC(I,1)=YREG_$SYNCHDMLC(I-1,7)+LEAFGAP_$SYNCHDMLC- WTONGUE_$SYNCHDMLC(3); + ] ] ELSEIF(LEAFTYPE_$SYNCHDMLC(I)=4)["qtr target leaf" YREG_$SYNCHDMLC(I,1)=YREG_$SYNCHDMLC(I-1,7)+LEAFGAP_$SYNCHDMLC- @@ -2486,7 +2505,12 @@ IF(TOT_LEAF_$SYNCHDMLC>0) [ ELSEIF(LEAFTYPE_$SYNCHDMLC(I)=3)["half isocenter leaf" YREG_$SYNCHDMLC(I,2)=YREG_$SYNCHDMLC(I,1)+ABS(WRAILTOP_$SYNCHDMLC(3)- WRAILBOT_$SYNCHDMLC(3)); - YREG_$SYNCHDMLC(I,3)=YREG_$SYNCHDMLC(I,1)+WTONGUE_$SYNCHDMLC(3); + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1)[ + YREG_$SYNCHDMLC(I,3)=YREG_$SYNCHDMLC(I,2)+WTONGUE_$SYNCHDMLC(3); + ] + ELSE[ + YREG_$SYNCHDMLC(I,3)=YREG_$SYNCHDMLC(I,1)+WTONGUE_$SYNCHDMLC(3); + ] YREG_$SYNCHDMLC(I,4)=YREG_$SYNCHDMLC(I,3)+WTIP_$SYNCHDMLC(3); IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1)[ YREG_$SYNCHDMLC(I,5)=YREG_$SYNCHDMLC(I,1)+WRAILBOT_$SYNCHDMLC(3); @@ -2552,8 +2576,8 @@ IF(TOT_LEAF_$SYNCHDMLC>0) [ DO J = 1, 7 [ SURPARA1_$SYNCHDMLC(I,J)=YREG_$SYNCHDMLC(I,J)/TEMP1; - OUTPUT I, J, YREG_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" - OUTPUT I, J, SURPARA1_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" + "OUTPUT I, J, YREG_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" + " OUTPUT I, J, SURPARA1_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" ];"End of J Loop" ]; "End of K Loop" ]; "End of L loop" @@ -3717,7 +3741,7 @@ IF(LEAFIS~=0) [ "Set minimum and maximum Z boundaries" IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ "Quarter or Half Target leaf" - "Deal with each NY case" + IF(NY=1) [ IF(NZ<=3) [I1=1; I2=4;] ELSEIF(NZ=4) [I1=4; I2=5;] @@ -3764,7 +3788,7 @@ IF(LEAFIS~=0) [ ] ELSEIF(NY=6) [ IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1) [ - IF(NZ=1) [I1=1; I2=1;] + IF(NZ=1) [I1=1; I2=2;] ELSE[ I1=2; I2=10;] ] ELSE [ @@ -3775,6 +3799,7 @@ IF(LEAFIS~=0) [ ELSE [ I1=7; I2=10;] ] ] + ] ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=1) [ "Full leaf" diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran index 2a865de4f..b4a6b67df 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran @@ -521,7 +521,9 @@ ELSE ["inside leaf bank" IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ "Originally on Target (Quarter or Half) Leaf" - IF((NY=5|NY=6) & (NZ=7|NZ=8|NZ=9) & (LEAFIS~=TOT_LEAF_$SYNCHDMLC)) [ + IF(LEAFIS~=TOT_LEAF_$SYNCHDMLC & (((NY=5|NY=6) & (NZ=7|NZ=8|NZ=9)) | + (I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1 & + NY=6 & NZ>1))) [ "In groove check if on next leaf" IF(XYFL(1)>SURPARA1_$SYNCHDMLC(LEAFIS+1,1)* @@ -628,7 +630,32 @@ ELSE ["inside leaf bank" ]; ] ]; - ]; + ] + ELSEIF(LEAFIS ~=1 & + I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,1)=1 & + NY=1 & NZ<9)[ + "check if particle is in region of previous leaf" + IF(XYFL(1)ZREG_$SYNCHDMLC(LEAFIS,10))[ + NZ=9; + ] ELSE[ + DO I=1,9 ["recheck Z region" + IF((ZFL>=ZREG_$SYNCHDMLC(LEAFIS,I)) & + (ZREG_$SYNCHDMLC(LEAFIS,I+1)>=ZFL)) [NZ=I; EXIT]; + ]; + ] + ] + ] ]; "Now determine X region index" IF(ENDTYPE_$SYNCHDMLC=1)[ @@ -689,65 +716,32 @@ ELSE ["inside leaf bank" "{P1}: The change value for ir region #" REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" + "Note: some of these will underestimate dZ when input dimension" + "restrictions are overridden--this should not result in transport" + "errors, but will potentially slow transport" IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ - "Target leaf" + "Target leaf" - IF(NY=1) [ - IF(NZ<=3) [ZLHS=1; ZRHS=4;] - ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] - ELSEIF(NZ=5) [ZLHS=5; ZRHS=6;] - ELSE [ZLHS=6; ZRHS=10;] - ] - ELSEIF(NY=2) [ - IF(NZ<=3) [ZLHS=1; ZRHS=4;] - ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] - ELSEIF(NZ<=7) [ZLHS=5; ZRHS=8;] - ELSE [ZLHS=8; ZRHS=10;] - ] - ELSEIF(NY=3) [ - IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,4)=1) [ - IF(NZ=1) [ZLHS=1; ZRHS=2;] - ELSEIF(NZ=2) [ZLHS=2; ZRHS=3;] - ELSEIF(NZ=3) [ZLHS=3; ZRHS=4;] - ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] - ELSEIF(NZ<=7) [ZLHS=5; ZRHS=8;] - ELSE [ZLHS=8; ZRHS=10;] - ] - ELSE [ - IF(NZ<=3) [ZLHS=1; ZRHS=4;] - ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] - ELSEIF(NZ<=8) [ZLHS=5; ZRHS=9;] - ELSE [ZLHS=9; ZRHS=10;] - ] - ] - ELSEIF(NY=4) [ - IF(NZ=1) [ZLHS=1; ZRHS=2;] - ELSEIF(NZ=2) [ZLHS=2; ZRHS=3;] - ELSEIF(NZ=3) [ZLHS=3; ZRHS=4;] - ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] - ELSEIF(NZ<=7) [ZLHS=5; ZRHS=8;] - ELSE [ZLHS=8; ZRHS=10;] - ] - ELSEIF(NY=5) [ - IF(NZ=1) [ZLHS=2; ZRHS=3;] - ELSEIF(NZ=2) [ZLHS=2; ZRHS=3;] - ELSEIF(NZ=3) [ZLHS=3; ZRHS=4;] - ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] - ELSEIF(NZ<=6) [ZLHS=5; ZRHS=7;] - ELSE [ZLHS=7; ZRHS=10;] - ] - ELSEIF(NY=6) [ - IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1) [ - IF(NZ=1) [ZLHS=1; ZRHS=1;] - ELSE[ ZLHS=2; ZRHS=10;] - ] - ELSE [ - IF(NZ<=2) [ZLHS=1; ZRHS=3;] - ELSEIF(NZ=3) [ZLHS=3; ZRHS=4;] - ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] - ELSEIF(NZ<=6) [ZLHS=5; ZRHS=7;] - ELSE [ ZLHS=7; ZRHS=10;] - ] + IF((NY=1|NY=2) & NZ<=3) [ZLHS=1; ZRHS=4;] + ELSEIF(NY=1 & NZ=5) [ZLHS=5; ZRHS=6;] + ELSEIF(NY=1 & NZ>=6) [ZLHS=6; ZRHS=10;] + ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] + ELSEIF((NY=2|NY=3) & NZ>=8) [ZLHS=8; ZRHS=10;] + ELSEIF((NY=3|NY=4|NY=5) & NZ=1) [ZLHS=1; ZRHS=2;] + ELSEIF((NY=3|NY=4|NY=5) & NZ=2) [ZLHS=2; ZRHS=3;] + ELSEIF(NY>=3 & NZ=3) [ZLHS=3; ZRHS=4;] + ELSEIF((NY=2|NY=3) & (NZ=5|NZ=6|NZ=7)) [ZLHS=5; ZRHS=8;] + ELSEIF(NY=4 & (NZ=5|NZ=6|NZ=7|NZ=8)) [ZLHS=5; ZRHS=9;] + ELSEIF(NY=4 & NZ=9) [ZLHS=9; ZRHS=10;] + ELSEIF((NY=5|NY=6) & (NZ=5|NZ=6)) [ZLHS=5; ZRHS=7;] + ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] + ELSEIF(NY=6 & NZ<=2) [ + "dZ potentially overestimated--deal with it!" + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1)[ + IF(NZ=1)[ZLHS=1; ZRHS=2;] + ELSE[ZLHS=2; ZRHS=10;] + ] + ELSE[ZLHS=1; ZRHS=3;] ] ] ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=1) ["Full leaf" @@ -770,55 +764,28 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" ] ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=3) [ "Half Isocenter leaf" - IF(NY=1) [ - IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1) [ - IF(NZ<=8) [ZLHS=1; ZRHS=9;] - ELSE [ZLHS=9; ZRHS=10;] - ] - ELSE [ - IF(NZ<=3) [ZLHS=1; ZRHS=4;] - ELSEIF(NZ<=5) [ZLHS=4; ZRHS=6;] - ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] - ELSEIF(NZ=7) [ZLHS=7; ZRHS=8;] - ELSE [ZLHS=8; ZRHS=10;] - ] - ] - ELSEIF(NY=2) [ - IF(NZ<=3) [ZLHS=1; ZRHS=4;] - ELSEIF(NZ<=5) [ZLHS=4; ZRHS=6;] - ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] - ELSEIF(NZ=7) [ZLHS=7; ZRHS=8;] - ELSEIF(NZ=8) [ZLHS=8; ZRHS=9;] - ELSE [ZLHS=9; ZRHS=10;] - ] - ELSEIF(NY=3) [ - IF(NZ=1) [ZLHS=1; ZRHS=2;] - ELSEIF(NZ<=5) [ZLHS=2; ZRHS=6;] - ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] - ELSEIF(NZ=7) [ZLHS=7; ZRHS=8;] - ELSEIF(NZ=8) [ZLHS=8; ZRHS=9;] - ELSE [ZLHS=9; ZRHS=10;] - ] - ELSEIF(NY=4) [ - IF(NZ<=2) [ZLHS=1; ZRHS=3;] - ELSEIF(NZ<=5) [ZLHS=3; ZRHS=6;] - ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] - ELSEIF(NZ=7) [ZLHS=7; ZRHS=8;] - ELSEIF(NZ=8) [ZLHS=8; ZRHS=9;] - ELSE [ZLHS=9; ZRHS=10;] - ] - ELSEIF(NY=5) [ - IF(NZ<=2) [ZLHS=1; ZRHS=3;] - ELSEIF(NZ<=5) [ZLHS=3; ZRHS=6;] - ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] - ELSE [ZLHS=7; ZRHS=10;] - ] - ELSEIF(NY=6) [ - IF(NZ<=4) [ZLHS=1; ZRHS=5;] - ELSEIF(NZ=5) [ZLHS=5; ZRHS=6;] - ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] - ELSE [ZLHS=7; ZRHS=10;] + + IF((NY=1|NY=2) & NZ<=3) [ZLHS=1; ZRHS=4;] + ELSEIF((NY=1|NY=2) & (NZ=4|NZ=5)) [ZLHS=4; ZRHS=6;] + ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] + ELSEIF(NY<=4 & NZ=7) [ZLHS=7; ZRHS=8;] + "potential overestimate of dZ below--correct it" + ELSEIF(NY=1 & NZ>=8) [ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1)[ + IF(NZ=9)[ZLHS=9; ZRHS=10;] + ELSE[ZLHS=1; ZRHS=9;] + ] + ELSE[ZLHS=8; ZRHS=10;] ] + ELSEIF((NY=2|NY=3|NY=4) & NZ=8) [ZLHS=8; ZRHS=9;] + ELSEIF((NY=2|NY=3|NY=4) & NZ=9) [ZLHS=9; ZRHS=10;] + ELSEIF(NY=3 & NZ=1) [ZLHS=1; ZRHS=2;] + ELSEIF(NY=3 & (NZ=2|NZ=3|NZ=4|NZ=5)) [ZLHS=2; ZRHS=6;] + ELSEIF((NY=4|NY=5) & NZ<=2) [ZLHS=1; ZRHS=3;] + ELSEIF((NY=4|NY=5) & (NZ=3|NZ=4|NZ=5)) [ZLHS=3; ZRHS=6;] + ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] + ELSEIF(NY=6 & NZ<=4) [ZLHS=1; ZRHS=5;] + ELSEIF(NY=6 & NZ=5) [ZLHS=5; ZRHS=6;] ] ELSE [ "Quarter Isocenter leaf" @@ -842,7 +809,6 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" "!= from Half Isocenter" ELSEIF(NY=6 & (NZ=4|NZ=5)) [ZLHS=4; ZRHS=6;] ] - IF(W(NP)~=0) [ ZP = (ZREG_$SYNCHDMLC(LEAFIS,ZRHS)-ZFL)/W(NP); ZN = (ZREG_$SYNCHDMLC(LEAFIS,ZLHS)-ZFL)/W(NP); @@ -953,10 +919,10 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" IF(NY<=2)[ IF(LEAFIS=1) [LHS=1; J=LEAFIS;] ELSE [LHS=7; J=LEAFIS-1;] - RHS=4; I=LEAFIS; + RHS=3; I=LEAFIS; ] ELSEIF(NY<=4)[ - LHS=4; J=LEAFIS; + LHS=3; J=LEAFIS; RHS=5; I=LEAFIS; ] ELSE[ @@ -1024,6 +990,7 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" IF(NZ=1) [ IF(LEAFIS=1) [ LHS=1; J=LEAFIS;] ELSE [LHS=7; J=LEAFIS-1;] + "possibly use LHS=6?" IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] ELSE [RHS=1; I=LEAFIS+1;] ] @@ -1046,7 +1013,15 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" ELSEIF(NZ=3)[ IF(NY<=2)[ IF(LEAFIS=1) [ LHS=1; J=LEAFIS;] - ELSE [LHS=7; J=LEAFIS-1;] + ELSE [ + J=LEAFIS-1; + IF(ZFL>ZREG_$SYNCHDMLC(J,7))[ + LHS = 5; + ] + ELSE[ + LHS = 7; + ] + ] RHS=3; I=LEAFIS; ] IF(NY<=5)[ @@ -1056,14 +1031,22 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" ELSE[ LHS=6; J=LEAFIS; IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] - ELSE [RHS=1; I=LEAFIS+1;] + ELSE [ + I=LEAFIS+1; + IF(ZFLZtip(LEAFIS-1) but should be okay" RHS=2; I=LEAFIS; ] ELSE[ From 7e5d0f7597516e75ddcd8585389a56cd3bfa1685 Mon Sep 17 00:00:00 2001 From: Blake Walters Date: Fri, 15 Oct 2021 08:15:29 -0700 Subject: [PATCH 03/14] Fix y boundary for synchdmlc target overrides Restore some code from DYNVMLC that seemed necessary to avoid changing regions when the particle had not actually traveled as far as the region boundary. --- .../omega/beamnrc/CMs/SYNCHDMLC_cm.mortran | 60 ++++++++++--------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran index ae59bacfe..6e882dce3 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran @@ -764,13 +764,6 @@ IF(ORIENT_$SYNCHDMLC=1) [ ELSE[ XYL(1)=X(NP); XYL(2)=Y(NP);UVL(1)=U(NP);UVL(2)=V(NP);] ; -"IF(Z(NP)>47.62001 & Z(NP)<54.37999)[" - "IF(med(irl) = 0)[" - " write(*,*)' iq,x,y,z ',iq(np),x(np),y(np),z(np);" - " write(*,*)' ir,med ',ir(np),med(irl);" - " write(*,*)' ihstry ',ihstry;" - " ]" - " ]" STEP_UNIT=0.0; COUNT = 0; OUTOFCMFLAG=0; @@ -943,7 +936,7 @@ ELSEIF( (STEP_UNIT>DIST1) & (DIST1>=0)) [ DIST1=DIST1+1.0E-5; "we have to shift it regardless to avoid " "infinite loops" "OUTPUT REGION_$SYNCHDMLC;(I3);-prints 67 to 69" - " IF(DIST1>=STEP_UNIT)[EXIT;]" + IF(DIST1>=STEP_UNIT)[EXIT;] " ELSE[" $SYNCHDMLC_FIND(NEWREGION_$SYNCHDMLC,DIST1); @@ -1155,7 +1148,7 @@ $REAL INDEXTMP; "T>temporary input variable for field indices in dynamic and " step-and-shoot simulations $LOGICAL check_full_qtr; -$REAL YTMP; +$REAL YTMP,YLEAFEND; DO I=1,5[ DO J=1,2[ @@ -2436,38 +2429,44 @@ I=0; IF(TOT_LEAF_$SYNCHDMLC>0) [ DO L = 1,NGROUP_$SYNCHDMLC[ DO K = 1,NUM_LEAF_$SYNCHDMLC(L) [ - I=I+1; IF(I=1)[ YREG_$SYNCHDMLC(I,1)=START_$SYNCHDMLC; ] - ELSEIF(LEAFTYPE_$SYNCHDMLC(I)=1)[ - YREG_$SYNCHDMLC(I,1)=YREG_$SYNCHDMLC(I-1,7)+LEAFGAP_$SYNCHDMLC- + ELSE[ + YLEAFEND=YREG_$SYNCHDMLC(I-1,7); + "possible exceptions" + IF(LEAFTYPE_$SYNCHDMLC(I-1)=2 & I_LEAF_ALT_DEF_$SYNCHDMLC(2,1,6)=1)[ + YLEAFEND=YREG_$SYNCHDMLC(I-1,6); + ] + IF(LEAFTYPE_$SYNCHDMLC(I)=1)[ + YREG_$SYNCHDMLC(I,1)=YLEAFEND+LEAFGAP_$SYNCHDMLC- WTONGUE_$SYNCHDMLC(1); - ] - ELSEIF(LEAFTYPE_$SYNCHDMLC(I)=2)["half target leaf" - YREG_$SYNCHDMLC(I,1)=YREG_$SYNCHDMLC(I-1,7)+LEAFGAP_$SYNCHDMLC- + ] + ELSEIF(LEAFTYPE_$SYNCHDMLC(I)=2)["half target leaf" + YREG_$SYNCHDMLC(I,1)=YLEAFEND+LEAFGAP_$SYNCHDMLC- WTONGUE_$SYNCHDMLC(2); - ] - ELSEIF(LEAFTYPE_$SYNCHDMLC(I)=3)["half isocenter leaf" + ] + ELSEIF(LEAFTYPE_$SYNCHDMLC(I)=3)["half isocenter leaf" IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1)[ "here we are saying that leaf gap is defined wrt tongue/groove" - YREG_$SYNCHDMLC(I,1)=YREG_$SYNCHDMLC(I-1,7)+LEAFGAP_$SYNCHDMLC- + YREG_$SYNCHDMLC(I,1)=YLEAFEND+LEAFGAP_$SYNCHDMLC- WTONGUE_$SYNCHDMLC(3)- ABS(WRAILBOT_$SYNCHDMLC(3)-WRAILTOP_$SYNCHDMLC(3)); ] ELSE[ - YREG_$SYNCHDMLC(I,1)=YREG_$SYNCHDMLC(I-1,7)+LEAFGAP_$SYNCHDMLC- + YREG_$SYNCHDMLC(I,1)=YLEAFEND+LEAFGAP_$SYNCHDMLC- WTONGUE_$SYNCHDMLC(3); ] - ] - ELSEIF(LEAFTYPE_$SYNCHDMLC(I)=4)["qtr target leaf" - YREG_$SYNCHDMLC(I,1)=YREG_$SYNCHDMLC(I-1,7)+LEAFGAP_$SYNCHDMLC- + ] + ELSEIF(LEAFTYPE_$SYNCHDMLC(I)=4)["qtr target leaf" + YREG_$SYNCHDMLC(I,1)=YLEAFEND+LEAFGAP_$SYNCHDMLC- WTONGUE_$SYNCHDMLC(4); - ] - ELSE ["qtr iso leaf" - YREG_$SYNCHDMLC(I,1)=YREG_$SYNCHDMLC(I-1,7)+LEAFGAP_$SYNCHDMLC- + ] + ELSE ["qtr iso leaf" + YREG_$SYNCHDMLC(I,1)=YLEAFEND+LEAFGAP_$SYNCHDMLC- WTONGUE_$SYNCHDMLC(5); + ] ] "we have now defined YREG_$SYNCHDMLC(I,1)" @@ -2483,9 +2482,16 @@ IF(TOT_LEAF_$SYNCHDMLC>0) [ ] ELSEIF(LEAFTYPE_$SYNCHDMLC(I)=2)["half target leaf" YREG_$SYNCHDMLC(I,2)=YREG_$SYNCHDMLC(I,1)+WTONGUE_$SYNCHDMLC(2); - YREG_$SYNCHDMLC(I,7)=YREG_$SYNCHDMLC(I,2)+LEAFWIDTH_$SYNCHDMLC(2); - YREG_$SYNCHDMLC(I,6)=YREG_$SYNCHDMLC(I,7)- + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(2,1,6)=1)[ + YREG_$SYNCHDMLC(I,6)=YREG_$SYNCHDMLC(I,2)+LEAFWIDTH_$SYNCHDMLC(2); + YREG_$SYNCHDMLC(I,7)=YREG_$SYNCHDMLC(I,6)+ ABS(WRAILBOT_$SYNCHDMLC(2)-WRAILTOP_$SYNCHDMLC(2)); + ] + ELSE[ + YREG_$SYNCHDMLC(I,7)=YREG_$SYNCHDMLC(I,2)+LEAFWIDTH_$SYNCHDMLC(2); + YREG_$SYNCHDMLC(I,6)=YREG_$SYNCHDMLC(I,7)- + ABS(WRAILBOT_$SYNCHDMLC(2)-WRAILTOP_$SYNCHDMLC(2)); + ] IF(I_LEAF_ALT_DEF_$SYNCHDMLC(2,1,6)=1)[ YTMP = YREG_$SYNCHDMLC(I,6); ] From 88828acc02ba74cbb37b827889ba3da74967f239 Mon Sep 17 00:00:00 2001 From: Blake Walters Date: Fri, 29 Oct 2021 14:39:29 -0700 Subject: [PATCH 04/14] Fix target leaf in synchdmlc Note that commented out debug write statements are still present in the source code. --- .../omega/beamnrc/CMs/SYNCHDMLC_cm.mortran | 393 +++++++++++++++--- .../beamnrc/CMs/SYNCHDMLC_macros.mortran | 46 +- 2 files changed, 382 insertions(+), 57 deletions(-) diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran index 6e882dce3..35ec1d5fa 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran @@ -764,6 +764,15 @@ IF(ORIENT_$SYNCHDMLC=1) [ ELSE[ XYL(1)=X(NP); XYL(2)=Y(NP);UVL(1)=U(NP);UVL(2)=V(NP);] ; +"write(*,*)' in howfar '; + +"IF(Z(NP)>47.62001 & Z(NP)<54.37999)[" + "IF(med(irl) = 0)[" + " write(*,*)' iq,x,y,z ',iq(np),x(np),y(np),z(np);" + " write(*,*)' ir,med ',ir(np),med(irl);" + " write(*,*)' ihstry ',ihstry;" + " ]" + " ]" STEP_UNIT=0.0; COUNT = 0; OUTOFCMFLAG=0; @@ -823,6 +832,7 @@ ELSEIF(IR_$SYNCHDMLC=1 | IR_$SYNCHDMLC=2 | IR_$SYNCHDMLC=3) [ ELSEIF(W(NP) < 0.0) [ "particle going backward" DIST = (ZMIN_$SYNCHDMLC - Z(NP))/W(NP); "distance to back of CM " + "write(*,*)' dist, ustep ',dist,ustep; IF(DIST>USTEP) [ STEP_UNIT=USTEP; ] ELSE [ STEP_UNIT=DIST; ] IF(DIST <= 0.0) [ @@ -840,6 +850,8 @@ ELSEIF(IR_$SYNCHDMLC=1 | IR_$SYNCHDMLC=2 | IR_$SYNCHDMLC=3) [ $SYNCHDMLC_FIND(REGION_$SYNCHDMLC,0.0); +"write(*,*)' leafis, region ',leafis,REGION_$SYNCHDMLC; + IF(REGION_$SYNCHDMLC=4) [ "Particle is in the air gap " REGION_$SYNCHDMLC=IRSTART_$SYNCHDMLC-1+REGION_$SYNCHDMLC; IF(W(NP) > 0.0)[ @@ -911,6 +923,10 @@ IF(OUTOFMLCFLAG=1) [ $SYNCHDMLC_MINDISTANCE(DIST1); +"write(*,*)' x,y,z ',x(np),y(np),z(np); +"write(*,*)' leafis,nx,ny,nz ',leafis,nx,ny,nz; +"write(*,*)' dist1,step_unit ',DIST1,STEP_UNIT; + "OUTPUT REGION_$SYNCHDMLC;(I3);" IF((DIST1>=STEP_UNIT) | (DIST1<0)) [ @@ -943,6 +959,9 @@ ELSEIF( (STEP_UNIT>DIST1) & (DIST1>=0)) [ NEWREGION_$SYNCHDMLC=NEWREGION_$SYNCHDMLC+IRSTART_$SYNCHDMLC-1; " OUTPUT REGION_$SYNCHDMLC;(I3);" + "write(*,*)' region, newregion, dist1 ',REGION_$SYNCHDMLC, + " NEWREGION_$SYNCHDMLC,DIST1; + IF( OUTOFCMFLAG=1 ) [ EXIT; ] ELSEIF( (NEWREGION_$SYNCHDMLC~=REGION_$SYNCHDMLC) @@ -975,6 +994,7 @@ ELSEIF( (STEP_UNIT>DIST1) & (DIST1>=0)) [ RETURN; ] ELSE [ $SYNCHDMLC_MINDISTANCE(DIST2); + "write(*,*)' dist1, dist2 ',dist1,dist2; DIST1=DIST1+DIST2; ]; @@ -2583,6 +2603,8 @@ IF(TOT_LEAF_$SYNCHDMLC>0) [ DO J = 1, 7 [ SURPARA1_$SYNCHDMLC(I,J)=YREG_$SYNCHDMLC(I,J)/TEMP1; "OUTPUT I, J, YREG_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" + write(*,*)' i, leafis, j, yreg ',i,LEAFTYPE_$SYNCHDMLC(I),j, + YREG_$SYNCHDMLC(I,J); " OUTPUT I, J, SURPARA1_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" ];"End of J Loop" ]; "End of K Loop" @@ -3613,7 +3635,9 @@ IF(LEAFIS~=0) [ "Check if we are in groove on leaf and move to adjacent leaf" IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ "target leaf" - IF((NY=5|NY=6) & (NZ=7|NZ=8|NZ=9) & LEAFIS~=TOT_LEAF_$SYNCHDMLC) [ + IF(LEAFIS~=TOT_LEAF_$SYNCHDMLC & (((NY=5|NY=6) & (NZ=7|NZ=8|NZ=9)) | + (I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1 & + NY=6 & NZ>1))) [ IF(XYL1>SURPARA1_$SYNCHDMLC(LEAFIS+1,1)*(Z(NP)-ZFOCUS_$SYNCHDMLC(1)))[ LEAFIS=LEAFIS+1; TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1)*(Z(NP)-ZFOCUS_$SYNCHDMLC(1)); @@ -3703,7 +3727,32 @@ IF(LEAFIS~=0) [ ]; ] ]; - ]; + ] + ELSEIF(LEAFIS ~=1 & + I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,1)=1 & + NY=1 & NZ<9)[ + "check if particle is in region of previous leaf" + IF(XYL1ZREG_$SYNCHDMLC(LEAFIS,10))[ + NZ=9; + ] ELSE[ + DO I=1,9 ["recheck Z region" + IF((Z(NP)>=ZREG_$SYNCHDMLC(LEAFIS,I)) & + (ZREG_$SYNCHDMLC(LEAFIS,I+1)>=Z(NP))) [NZ=I; EXIT]; + ]; + ] + ] + ] ]; "Determine which X region we are in" @@ -3747,6 +3796,8 @@ IF(LEAFIS~=0) [ "Set minimum and maximum Z boundaries" IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ "Quarter or Half Target leaf" + "take care of distance to corners possibly being min. distance" + "here." IF(NY=1) [ IF(NZ<=3) [I1=1; I2=4;] @@ -3755,8 +3806,11 @@ IF(LEAFIS~=0) [ ELSE [I1=6; I2=10;] ] ELSEIF(NY=2) [ - IF(NZ<=3) [I1=1; I2=4;] + IF(NZ=1) [I1=1; I2=2;] + ELSEIF(NZ=2) [I1=1; I2=4;] + ELSEIF(NZ=3) [I1=3; I2=4;] ELSEIF(NZ=4) [I1=4; I2=5;] + ELSEIF(NZ=5) [I1=5; I2=6;] ELSEIF(NZ<=7) [I1=5; I2=8;] ELSE [I1=8; I2=10;] ] @@ -3766,13 +3820,19 @@ IF(LEAFIS~=0) [ ELSEIF(NZ=2) [I1=2; I2=3;] ELSEIF(NZ=3) [I1=3; I2=4;] ELSEIF(NZ=4) [I1=4; I2=5;] - ELSEIF(NZ<=7) [I1=5; I2=8;] + ELSEIF(NZ<=6) [I1=5; I2=7;] + ELSEIF(NZ=7) [I1=5; I2=8;] ELSE [I1=8; I2=10;] ] ELSE [ - IF(NZ<=3) [I1=1; I2=4;] + IF(NZ=1) [I1=1; I2=2;] + ELSEIF(NZ=2) [I1=1; I2=4;] + ELSEIF(NZ=3) [I1=3; I2=4;] ELSEIF(NZ=4) [I1=4; I2=5;] - ELSEIF(NZ<=8) [I1=5; I2=9;] + ELSEIF(NZ=5) [I1=5; I2=6;] + ELSEIF(NZ=6) [I1=5; I2=7;] + ELSEIF(NZ=7) [I1=5; I2=8;] + ELSEIF(NZ=8) [I1=5; I2=9;] ELSE [I1=9; I2=10;] ] ] @@ -3781,8 +3841,10 @@ IF(LEAFIS~=0) [ ELSEIF(NZ=2) [I1=2; I2=3;] ELSEIF(NZ=3) [I1=3; I2=4;] ELSEIF(NZ=4) [I1=4; I2=5;] - ELSEIF(NZ<=7) [I1=5; I2=8;] - ELSE [I1=8; I2=10;] + ELSEIF(NZ<=6) [I1=5; I2=7;] + ELSEIF(NZ=7) [I1=5; I2=8;] + ELSEIF(NZ=8) [I1=5; I2=9;] + ELSE [I1=9; I2=10;] ] ELSEIF(NY=5) [ IF(NZ=1) [I1=2; I2=3;] @@ -3902,6 +3964,9 @@ IF(LEAFIS~=0) [ DIST=MIN(ABS(ZREG_$SYNCHDMLC(LEAFIS,I1)-Z(NP)), ABS(ZREG_$SYNCHDMLC(LEAFIS,I2)-Z(NP))); + "write(*,*)' x,y,z ',x(np),y(np),z(np); + "write(*,*)' nx,ny,nz ',nx,ny,nz; + "write(*,*)' leafis,i1,i2,zdist ',leafis,i1,i2,dist; "Calculates distance to closest boundary in z direction" "--> 3) 7 Jul 2009" @@ -3909,36 +3974,62 @@ IF(LEAFIS~=0) [ IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ "Target leaf" - IF(NZ=1 & NY<=5) [ - - TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1); - TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,6); - - ] ELSEIF(NZ=1 & NY=6) [ - - TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,6); - IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [ + IF(NZ=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1) [ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1); TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7); - ] ELSE [ - TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS+1,3); ] + ELSE[ + IF(NY<=5) [ - ] ELSEIF(NZ=2 & NY<=2) [ - - TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1); - TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,3); + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,6); - ] ELSEIF(NZ=2 & NY>=3) [ + ] ELSEIF(NY=6) [ - TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,3); - IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [ - TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7);] - ELSE [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS+1,3);] + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,6); + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [ + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7); + ] ELSE [ + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS+1,3); + ] + ] + ] + ] ELSEIF(NZ=2) [ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,4)=1) [ + IF(NY<=2) [ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,3); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,3); + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [ + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7);] + ELSE [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS+1,3);] + ] + ] + ELSE[ + IF(NY<=3)[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,4); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,4); + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [ + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7);] + ELSE [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS+1,3);] + ] + ] ] ELSEIF(NZ=3|NZ=4|NZ=5) [ - - TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1); - TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7); + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1) [ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,6); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7); + ] ] ELSEIF(NY=1 & (NZ=6|NZ=7)) [ @@ -3947,33 +4038,62 @@ IF(LEAFIS~=0) [ TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,2); ] ELSEIF(NY>=2 & NZ=6) [ - - TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,2); - TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7); - + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1) [ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,2); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,6); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,2); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7); + ] ] ELSEIF(NZ=7 & (NY=2|NY=3|NY=4)) [ TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,2); TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,5); - ] ELSEIF((NZ=7|NZ=8) & NY>=5) [ + ] ELSEIF(NZ=7 & NY>=5) [ TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,5); IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [ TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7);] ELSE [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS+1,1);] - ] ELSEIF(NZ=8 & NY<=3) [IF(LEAFIS=1) [ - - TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);] - ELSE [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,7);] - TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,4); - - ] - ELSEIF(NZ=8 & NY=4) [ - TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,4); - TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,5); - ] + ] ELSEIF(NZ=8)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,4)=1) [ + IF(NY<=3)[ + IF(LEAFIS=1) [ TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1); ] + ELSE[ TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,7);] + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,4); + ] + ELSEIF(NY=4)[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,4); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,5); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,5); + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [ + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7);] + ELSE[TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS+1,1);] + ] + ] + ELSE[ + IF(NY<=2)[ + IF(LEAFIS=1) [ TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1); ] + ELSE[ TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,7);] + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,3); + ] + ELSEIF(NY<=4)[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,3); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,5); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,5); + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [ + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7);] + ELSE[TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS+1,1);] + ] + ] + ] ELSEIF(NZ=9) [IF(LEAFIS=1) [ TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);] ELSE [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,7);] @@ -4038,10 +4158,184 @@ IF(LEAFIS~=0) [ TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7); ] ] - ELSE ["Isocenter leaf" + ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=3) [ + "half isocenter leaf + IF(NZ=1) [ + IF(LEAFIS=1) [ TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);] + ELSE [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,7);] + "possibly use LHS=6?" + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7);] + ELSE [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS+1,1);] + ] + ELSEIF(NZ=2)[ + IF(NY<=2)[ + IF(LEAFIS=1) [ TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);] + ELSE [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,7);] + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,3); + ] + IF(NY=3)[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,3); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,4); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,4); + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7);] + ELSE [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS+1,1);] + ] + ] + ELSEIF(NZ=3)[ + IF(NY<=2)[ + IF(LEAFIS=1) [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);] + ELSE [ + IF(Z(NP)>ZREG_$SYNCHDMLC(J,7))[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,5); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,7); + ] + ] + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,3); + ] + IF(NY<=5)[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,3); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,6); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,6); + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7);] + ELSE [ + IF(Z(NP)Ztip(LEAFIS-1) but should be okay" + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,2); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,2); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7); + ] + ] + ] + ] + ELSE ["Quarter Isocenter leaf" "EH - because the quarter and half leaves are slightly different" " you will need a modification for NZ=4 and NY=6" - IF(NZ=1) [ IF(LEAFIS=1) [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);] ELSE [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,7);]; @@ -4121,6 +4415,7 @@ IF(LEAFIS~=0) [ SQRT(1+TEMP2**2)); DIST = MIN(DIST,TEMP1,TEMP2); + "write(*,*)' ydist ',dist; "NOW CHECK DISTANCE IN X DIRECTION" IF(ENDTYPE_$SYNCHDMLC=1) [ "focused leaf end" TEMP1=SURPARA2_B_$SYNCHDMLC(LEAFIS); diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran index b4a6b67df..dd752ff1b 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran @@ -518,6 +518,8 @@ ELSE ["inside leaf bank" NY=NY+1; ]; + "write(*,*)' leafis, xyfl1, ny ',leafis,xyfl(1),ny;" + IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ "Originally on Target (Quarter or Half) Leaf" @@ -814,6 +816,7 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" ZN = (ZREG_$SYNCHDMLC(LEAFIS,ZLHS)-ZFL)/W(NP); IF( (ZP>=0.0) & (ZN>=0.0) ) [ ZDIST =MIN(ZP, ZN); ] ELSE [ ZDIST = MAX(ZP, ZN); ] + "write(*,*)' zdist,leafis ',zdist,leafis;" ] ELSE [ ZDIST = 1.0E20; ]; IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ @@ -860,16 +863,34 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" ] ] ELSEIF(NZ=3)[ - LHS=1; J=LEAFIS; - RHS=7; I=LEAFIS; + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1) [ + LHS=1; J=LEAFIS; + RHS=6; I=LEAFIS; + ] + ELSE[ + LHS=1; J=LEAFIS; + RHS=7; I=LEAFIS; + ] ] ELSEIF(NZ=4)[ - LHS=1; J=LEAFIS; - RHS=7; I=LEAFIS; + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1) [ + LHS=1; J=LEAFIS; + RHS=6; I=LEAFIS; + ] + ELSE[ + LHS=1; J=LEAFIS; + RHS=7; I=LEAFIS; + ] ] ELSEIF(NZ=5)[ - LHS=1; J=LEAFIS; - RHS=7; I=LEAFIS; + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1) [ + LHS=1; J=LEAFIS; + RHS=6; I=LEAFIS; + ] + ELSE[ + LHS=1; J=LEAFIS; + RHS=7; I=LEAFIS; + ] ] ELSEIF(NZ=6)[ IF(NY=1)[ @@ -878,8 +899,14 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" RHS=2; I=LEAFIS; ] ELSE[ - LHS=2; J=LEAFIS; - RHS=7; I=LEAFIS; + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1) [ + LHS=2; J=LEAFIS; + RHS=6; I=LEAFIS; + ] + ELSE[ + LHS=2; J=LEAFIS; + RHS=7; I=LEAFIS; + ] ] ] ELSEIF(NZ=7)[ @@ -1222,6 +1249,7 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" ELSE [ YN = 1.0E20; ]; IF((YP>=0.0) & (YN>=0.0) ) [ YDIST =MIN(YP, YN); ] ELSE [ YDIST = MAX(YP,YN);]; + "write(*,*)' ydist ',ydist;" IF(ENDTYPE_$SYNCHDMLC = 1) ["focused leaf end" HOLE=HOLEPOS_$SYNCHDMLC(LEAFIS); TEMP3=LEAFB_$SYNCHDMLC(LEAFIS)-HOLE; @@ -1276,6 +1304,7 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" TEMP3 = UVL(2)*(XYFL(2)-XoP)+W(NP)*(ZFL-Zo); "B in eqn" TEMP4 = (XYFL(2)-XoN)**2 + (ZFL-Zo)**2; "part of C" TEMP5 = (XYFL(2)-XoP)**2 + (ZFL-Zo)**2; "part of C" + "write(*,*)' nx ',nx;" IF((XYFL(2)>=XoN) & (SQRT((XYFL(2)-XoN)**2+(ZFL-Zo)**2)- LEAFRADIUS_$SYNCHDMLC=0.0) & (UVL(2)*(XYFL(2)-XoN)+W(NP)*(ZFL-Zo)=0.0)) [ XN=0.0; XP=1.0E20; "on edge of negative leaf" @@ -1391,6 +1420,7 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" ]; IF( (XP>=0.0) & (XN>=0.0) ) [ XDIST =MIN(XP, XN); ] ELSE [ XDIST = MAX(XP,XN); ]; +"write(*,*)' xdist ',xdist;" IF( ZDIST>=0.0) [TEMP=ZDIST; IF( YDIST>=0.0 ) [TEMP=MIN(TEMP,YDIST);]; IF( XDIST>=0.0 ) [TEMP=MIN(TEMP,XDIST);]; From bd607021f113fe1d4611abf784ef40978ebb8ccc Mon Sep 17 00:00:00 2001 From: Blake Walters Date: Sat, 30 Oct 2021 11:21:31 -0700 Subject: [PATCH 05/14] Fix HOWNEAR for half isocenter leaves Note that commented out debug write statements are still present in the source code. --- .../omega/beamnrc/CMs/SYNCHDMLC_cm.mortran | 26 +++++++++++++------ .../beamnrc/CMs/SYNCHDMLC_macros.mortran | 2 ++ 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran index 35ec1d5fa..460b2c722 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran @@ -2603,8 +2603,8 @@ IF(TOT_LEAF_$SYNCHDMLC>0) [ DO J = 1, 7 [ SURPARA1_$SYNCHDMLC(I,J)=YREG_$SYNCHDMLC(I,J)/TEMP1; "OUTPUT I, J, YREG_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" - write(*,*)' i, leafis, j, yreg ',i,LEAFTYPE_$SYNCHDMLC(I),j, - YREG_$SYNCHDMLC(I,J); + "write(*,*)' i, leafis, j, yreg ',i,LEAFTYPE_$SYNCHDMLC(I),j, + " YREG_$SYNCHDMLC(I,J); " OUTPUT I, J, SURPARA1_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" ];"End of J Loop" ]; "End of K Loop" @@ -3055,7 +3055,8 @@ DO L=1,TOT_LEAF_$SYNCHDMLC[ SUBINDEX_$SYNCHDMLC(L,I,6,8)=2; SUBINDEX_$SYNCHDMLC(L,I,6,9)=2; - IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(L),2,4)~=1) [ + IF(LEAFTYPE_$SYNCHDMLC(L)=5 & + I_LEAF_ALT_DEF_$SYNCHDMLC(5,2,4)~=1) [ "Quarter Isocenter with zgTEMP4) | (XYFL(2)=TEMP4 & UVL(2)>=0)) [ NX=5;] ]; + "write(*,*)' leafis, x, y, z ',leafis,xyfl(2),xyfl(1),zfl;" + "write(*,*)' nx, ny, nz ',nx,ny,nz;" {P1}=SUBINDEX_$SYNCHDMLC(LEAFIS,NX,NY,NZ); "OUTPUT LEAFIS,XYFL(2),XYFL(1),ZFL,{P1};" From 1df517fecd50762897b50dd0f4cb8d205158d610 Mon Sep 17 00:00:00 2001 From: Blake Walters Date: Thu, 11 Nov 2021 22:07:04 -0800 Subject: [PATCH 06/14] Add debugging information output for synchdmlc --- .../omega/beamnrc/CMs/SYNCHDMLC_cm.mortran | 4 +- .../beamnrc/CMs/SYNCHDMLC_macros.mortran | 3 +- HEN_HOUSE/src/egsnrc.mortran | 212 ++++++++++++++++++ 3 files changed, 216 insertions(+), 3 deletions(-) diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran index 460b2c722..8698e0cca 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran @@ -2603,8 +2603,8 @@ IF(TOT_LEAF_$SYNCHDMLC>0) [ DO J = 1, 7 [ SURPARA1_$SYNCHDMLC(I,J)=YREG_$SYNCHDMLC(I,J)/TEMP1; "OUTPUT I, J, YREG_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" - "write(*,*)' i, leafis, j, yreg ',i,LEAFTYPE_$SYNCHDMLC(I),j, - " YREG_$SYNCHDMLC(I,J); + write(*,*)' i, leafis, j, yreg ',i,LEAFTYPE_$SYNCHDMLC(I),j, + YREG_$SYNCHDMLC(I,J); " OUTPUT I, J, SURPARA1_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" ];"End of J Loop" ]; "End of K Loop" diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran index 6f24721b2..cb282f234 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran @@ -699,7 +699,8 @@ ELSE ["inside leaf bank" NX=5;] ]; "write(*,*)' leafis, x, y, z ',leafis,xyfl(2),xyfl(1),zfl;" - "write(*,*)' nx, ny, nz ',nx,ny,nz;" + "write(*,*)' nx, ny, nz, subindex ',nx,ny,nz," + " SUBINDEX_$SYNCHDMLC(LEAFIS,NX,NY,NZ);" {P1}=SUBINDEX_$SYNCHDMLC(LEAFIS,NX,NY,NZ); "OUTPUT LEAFIS,XYFL(2),XYFL(1),ZFL,{P1};" diff --git a/HEN_HOUSE/src/egsnrc.mortran b/HEN_HOUSE/src/egsnrc.mortran index ed3bc507a..039d83e63 100644 --- a/HEN_HOUSE/src/egsnrc.mortran +++ b/HEN_HOUSE/src/egsnrc.mortran @@ -1041,6 +1041,111 @@ $start_new_particle; :NEWELECTRON:LOOP [ +"IF(Y(NP) > -0.73059 & Y(NP) < -0.689 & +" Z(NP) > 50.998 & ABS(X(NP))<10.0 & MED(IR(NP))=2)[ +" write(*,*)' test 1'; +" write(*,*)' e,x,y,z,ir ',E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.8258 & Y(NP) < -0.689 & +" Z(NP) > 47.716 & Z(NP) < 47.979 & ABS(X(NP))<10.0 & MED(IR(NP))=2)[ +" write(*,*)' test 2'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.693 & Y(NP) < -0.689 & ABS(X(NP))<10.0 & Z(NP) > 47.716 & +" MED(IR(NP))=2)[ +" write(*,*)' test 3'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.9259 & Y(NP) <-0.8234 & Z(NP) >53.998 & ABS(X(NP))<10.0 & +" MED(IR(NP))=2)[ +" write(*,*)' test 4'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.9259 & Y(NP) <-0.7306 & Z(NP) <53.996 & Z(NP)>47.981 & +" MED(IR(NP))=1)[ +" write(*,*)' test 5'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.9259 & Y(NP) <-0.6933 & Z(NP) <50.996 & Z(NP)>47.981 & +" MED(IR(NP))=1)[ +" write(*,*)' test 6'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.9632 & Y(NP) <-0.689 & Z(NP) <47.714 & Z(NP)>47.6201 & +" MED(IR(NP))=1)[ +" write(*,*)' test 7'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.9632 & Y(NP) <-0.826 & Z(NP) <50.994 & Z(NP)>47.6201 & +" MED(IR(NP))=1)[ +" write(*,*)' test 8'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.823 & Y(NP) <-0.7306 & Z(NP) <54.116 & Z(NP)>53.998 & +" MED(IR(NP))=1)[ +" write(*,*)' test 9'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +IF(Y(NP) > -0.72751 & Y(NP) <-0.728 & Z(NP) <54.284 & Z(NP)>47.621 & + MED(IR(NP))=2)[ + write(*,*)' test 10'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.72751 & Y(NP) <-0.690 & Z(NP) <51.103 & Z(NP)>47.621 & + ABS(X(NP))<10.0 & MED(IR(NP))=2)[ + write(*,*)' test 11'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.6142 & Y(NP) <-0.4566 & Z(NP) <48.00 & Z(NP)>47.621 & + ABS(X(NP))<10.0 & MED(IR(NP))=2)[ + write(*,*)' test 12'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.493 & Y(NP) <-0.4566 & Z(NP) <51.204 & Z(NP)>47.621 & + ABS(X(NP))<10.0 & MED(IR(NP))=2)[ + write(*,*)' test 13'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.7276 & Y(NP) <-0.4566 & Z(NP) <47.884 & Z(NP)>47.621 & + ABS(X(NP))<10.0 & MED(IR(NP))=2)[ + write(*,*)' test 14'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.7276 & Y(NP) <-0.6106 & Z(NP) <54.284 & Z(NP)>54.021 & + ABS(X(NP))<10.0 & MED(IR(NP))=2)[ + write(*,*)' test 15'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.7265 & Y(NP) <-0.4566 & Z(NP) <54.019 & Z(NP)>51.206 & + ABS(X(NP))<10.0 & MED(IR(NP))=1)[ + write(*,*)' test 16'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.6892 & Y(NP) <-0.4938 & Z(NP) <51.103 & Z(NP)>48.005 & + ABS(X(NP))<10.0 & MED(IR(NP))=1)[ + write(*,*)' test 17'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.7265 & Y(NP) <-0.4938 & Z(NP) <51.206 & Z(NP)>51.105 & + ABS(X(NP))<10.0 & MED(IR(NP))=1)[ + write(*,*)' test 18'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.6892 & Y(NP) <-0.6143 & Z(NP) <48.003 & Z(NP)>47.886 & + ABS(X(NP))<10.0 & MED(IR(NP))=1)[ + write(*,*)' test 19'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.6105 & Y(NP) <-0.4566 & Z(NP) <54.284 & Z(NP)>54.021 & + ABS(X(NP))<10.0 & MED(IR(NP))=1)[ + write(*,*)' test 20'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.7275 & Y(NP) <-0.4566 & Z(NP) <54.379 & Z(NP)>54.286 & + ABS(X(NP))<10.0 & MED(IR(NP))=1)[ + write(*,*)' test 21'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] "Go once through this loop for each 'new' electron whose charge and "energy has not been checked @@ -1182,6 +1287,7 @@ $start_new_particle; $SET-TUSTEP-EM-FIELD; "optional tustep restriction in EM field $CALL-HOWNEAR(tperp); + "write(*,*)'ustep, tperp ',ustep,tperp; dnear(np) = tperp; $RANGE-DISCARD; "optional regional range rejection for" "particles below e_max_rr if i_do_rr set" @@ -6480,6 +6586,112 @@ $EVALUATE GMFPR0 USING GMFP(GLE);] :PTRANS: LOOP["PHOTON TRANSPORT LOOP" +"IF(Y(NP) > -0.73059 & Y(NP) < -0.689 & +" Z(NP) > 50.998 & ABS(X(NP))<10.0 & MED(IR(NP))=2)[ +" write(*,*)' test 1'; +" write(*,*)' e,x,y,z,ir ',E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.8258 & Y(NP) < -0.689 & +" Z(NP) > 47.716 & Z(NP) < 47.979 & ABS(X(NP))<10.0 & MED(IR(NP))=2)[ +" write(*,*)' test 2'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.693 & Y(NP) < -0.689 & ABS(X(NP))<10.0 & Z(NP) > 47.716 & +" MED(IR(NP))=2)[ +" write(*,*)' test 3'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.9259 & Y(NP) <-0.8234 & Z(NP) >53.998 & ABS(X(NP))<10.0 & +" MED(IR(NP))=2)[ +" write(*,*)' test 4'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.9259 & Y(NP) <-0.7306 & Z(NP) <53.996 & Z(NP)>47.981 & +" MED(IR(NP))=1)[ +" write(*,*)' test 5'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.9259 & Y(NP) <-0.6933 & Z(NP) <50.996 & Z(NP)>47.981 & +" MED(IR(NP))=1)[ +" write(*,*)' test 6'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.9632 & Y(NP) <-0.689 & Z(NP) <47.714 & Z(NP)>47.6201 & +" MED(IR(NP))=1)[ +" write(*,*)' test 7'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.9632 & Y(NP) <-0.826 & Z(NP) <50.994 & Z(NP)>47.6201 & +" MED(IR(NP))=1)[ +" write(*,*)' test 8'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.823 & Y(NP) <-0.7306 & Z(NP) <54.116 & Z(NP)>53.998 & +" MED(IR(NP))=1)[ +" write(*,*)' test 9'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +IF(Y(NP) > -0.72751 & Y(NP) <-0.728 & Z(NP) <54.284 & Z(NP)>47.621 & + MED(IR(NP))=2)[ + write(*,*)' test 10'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.72751 & Y(NP) <-0.690 & Z(NP) <51.103 & Z(NP)>47.621 & + ABS(X(NP))<10.0 & MED(IR(NP))=2)[ + write(*,*)' test 11'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.6142 & Y(NP) <-0.4566 & Z(NP) <48.00 & Z(NP)>47.621 & + ABS(X(NP))<10.0 & MED(IR(NP))=2)[ + write(*,*)' test 12'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.493 & Y(NP) <-0.4566 & Z(NP) <51.204 & Z(NP)>47.621 & + ABS(X(NP))<10.0 & MED(IR(NP))=2)[ + write(*,*)' test 13'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.7276 & Y(NP) <-0.4566 & Z(NP) <47.884 & Z(NP)>47.621 & + ABS(X(NP))<10.0 & MED(IR(NP))=2)[ + write(*,*)' test 14'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.7276 & Y(NP) <-0.6106 & Z(NP) <54.284 & Z(NP)>54.021 & + ABS(X(NP))<10.0 & MED(IR(NP))=2)[ + write(*,*)' test 15'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.7265 & Y(NP) <-0.4566 & Z(NP) <54.019 & Z(NP)>51.206 & + ABS(X(NP))<10.0 & MED(IR(NP))=1)[ + write(*,*)' test 16'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.6892 & Y(NP) <-0.4938 & Z(NP) <51.103 & Z(NP)>48.005 & + ABS(X(NP))<10.0 & MED(IR(NP))=1)[ + write(*,*)' test 17'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.7265 & Y(NP) <-0.4938 & Z(NP) <51.206 & Z(NP)>51.105 & + ABS(X(NP))<10.0 & MED(IR(NP))=1)[ + write(*,*)' test 18'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.6892 & Y(NP) <-0.6143 & Z(NP) <48.003 & Z(NP)>47.886 & + ABS(X(NP))<10.0 & MED(IR(NP))=1)[ + write(*,*)' test 19'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.6105 & Y(NP) <-0.4566 & Z(NP) <54.284 & Z(NP)>54.021 & + ABS(X(NP))<10.0 & MED(IR(NP))=1)[ + write(*,*)' test 20'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.7275 & Y(NP) <-0.4566 & Z(NP) <54.379 & Z(NP)>54.286 & + ABS(X(NP))<10.0 & MED(IR(NP))=1)[ + write(*,*)' test 21'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] + IF (MEDIUM.EQ.0)[TSTEP=VACDST;] ELSE [$SET-RHOF; "DENSITY RATIO SCALING TEMPLATE" GMFP=GMFPR0/RHOF; From 25d24eb66536be0e245c0f1a56dfedf7b8a3f5e7 Mon Sep 17 00:00:00 2001 From: Blake Walters Date: Fri, 10 Dec 2021 15:03:15 -0800 Subject: [PATCH 07/14] Debug half target and half iso cross sections Also comment out debug write statements. --- .../omega/beamnrc/CMs/SYNCHDMLC_cm.mortran | 48 ++- .../beamnrc/CMs/SYNCHDMLC_macros.mortran | 2 +- HEN_HOUSE/src/egsnrc.mortran | 342 +++++++++--------- 3 files changed, 213 insertions(+), 179 deletions(-) diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran index 8698e0cca..9272365c0 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran @@ -701,11 +701,14 @@ "V>$GEO_SHIFT_1_(#) "V>============= "V>{p1} the value to compare with ustep -"V> if {p1}+1.0e-5 < ustep shift it, otherwise no shift +"V> if {p1}+1.0e-5 < ustep shift it, otherwise set it to ustep +"V> Note: if above condition failed, this used to leave {p1} +"V> unshifted, which led to transport errors ; REPLACE {$GEO_SHIFT_1_(#)} WITH { ;IF({P1}~=0.00 ) [ IF({P1}+1.0E-5< USTEP) [{P1}={P1}+1.0E-5;] + ELSE [{P1}=USTEP;] ] ELSE [{P1}={P1}+1.0E-5;]; @@ -764,7 +767,7 @@ IF(ORIENT_$SYNCHDMLC=1) [ ELSE[ XYL(1)=X(NP); XYL(2)=Y(NP);UVL(1)=U(NP);UVL(2)=V(NP);] ; -"write(*,*)' in howfar '; +"write(*,*)' in howfar, ir, med ',IR_$SYNCHDMLC,med(IRL); "IF(Z(NP)>47.62001 & Z(NP)<54.37999)[" "IF(med(irl) = 0)[" @@ -801,6 +804,7 @@ OUTOFMLCFLAG=0; IF(N_GAP_$SYNCHDMLC=1 & IR_$SYNCHDMLC=4 ) ["Check the air gap first" IF(W(NP)>0.0) ["Particle going forward" DIST = (ZMIN_$SYNCHDMLC - Z(NP))/W(NP); "distance to front of CM" + "write(*,*)' dist ',dist; IF(DIST <= 0.0) [ USTEP=0.0; $SYNCHDMLC_FIND(IR_$SYNCHDMLC, 0.0); @@ -850,15 +854,18 @@ ELSEIF(IR_$SYNCHDMLC=1 | IR_$SYNCHDMLC=2 | IR_$SYNCHDMLC=3) [ $SYNCHDMLC_FIND(REGION_$SYNCHDMLC,0.0); -"write(*,*)' leafis, region ',leafis,REGION_$SYNCHDMLC; +"write(*,*)' leafis, region, dist ',leafis,REGION_$SYNCHDMLC,DIST; IF(REGION_$SYNCHDMLC=4) [ "Particle is in the air gap " REGION_$SYNCHDMLC=IRSTART_$SYNCHDMLC-1+REGION_$SYNCHDMLC; IF(W(NP) > 0.0)[ IF(DIST <= USTEP ) ["particle to be moved to region boundary" + "write(*,*)' ustep, dist here ',ustep,dist; $GEO_SHIFT_1_(DIST); + "write(*,*)' and ustep, dist here ',ustep,dist; USTEP = DIST; $SYNCHDMLC_FIND(NEWREGION_$SYNCHDMLC,USTEP); + "write(*,*)' ustep, newregion ',ustep,NEWREGION_$SYNCHDMLC; IF( NEWREGION_$SYNCHDMLC=1) [IRNEW =IRSTART_$SYNCHDMLC; RETURN;] ELSE[IRNEW =IRSTART_$SYNCHDMLC+1; RETURN;] ] @@ -923,6 +930,7 @@ IF(OUTOFMLCFLAG=1) [ $SYNCHDMLC_MINDISTANCE(DIST1); +"write(*,*)' dist1 ',dist1; "write(*,*)' x,y,z ',x(np),y(np),z(np); "write(*,*)' leafis,nx,ny,nz ',leafis,nx,ny,nz; "write(*,*)' dist1,step_unit ',DIST1,STEP_UNIT; @@ -3077,6 +3085,18 @@ DO L=1,TOT_LEAF_$SYNCHDMLC[ ] ]; + "reset some driving screw regions to air for some + "input dimension overrides + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(L),1,1)=1)[ + "an isocenter leaf override" + SUBINDEX_$SYNCHDMLC(L,2,1,6)=1; + SUBINDEX_$SYNCHDMLC(L,5,1,6)=1; + ] + ELSEIF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(L),1,6)=1)[ + SUBINDEX_$SYNCHDMLC(L,2,6,4)=1; + SUBINDEX_$SYNCHDMLC(L,5,6,4)=1; + ] + IF(LEAFTYPE_$SYNCHDMLC(L)=1) [ "Full Leaf" SUBINDEX_$SYNCHDMLC(L,2,1,6)=1; @@ -3545,7 +3565,6 @@ $INTEGER I,J, "T> looping index" LEAFIS, "T> leaf no. where particle is located" I1,I2; "T> used to mark min. max. Z boundaries for calculating dist" - IR_$SYNCHDMLC=IR(NP)-IRSTART_$SYNCHDMLC +1; "IR_$SYNCHDMLC=IR(NP)-IRSTART_$SYNCHDMLC; CB" IF(IR_$SYNCHDMLC=4) [ "in the air gap at the top" @@ -3634,12 +3653,15 @@ IF(LEAFIS~=0) [ ] "Check if we are in groove on leaf and move to adjacent leaf" +"write(*,*)' before check leafis, leaftype ',leafis,LEAFTYPE_$SYNCHDMLC(LEAFIS); +"write(*,*)' nx, ny, nz ',nx,ny,nz; IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ "target leaf" - IF(LEAFIS~=TOT_LEAF_$SYNCHDMLC & (((NY=5|NY=6) & (NZ=7|NZ=8|NZ=9)) | - (I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1 & - NY=6 & NZ>1))) [ - IF(XYL1>SURPARA1_$SYNCHDMLC(LEAFIS+1,1)*(Z(NP)-ZFOCUS_$SYNCHDMLC(1)))[ + IF(LEAFIS~=TOT_LEAF_$SYNCHDMLC & ((((NY=5|NY=6) & (NZ=7|NZ=8|NZ=9)) & + XYL1>SURPARA1_$SYNCHDMLC(LEAFIS+1,1)*(Z(NP)-ZFOCUS_$SYNCHDMLC(1))) | + (I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1 & + NY=6 & NZ>1 & + XYL1>SURPARA1_$SYNCHDMLC(LEAFIS+1,3)*(Z(NP)-ZFOCUS_$SYNCHDMLC(1))))) [ LEAFIS=LEAFIS+1; TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1)*(Z(NP)-ZFOCUS_$SYNCHDMLC(1)); TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7)*(Z(NP)-ZFOCUS_$SYNCHDMLC(1)); @@ -3669,7 +3691,6 @@ IF(LEAFIS~=0) [ ]; ] ]; - ]; ] ELSE [ "we are on a full leaf or isocenter leaf" IF((NY=6 & NZ<=4 & LEAFIS~=TOT_LEAF_$SYNCHDMLC & @@ -3729,9 +3750,10 @@ IF(LEAFIS~=0) [ ] ]; ] - ELSEIF(LEAFIS ~=1 & - I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,1)=1 & - NY=1 & NZ<9)[ + ELSEIF(LEAFIS ~=1 & NY<=2 & + ((LEAFTYPE_$SYNCHDMLC(LEAFIS) = 3 & NZ<=3) | + (LEAFTYPE_$SYNCHDMLC(LEAFIS) = 5 & NZ<=4)))[ + "here we are in an isocenter leaf "check if particle is in region of previous leaf" IF(XYL1TEMP4) | (XYFL(2)=TEMP4 & UVL(2)>=0)) [ NX=5;] ]; - "write(*,*)' leafis, x, y, z ',leafis,xyfl(2),xyfl(1),zfl;" + "write(*,*)' find: leafis, x, y, z ',leafis,xyfl(2),xyfl(1),zfl;" "write(*,*)' nx, ny, nz, subindex ',nx,ny,nz," " SUBINDEX_$SYNCHDMLC(LEAFIS,NX,NY,NZ);" {P1}=SUBINDEX_$SYNCHDMLC(LEAFIS,NX,NY,NZ); diff --git a/HEN_HOUSE/src/egsnrc.mortran b/HEN_HOUSE/src/egsnrc.mortran index 039d83e63..1ca92ccf5 100644 --- a/HEN_HOUSE/src/egsnrc.mortran +++ b/HEN_HOUSE/src/egsnrc.mortran @@ -1041,111 +1041,117 @@ $start_new_particle; :NEWELECTRON:LOOP [ -"IF(Y(NP) > -0.73059 & Y(NP) < -0.689 & -" Z(NP) > 50.998 & ABS(X(NP))<10.0 & MED(IR(NP))=2)[ -" write(*,*)' test 1'; -" write(*,*)' e,x,y,z,ir ',E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.8258 & Y(NP) < -0.689 & -" Z(NP) > 47.716 & Z(NP) < 47.979 & ABS(X(NP))<10.0 & MED(IR(NP))=2)[ -" write(*,*)' test 2'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.693 & Y(NP) < -0.689 & ABS(X(NP))<10.0 & Z(NP) > 47.716 & -" MED(IR(NP))=2)[ -" write(*,*)' test 3'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.9259 & Y(NP) <-0.8234 & Z(NP) >53.998 & ABS(X(NP))<10.0 & -" MED(IR(NP))=2)[ -" write(*,*)' test 4'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.9259 & Y(NP) <-0.7306 & Z(NP) <53.996 & Z(NP)>47.981 & -" MED(IR(NP))=1)[ -" write(*,*)' test 5'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.9259 & Y(NP) <-0.6933 & Z(NP) <50.996 & Z(NP)>47.981 & -" MED(IR(NP))=1)[ -" write(*,*)' test 6'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.9632 & Y(NP) <-0.689 & Z(NP) <47.714 & Z(NP)>47.6201 & -" MED(IR(NP))=1)[ -" write(*,*)' test 7'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.9632 & Y(NP) <-0.826 & Z(NP) <50.994 & Z(NP)>47.6201 & -" MED(IR(NP))=1)[ -" write(*,*)' test 8'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.823 & Y(NP) <-0.7306 & Z(NP) <54.116 & Z(NP)>53.998 & -" MED(IR(NP))=1)[ -" write(*,*)' test 9'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -IF(Y(NP) > -0.72751 & Y(NP) <-0.728 & Z(NP) <54.284 & Z(NP)>47.621 & - MED(IR(NP))=2)[ - write(*,*)' test 10'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.72751 & Y(NP) <-0.690 & Z(NP) <51.103 & Z(NP)>47.621 & - ABS(X(NP))<10.0 & MED(IR(NP))=2)[ - write(*,*)' test 11'; +IF(Y(NP) > -0.73059 & Y(NP) < -0.689 & + Z(NP) > 50.998 & ABS(X(NP))<10.0 & MED(IR(NP))=2)[ + write(*,*)' half air test 1'; + write(*,*)' e,x,y,z,ir ',E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.8258 & Y(NP) < -0.689 & + Z(NP) > 47.716 & Z(NP) < 47.979 & ABS(X(NP))<10.0 & MED(IR(NP))=2)[ + write(*,*)' half air test 2'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.6142 & Y(NP) <-0.4566 & Z(NP) <48.00 & Z(NP)>47.621 & - ABS(X(NP))<10.0 & MED(IR(NP))=2)[ - write(*,*)' test 12'; +IF(Y(NP) > -0.693 & Y(NP) < -0.689 & ABS(X(NP))<10.0 & Z(NP) > 47.716 & + MED(IR(NP))=2)[ + write(*,*)' half air test 3'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.493 & Y(NP) <-0.4566 & Z(NP) <51.204 & Z(NP)>47.621 & - ABS(X(NP))<10.0 & MED(IR(NP))=2)[ - write(*,*)' test 13'; +IF(Y(NP) > -0.9259 & Y(NP) <-0.8234 & Z(NP) >53.998 & ABS(X(NP))<10.0 & + MED(IR(NP))=2)[ + write(*,*)' half air test 4'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.7276 & Y(NP) <-0.4566 & Z(NP) <47.884 & Z(NP)>47.621 & - ABS(X(NP))<10.0 & MED(IR(NP))=2)[ - write(*,*)' test 14'; +IF(Y(NP) > -0.9632 & Y(NP) < -0.689 & Z(NP) >54.1161 & ABS(X(NP))<10.0 & + MED(IR(NP))=2)[ + write(*,*)' half air test 5'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.7276 & Y(NP) <-0.6106 & Z(NP) <54.284 & Z(NP)>54.021 & - ABS(X(NP))<10.0 & MED(IR(NP))=2)[ - write(*,*)' test 15'; +IF(Y(NP) > -0.9632 & Y(NP) < -0.926 & Z(NP) >50.996 & ABS(X(NP))<10.0 & + MED(IR(NP))=2)[ + write(*,*)' half air test 6'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.7265 & Y(NP) <-0.4566 & Z(NP) <54.019 & Z(NP)>51.206 & +IF(Y(NP) > -0.9259 & Y(NP) <-0.7306 & Z(NP) <53.996 & Z(NP)>47.981 & ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' test 16'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); + write(*,*)' half med test 7'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.6892 & Y(NP) <-0.4938 & Z(NP) <51.103 & Z(NP)>48.005 & +IF(Y(NP) > -0.9259 & Y(NP) <-0.6933 & Z(NP) <50.996 & Z(NP)>47.981 & ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' test 17'; + write(*,*)' half med test 8'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.7265 & Y(NP) <-0.4938 & Z(NP) <51.206 & Z(NP)>51.105 & +IF(Y(NP) > -0.9632 & Y(NP) <-0.689 & Z(NP) <47.714 & Z(NP)>47.6201 & ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' test 18'; + write(*,*)' half med test 9'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.6892 & Y(NP) <-0.6143 & Z(NP) <48.003 & Z(NP)>47.886 & +IF(Y(NP) > -0.9632 & Y(NP) <-0.826 & Z(NP) <50.994 & Z(NP)>47.6201 & ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' test 19'; + write(*,*)' half med test 10'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.6105 & Y(NP) <-0.4566 & Z(NP) <54.284 & Z(NP)>54.021 & +IF(Y(NP) > -0.823 & Y(NP) <-0.7306 & Z(NP) <54.116 & Z(NP)>53.998 & ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' test 20'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.7275 & Y(NP) <-0.4566 & Z(NP) <54.379 & Z(NP)>54.286 & - ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' test 21'; + write(*,*)' half med test 11'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] +"IF(Y(NP) > -0.7274 & Y(NP) <-0.4566 & Z(NP) <47.884 & Z(NP)>47.621 & +" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ +" write(*,*)' iso air test 1'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.7274 & Y(NP) <-0.7266 & Z(NP) <54.284 & Z(NP)>47.621 & +" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ +" write(*,*)' iso air test 2'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +" stop; +"] +"IF(Y(NP) > -0.7274 & Y(NP) <-0.6893 & Z(NP) <51.103 & Z(NP)>47.621 & +" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ +" write(*,*)' iso air test 3'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.7274 & Y(NP) <-0.6106 & Z(NP) <54.284 & Z(NP)>54.021 & +" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ +" write(*,*)' iso air test 4'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.6142 & Y(NP) <-0.4566 & Z(NP) <48.00 & Z(NP)>47.621 & +" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ +" write(*,*)' iso air test 5'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.4936 & Y(NP) <-0.4566 & Z(NP) <51.2 & Z(NP)>47.621 & +" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ +" write(*,*)' iso air test 6'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.7274 & Y(NP) <-0.4566 & Z(NP) <54.375 & Z(NP)>54.286 & +" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ +" write(*,*)' iso med test 7'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.6104 & Y(NP) <-0.4566 & Z(NP) <54.375 & Z(NP)>51.206 & +" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ +" write(*,*)' iso med test 8'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.7265 & Y(NP) <-0.4938 & Z(NP) <54.02 & Z(NP)>51.105 & +" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ +" write(*,*)' iso med test 9'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.6892 & Y(NP) <-0.4938 & Z(NP) <51.103 & Z(NP)>48.005 & +" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ +" write(*,*)' iso med test 10'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.6892 & Y(NP) <-0.6143 & Z(NP) <48.003 & Z(NP)>47.886 & +" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ +" write(*,*)' iso med test 11'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] "Go once through this loop for each 'new' electron whose charge and "energy has not been checked @@ -6586,111 +6592,117 @@ $EVALUATE GMFPR0 USING GMFP(GLE);] :PTRANS: LOOP["PHOTON TRANSPORT LOOP" -"IF(Y(NP) > -0.73059 & Y(NP) < -0.689 & -" Z(NP) > 50.998 & ABS(X(NP))<10.0 & MED(IR(NP))=2)[ -" write(*,*)' test 1'; -" write(*,*)' e,x,y,z,ir ',E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.8258 & Y(NP) < -0.689 & -" Z(NP) > 47.716 & Z(NP) < 47.979 & ABS(X(NP))<10.0 & MED(IR(NP))=2)[ -" write(*,*)' test 2'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.693 & Y(NP) < -0.689 & ABS(X(NP))<10.0 & Z(NP) > 47.716 & -" MED(IR(NP))=2)[ -" write(*,*)' test 3'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.9259 & Y(NP) <-0.8234 & Z(NP) >53.998 & ABS(X(NP))<10.0 & -" MED(IR(NP))=2)[ -" write(*,*)' test 4'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.9259 & Y(NP) <-0.7306 & Z(NP) <53.996 & Z(NP)>47.981 & -" MED(IR(NP))=1)[ -" write(*,*)' test 5'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.9259 & Y(NP) <-0.6933 & Z(NP) <50.996 & Z(NP)>47.981 & -" MED(IR(NP))=1)[ -" write(*,*)' test 6'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.9632 & Y(NP) <-0.689 & Z(NP) <47.714 & Z(NP)>47.6201 & -" MED(IR(NP))=1)[ -" write(*,*)' test 7'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.9632 & Y(NP) <-0.826 & Z(NP) <50.994 & Z(NP)>47.6201 & -" MED(IR(NP))=1)[ -" write(*,*)' test 8'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.823 & Y(NP) <-0.7306 & Z(NP) <54.116 & Z(NP)>53.998 & -" MED(IR(NP))=1)[ -" write(*,*)' test 9'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -IF(Y(NP) > -0.72751 & Y(NP) <-0.728 & Z(NP) <54.284 & Z(NP)>47.621 & - MED(IR(NP))=2)[ - write(*,*)' test 10'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.72751 & Y(NP) <-0.690 & Z(NP) <51.103 & Z(NP)>47.621 & - ABS(X(NP))<10.0 & MED(IR(NP))=2)[ - write(*,*)' test 11'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.6142 & Y(NP) <-0.4566 & Z(NP) <48.00 & Z(NP)>47.621 & - ABS(X(NP))<10.0 & MED(IR(NP))=2)[ - write(*,*)' test 12'; +IF(Y(NP) > -0.73059 & Y(NP) < -0.689 & + Z(NP) > 50.998 & ABS(X(NP))<10.0 & MED(IR(NP))=2)[ + write(*,*)' half air test 1'; + write(*,*)' e,x,y,z,ir ',E(NP),X(NP),Y(NP),Z(NP),IR(NP); +] +IF(Y(NP) > -0.8258 & Y(NP) < -0.689 & + Z(NP) > 47.716 & Z(NP) < 47.979 & ABS(X(NP))<10.0 & MED(IR(NP))=2)[ + write(*,*)' half air test 2'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.493 & Y(NP) <-0.4566 & Z(NP) <51.204 & Z(NP)>47.621 & - ABS(X(NP))<10.0 & MED(IR(NP))=2)[ - write(*,*)' test 13'; +IF(Y(NP) > -0.693 & Y(NP) < -0.689 & ABS(X(NP))<10.0 & Z(NP) > 47.716 & + MED(IR(NP))=2)[ + write(*,*)' half air test 3'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.7276 & Y(NP) <-0.4566 & Z(NP) <47.884 & Z(NP)>47.621 & - ABS(X(NP))<10.0 & MED(IR(NP))=2)[ - write(*,*)' test 14'; +IF(Y(NP) > -0.9259 & Y(NP) <-0.8234 & Z(NP) >53.998 & ABS(X(NP))<10.0 & + MED(IR(NP))=2)[ + write(*,*)' half air test 4'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.7276 & Y(NP) <-0.6106 & Z(NP) <54.284 & Z(NP)>54.021 & - ABS(X(NP))<10.0 & MED(IR(NP))=2)[ - write(*,*)' test 15'; +IF(Y(NP) > -0.9632 & Y(NP) < -0.689 & Z(NP) >54.1161 & ABS(X(NP))<10.0 & + MED(IR(NP))=2)[ + write(*,*)' half air test 5'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.7265 & Y(NP) <-0.4566 & Z(NP) <54.019 & Z(NP)>51.206 & - ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' test 16'; +IF(Y(NP) > -0.9632 & Y(NP) < -0.926 & Z(NP) >50.996 & ABS(X(NP))<10.0 & + MED(IR(NP))=2)[ + write(*,*)' half air test 6'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.6892 & Y(NP) <-0.4938 & Z(NP) <51.103 & Z(NP)>48.005 & - ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' test 17'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +IF(Y(NP) > -0.9259 & Y(NP) <-0.7306 & Z(NP) <53.996 & Z(NP)>47.981 & + ABS(X(NP))<10.0 & MED(IR(NP))=1)[ + write(*,*)' half med test 7'; + write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.7265 & Y(NP) <-0.4938 & Z(NP) <51.206 & Z(NP)>51.105 & - ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' test 18'; +IF(Y(NP) > -0.9259 & Y(NP) <-0.6933 & Z(NP) <50.996 & Z(NP)>47.981 & + ABS(X(NP))<10.0 & MED(IR(NP))=1)[ + write(*,*)' half med test 8'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.6892 & Y(NP) <-0.6143 & Z(NP) <48.003 & Z(NP)>47.886 & - ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' test 19'; +IF(Y(NP) > -0.9632 & Y(NP) <-0.689 & Z(NP) <47.714 & Z(NP)>47.6201 & + ABS(X(NP))<10.0 & MED(IR(NP))=1)[ + write(*,*)' half med test 9'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.6105 & Y(NP) <-0.4566 & Z(NP) <54.284 & Z(NP)>54.021 & +IF(Y(NP) > -0.9632 & Y(NP) <-0.826 & Z(NP) <50.994 & Z(NP)>47.6201 & ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' test 20'; + write(*,*)' half med test 10'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] -IF(Y(NP) > -0.7275 & Y(NP) <-0.4566 & Z(NP) <54.379 & Z(NP)>54.286 & +IF(Y(NP) > -0.823 & Y(NP) <-0.7306 & Z(NP) <54.116 & Z(NP)>53.998 & ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' test 21'; + write(*,*)' half med test 11'; write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); ] +"IF(Y(NP) > -0.7274 & Y(NP) <-0.4566 & Z(NP) <47.884 & Z(NP)>47.621 & +" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ +" write(*,*)' iso air test 1'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.7274 & Y(NP) <-0.7266 & Z(NP) <54.284 & Z(NP)>47.621 & +" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ +" write(*,*)' iso air test 2'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.7274 & Y(NP) <-0.6893 & Z(NP) <51.103 & Z(NP)>47.621 & +" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ +" write(*,*)' iso air test 3'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +" stop; +"] +"IF(Y(NP) > -0.7274 & Y(NP) <-0.6106 & Z(NP) <54.284 & Z(NP)>54.021 & +" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ +" write(*,*)' iso air test 4'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.6142 & Y(NP) <-0.4566 & Z(NP) <48.00 & Z(NP)>47.621 & +" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ +" write(*,*)' iso air test 5'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.4936 & Y(NP) <-0.4566 & Z(NP) <51.2 & Z(NP)>47.621 & +" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ +" write(*,*)' iso air test 6'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.7274 & Y(NP) <-0.4566 & Z(NP) <54.375 & Z(NP)>54.286 & +" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ +" write(*,*)' iso med test 7'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.6104 & Y(NP) <-0.4566 & Z(NP) <54.375 & Z(NP)>51.206 & +" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ +" write(*,*)' iso med test 8'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.7265 & Y(NP) <-0.4938 & Z(NP) <54.02 & Z(NP)>51.105 & +" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ +" write(*,*)' iso med test 9'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.6892 & Y(NP) <-0.4938 & Z(NP) <51.103 & Z(NP)>48.005 & +" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ +" write(*,*)' iso med test 10'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] +"IF(Y(NP) > -0.6892 & Y(NP) <-0.6143 & Z(NP) <48.003 & Z(NP)>47.886 & +" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ +" write(*,*)' iso med test 11'; +" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); +"] IF (MEDIUM.EQ.0)[TSTEP=VACDST;] ELSE [$SET-RHOF; "DENSITY RATIO SCALING TEMPLATE" From 39d85c951ce69e2d50a1e37fae8b3176aeed6edb Mon Sep 17 00:00:00 2001 From: Blake Walters Date: Fri, 4 Mar 2022 16:39:29 -0800 Subject: [PATCH 08/14] Add new leaf orientation option for synchdmlc Add $SYNCHDMLC_ORIENT options to flip leaf numbering and cross-sections with respect to the axis perpendicular to the opening axis, so that the MLC coordinate system matches that in the manufacturer (Varian) specs for 120MLC and HD120. This reflection reverses the order of leaf numbering, hence leaf opening sequences are automatically "flipped" so that the opening coordinate applied to leaf i is instead applied to leaf N-i+1, where N is the total number of leaves. See the updated BEAMnrc manual for more details. Also, add new ORIENT=2,3 options to SYNCHDMLC gui --- .../omega/beamnrc/CMs/SYNCHDMLC_cm.mortran | 103 ++++++++---- .../omega/progs/gui/beamnrc/synchdmlc.tcl | 154 +++++++++++++++--- 2 files changed, 200 insertions(+), 57 deletions(-) diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran index 9272365c0..417ecbed7 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran @@ -238,6 +238,13 @@ "I> "I> ORIENT_$SYNCHDMLC = 0 for leaves parallel to Y direction "I> = 1 for leaves parallel to X direction +"I> = 2 same as 0 but with leaf numbering and cross- +"I> sections reversed--Note: This makes the +"I> +ve leaves equivalent to leaf bank A +"I> -ve leaves equivalent to bank B in TrueBeam +"I> specs +"I> = 3 same as 1 but with leaf numbering and cross- +"I> sections reversed similar to option 2 "I> NGROUP_$SYNCHDMLC = number of groups of adjacent leaves where "I> all leaves in a group are: "I> 1. FULL leaves @@ -488,19 +495,18 @@ "I> "I> Repeat 14 until coordinates of all leaves are defined once. Leaves "I> are numbered 1,2,...TOT_LEAF_$SYNCHDMLC, where numbering goes from leaf -"I> 1 to leaf TOT_LEAF_$SYNCHDMLC. Convention is lower to upper or -"I> left to right depending on ORIENT_$SYNCHDMLC i.e from negative to -"I> positive. +"I> 1 to leaf TOT_LEAF_$SYNCHDMLC. Convention is -ve to +ve +"I> (ORIENT_$SYNCHDMLC=0,2) or +ve to -ve (ORIENT_$SYNCHDMLC=1,3) "I> "I> 14a NEG_$SYNCHDMLC, POS_$SYNCHDMLC, NUM_$SYNCHDMLC (2F15.5,I5) "I> -"I> NEG_$SYNCHDMLC: Min. Y (ORIENT_$SYNCHDMLC=0) or X (ORIENT_$SYNCHDMLC=1) -"I> of front opening in leaf I (ie the opening at -"I> ZMIN_$SYNCHDMLC) if ENDTYPE=1, or of rounded end -"I> of leaf I if ENDTYPE=0. -"I> POS_$SYNCHDMLC: Max. Y (ORIENT_$SYNCHDMLC=0) or X (ORIENT_$SYNCHDMLC=1) -"I> of front opening in leaf I if ENDTYPE=1, or of +"I> NEG_$SYNCHDMLC: Min. Y (ORIENT_$SYNCHDMLC=0,2) or X +"I> (ORIENT_$SYNCHDMLC=1,3) of front opening in leaf I (ie +"I> the opening at ZMIN_$SYNCHDMLC) if ENDTYPE=1, or of "I> rounded end of leaf I if ENDTYPE=0. +"I> POS_$SYNCHDMLC: Max. Y (ORIENT_$SYNCHDMLC=0,2) or X +"I> (ORIENT_$SYNCHDMLC=1,3) of front opening in leaf I if +"I> ENDTYPE=1, or of rounded end of leaf I if ENDTYPE=0. "I> NUM_$SYNCHDMLC: Apply NEG_$SYNCHDMLC and POS_$SYNCHDMLC to leaves "I> I,...,I+NUM_$SYNCHDMLC-1. Defaults to 1 if set <=0. "I> Defaults to TOT_LEAF_$SYNCHDMLC-I+1 if set > @@ -535,13 +541,13 @@ "I> number is compared to a random number on (0,1) at "I> the start of each history; if the random number is "I> <= INDEX_$SYNCHDMLC(I), then field I is used. -"I> NEG_$SYNCHDMLC: Min. Y (ORIENT_$SYNCHDMLC=0) or -"I> X (ORIENT_$SYNCHDMLC=1) +"I> NEG_$SYNCHDMLC: Min. Y (ORIENT_$SYNCHDMLC=0,2) or +"I> X (ORIENT_$SYNCHDMLC=1,3) "I> of front opening in leaf (ie the opening at "I> ZMIN_$SYNCHDMLC) if ENDTYPE=1, or of rounded end "I> of leaf if ENDTYPE=0 for leaf J in field I. -"I> POS_$SYNCHDMLC: Max. Y (ORIENT_$SYNCHDMLC=0) or -"I> X (ORIENT_$SYNCHDMLC=1) +"I> POS_$SYNCHDMLC: Max. Y (ORIENT_$SYNCHDMLC=0,2) or +"I> X (ORIENT_$SYNCHDMLC=1,3) "I> of front opening in leaf if ENDTYPE=1, or of "I> rounded end of leaf if ENDTYPE=0 for leaf J in "I> field I. @@ -575,10 +581,10 @@ "I> rejection in leaf material when the particle X position "I> is < min X of all leaf openings (not including leaf "I> ends) or > max X of leaf openings (not including ends) -"I> (ORIENT_$SYNCHDMLC=1) or if the particle Y position +"I> (ORIENT_$SYNCHDMLC=1,3) or if the particle Y position "I> is < min Y of all leaf openings (not including leaf "I> ends) or > max Y of leaf openings (not including ends) -"I> (ORIENT_$SYNCHDMLC=0). This approximation is designed +"I> (ORIENT_$SYNCHDMLC=0,2). This approximation is designed "I> to make range rejection more efficient deep in the "I> leaves, while still preserving accurate transport "I> in the leaf ends. Note that if you have significant @@ -762,9 +768,19 @@ parameter (one = 1); IRL = IR(NP); "local region number (absolute)" IR_$SYNCHDMLC = IRL - IRSTART_$SYNCHDMLC + 1; "rel. local region number" "IR_$SYNCHDMLC = IRL - IRSTART_$SYNCHDMLC; rel. local region number" -IF(ORIENT_$SYNCHDMLC=1) [ - XYL(1)=Y(NP); XYL(2)=X(NP);UVL(1)=V(NP);UVL(2)=U(NP);] -ELSE[ XYL(1)=X(NP); XYL(2)=Y(NP);UVL(1)=U(NP);UVL(2)=V(NP);] + +IF(ORIENT_$SYNCHDMLC=0)[ + XYL(1)=X(NP); XYL(2)=Y(NP);UVL(1)=U(NP);UVL(2)=V(NP); +] +ELSEIF(ORIENT_$SYNCHDMLC=1)[ + XYL(1)=Y(NP); XYL(2)=X(NP);UVL(1)=V(NP);UVL(2)=U(NP); +] +ELSEIF(ORIENT_$SYNCHDMLC=2)[ + XYL(1)=-X(NP); XYL(2)=Y(NP);UVL(1)=-U(NP);UVL(2)=V(NP); +] +ELSEIF(ORIENT_$SYNCHDMLC=3)[ + XYL(1)=-Y(NP); XYL(2)=X(NP);UVL(1)=-V(NP);UVL(2)=U(NP); +] ; "write(*,*)' in howfar, ir, med ',IR_$SYNCHDMLC,med(IRL); @@ -1090,9 +1106,18 @@ INTEGER NX,NY,NZ, "T>Indices of subregions DOUBLE PRECISION XYL(2), XYFL(2), ZFL, UVL(2), XoN, XoP, Zo, TEMP1, TEMP2, TEMP3, TEMP4, HOLE; -IF(ORIENT_$SYNCHDMLC=1) - [ XYL(1)=Y(NP); XYL(2)=X(NP);UVL(1)=V(NP);UVL(2)=U(NP);] -ELSE[ XYL(1)=X(NP); XYL(2)=Y(NP);UVL(1)=U(NP);UVL(2)=V(NP);]; +IF(ORIENT_$SYNCHDMLC=0)[ + XYL(1)=X(NP); XYL(2)=Y(NP);UVL(1)=U(NP);UVL(2)=V(NP); +] +ELSEIF(ORIENT_$SYNCHDMLC=1)[ + XYL(1)=Y(NP); XYL(2)=X(NP);UVL(1)=V(NP);UVL(2)=U(NP); +] +ELSEIF(ORIENT_$SYNCHDMLC=2)[ + XYL(1)=-X(NP); XYL(2)=Y(NP);UVL(1)=-U(NP);UVL(2)=V(NP); +] +ELSEIF(ORIENT_$SYNCHDMLC=3)[ + XYL(1)=-Y(NP); XYL(2)=X(NP);UVL(1)=-V(NP);UVL(2)=U(NP); +] IF (IDIR=1) [ "particle entering this CM through front face (upstream)" IF(N_GAP_$SYNCHDMLC = 0) [ "no air gap this CM" @@ -1208,12 +1233,12 @@ OUTPUT TITLE_$SYNCHDMLC;(' ',60A1); "II. CHOOSE THE SYNCHDMLC ORIENTATION " "============================== " -OUTPUT; (' Input leaf orientation (0=parallel to y, 1=parallel to x) and '/ +OUTPUT; (' Input leaf orientation (0,2=parallel to y, 1,3=parallel to x) and '/ ' no. of groups of leaves with equal width on one line'/' :',$); MINPUT ($SYNCHDMLC) ORIENT_$SYNCHDMLC, NGROUP_$SYNCHDMLC, MODE_$SYNCHDMLC; (3I5); OUTPUT ORIENT_$SYNCHDMLC,NGROUP_$SYNCHDMLC,MODE_$SYNCHDMLC; (3I5/); -IF(ORIENT_$SYNCHDMLC~=1) [ +IF(ORIENT_$SYNCHDMLC<0 | ORIENT_$SYNCHDMLC>3) [ ORIENT_$SYNCHDMLC=0; OUTPUT;(/' Orientation defaults to 0.'/); ]; @@ -2119,8 +2144,8 @@ IF(check_full_qtr) [ "Ya never know" " III. START POSITION OF LEAVES" " =============================" ; -OUTPUT ZMIN_$SYNCHDMLC; (/' Input the starting X (ORIENT_$SYNCHDMLC=0) or '/ - ' Y (ORIENT_$SYNCHDMLC=1) position at z = ',F12.5, ' cm : ', $); +OUTPUT ZMIN_$SYNCHDMLC; (/' Input the starting X (ORIENT_$SYNCHDMLC=0,2) or '/ + ' Y (ORIENT_$SYNCHDMLC=1,3) position at z = ',F12.5, ' cm : ', $); MINPUT ($SYNCHDMLC) START_$SYNCHDMLC; (F15.0); OUTPUT START_$SYNCHDMLC; (F12.5); @@ -2611,8 +2636,8 @@ IF(TOT_LEAF_$SYNCHDMLC>0) [ DO J = 1, 7 [ SURPARA1_$SYNCHDMLC(I,J)=YREG_$SYNCHDMLC(I,J)/TEMP1; "OUTPUT I, J, YREG_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" - write(*,*)' i, leafis, j, yreg ',i,LEAFTYPE_$SYNCHDMLC(I),j, - YREG_$SYNCHDMLC(I,J); + "write(*,*)' i, leafis, j, yreg ',i,LEAFTYPE_$SYNCHDMLC(I),j," + "YREG_$SYNCHDMLC(I,J);" " OUTPUT I, J, SURPARA1_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" ];"End of J Loop" ]; "End of K Loop" @@ -2688,7 +2713,7 @@ IF(MODE_$SYNCHDMLC=1|MODE_$SYNCHDMLC=2)["dynamic or step-and-shoot leaf inputs" ] ELSE[ OUTPUT; (' Input for MLC A and B leaf tips '/); -IF(ORIENT_$SYNCHDMLC=1)[ +IF(ORIENT_$SYNCHDMLC=1 | ORIENT_$SYNCHDMLC=3)[ IF(ENDTYPE_$SYNCHDMLC=1)[ OUTPUT;(' Input min. X, max. X of top of opening in leaves,'); ] @@ -2809,7 +2834,7 @@ DO IR_$SYNCHDMLC = 1,N_$SYNCHDMLC ["loop through regions to get information" ; IF(IGNOREGAPS_$SYNCHDMLC=1 & IREJCT_GLOBAL>0)[ - IF(ORIENT_$SYNCHDMLC=1)["leaves parallel to X" + IF(ORIENT_$SYNCHDMLC=1 | ORIENT_$SYNCHDMLC=3)["leaves parallel to X" OUTPUT;(/' *******Range rejection in $SYNCHDMLC will ignore all'/ ' air gaps if the particle is in the leaves and has'/ ' X < min. X of leaf openings (not including leaf ends)'/ @@ -3345,7 +3370,7 @@ IF(N_GAP_$SYNCHDMLC~=0) [ ZMIN_$SYNCHDMLC-Z_min_CM(ICM_$SYNCHDMLC); ]; WRITE(IOUTLIST,122) ZTHICK_$SYNCHDMLC; -IF(ORIENT_$SYNCHDMLC~=0) [ +IF(ORIENT_$SYNCHDMLC~=0 & ORIENT_$SYNCHDMLC~=2) [ WRITE(IOUTLIST,123) 'X'; ] ELSE[ @@ -3376,7 +3401,7 @@ WRITE(IOUTLIST,128) (LEAFWIDTH_$SYNCHDMLC(I),I=1,3), HOLEPOS_ISO_$SYNCHDMLC, (ZRAILTOP_$SYNCHDMLC(I),I=1,3), (ZRAILBOT_$SYNCHDMLC(I),I=1,3); -IF(ORIENT_$SYNCHDMLC~=0) [ +IF(ORIENT_$SYNCHDMLC~=0 & ORIENT_$SYNCHDMLC~=2) [ WRITE(IOUTLIST,129)'Y','X'; ] ELSE [ @@ -3451,7 +3476,7 @@ IF(N_GAP_$SYNCHDMLC~=0) [ ]; IF(IGNOREGAPS_$SYNCHDMLC=1 & IREJCT_GLOBAL>0)[ - IF(ORIENT_$SYNCHDMLC=1)["leaves parallel to X" + IF(ORIENT_$SYNCHDMLC=1 | ORIENT_$SYNCHDMLC=3)["leaves parallel to X" WRITE(IOUTLIST,'(/'' *******Range rejection in $SYNCHDMLC will ignore all''/ '' air gaps if the particle is in the leaves and has''/ '' X < min. X of leaf openings (not including leaf ends)''/ @@ -3572,8 +3597,18 @@ IF(IR_$SYNCHDMLC=4) [ "in the air gap at the top" ] ELSE [ - IF(ORIENT_$SYNCHDMLC=1) [ XYL1=Y(NP);XYL2=X(NP);UVL1=V(NP);UVL2=U(NP); ] - ELSE [ XYL1=X(NP);XYL2=Y(NP);UVL1=U(NP);UVL2=V(NP);]; + IF(ORIENT_$SYNCHDMLC=0) [ + XYL1=X(NP);XYL2=Y(NP);UVL1=U(NP);UVL2=V(NP); + ] + ELSEIF(ORIENT_$SYNCHDMLC=1) [ + XYL1=Y(NP);XYL2=X(NP);UVL1=V(NP);UVL2=U(NP); + ] + ELSEIF(ORIENT_$SYNCHDMLC=2) [ + XYL1=-X(NP);XYL2=Y(NP);UVL1=-U(NP);UVL2=V(NP); + ] + ELSEIF(ORIENT_$SYNCHDMLC=3) [ + XYL1=-Y(NP);XYL2=X(NP);UVL1=-V(NP);UVL2=U(NP); + ] IF(IGNOREGAPS_$SYNCHDMLC=1 & XYL2 < MIN_PLANE_$SYNCHDMLC & XYL1 > SURPARA1_$SYNCHDMLC(1,1)*(Z(NP)-ZFOCUS_$SYNCHDMLC(1)) & diff --git a/HEN_HOUSE/omega/progs/gui/beamnrc/synchdmlc.tcl b/HEN_HOUSE/omega/progs/gui/beamnrc/synchdmlc.tcl index fd9b88ab2..9f2dede13 100644 --- a/HEN_HOUSE/omega/progs/gui/beamnrc/synchdmlc.tcl +++ b/HEN_HOUSE/omega/progs/gui/beamnrc/synchdmlc.tcl @@ -345,14 +345,30 @@ proc edit_SYNCHDMLC { id zmax } { # for range rejection in leaves frame $top.inp2 -bd 2 frame $top.inp2.left - radiobutton $top.inp2.left.r1 -text "Leaves parallel to y"\ + frame $top.inp2.left.ll + checkbutton $top.inp2.left.ll.help -bitmap @$GUI_DIR/help_icon.xbm \ + -command "help_leaf_mfg_specs_synchdmlc [winfo parent $top.inp2.left]" + pack $top.inp2.left.ll.help -padx 5 + frame $top.inp2.left.l + label $top.inp2.left.l.l1 -text {Leaves || to Y} + label $top.inp2.left.l.l2 -text {Leaves || to X} + pack $top.inp2.left.l.l1 $top.inp2.left.l.l2 -side top + frame $top.inp2.left.m + radiobutton $top.inp2.left.m.r1 -text "default orient."\ -variable cmval($id,2,0) -value 0 - radiobutton $top.inp2.left.r2 -text "Leaves parallel to x"\ + radiobutton $top.inp2.left.m.r2 -text "default orient."\ -variable cmval($id,2,0) -value 1 - pack $top.inp2.left.r1 $top.inp2.left.r2 -side top + pack $top.inp2.left.m.r1 $top.inp2.left.m.r2 -side top + frame $top.inp2.left.r + radiobutton $top.inp2.left.r.r1 -text "mfg orient."\ + -variable cmval($id,2,0) -value 2 + radiobutton $top.inp2.left.r.r2 -text "mfg orient."\ + -variable cmval($id,2,0) -value 3 + pack $top.inp2.left.r.r1 $top.inp2.left.r.r2 -side top + pack $top.inp2.left.ll $top.inp2.left.l $top.inp2.left.m $top.inp2.left.r -side left + frame $top.inp2.right - checkbutton $top.inp2.right.c1 -text "Ignore air gaps for range \ - rejection in leaves" -variable cmval($id,17,4) + checkbutton $top.inp2.right.c1 -text "Ignore air gaps for range rejection" -variable cmval($id,17,4) button $top.inp2.right.help -bitmap @$GUI_DIR/help_icon.xbm \ -command "help_ignoregaps_synchdmlc [winfo parent $top.inp2.right]" pack $top.inp2.right.help $top.inp2.right.c1 -side right @@ -735,7 +751,7 @@ proc define_synchdmlc_leaves { id } { frame $top.f -bd 10 set w $top.f - if $cmval($id,2,0)==1 { + if {$cmval($id,2,0)==1 || $cmval($id,2,0)==3} { set porient X set xorient Y } else { @@ -1938,7 +1954,7 @@ proc define_synchdmlc_openings { id } { frame $top.f -bd 10 set w $top.f - if $cmval($id,2,0)==1 { + if {$cmval($id,2,0)==1 || $cmval($id,2,0)==3} { set orientation X } else { set orientation Y @@ -2315,7 +2331,7 @@ proc draw_SYNCHDMLC { id } { # put the canvas up set ncan 3 - set width 150.0 + set width 180.0 set canwidth [expr $width+150.0] set scrlheight [expr 2*$canwidth] set scrlwidth [expr 2*$canwidth] @@ -2341,7 +2357,7 @@ proc draw_SYNCHDMLC { id } { # Put some text in the upper left corner, just to fill the gap. if {$cmval($id,2,2)==1 | $cmval($id,2,2)==2} { - .synchdmlc$id.show.frm.can create text 225 225 -text "xz\ + .synchdmlc$id.show.frm.can create text 160 160 -text "xz\ cross-section shows only those leaves that\ are intersected by y=0, and yz cross-section shows only those\ leaves intersected by x=0. In the case where only a portion\ @@ -2353,9 +2369,9 @@ proc draw_SYNCHDMLC { id } { NOTE: This is a dynamic or step-and-shoot delivery, with leaf opening\ coordinates defined in a file. Leaf opening coordinates are shown for the\ first field defined in this file."\ - -font $helvfont -width 300 + -font $helvfont -width 300 } else { - .synchdmlc$id.show.frm.can create text 225 225 -text "xz\ + .synchdmlc$id.show.frm.can create text 160 160 -text "xz\ cross-section shows only those leaves that\ are intersected by y=0, and yz cross-section shows only those\ leaves intersected by x=0. In the case where only a portion\ @@ -2363,7 +2379,7 @@ NOTE: This is a dynamic or step-and-shoot delivery, with leaf opening\ is shown. The xy view is at a plane at Z=ZMIN\ (straight leaf ends) or Z=ZMIN+ZTHICK/2 (cylindrical\ leaf ends)."\ - -font $helvfont -width 300 + -font $helvfont -width 300 } set xscale [expr $width/double(abs($xrange(1)-$xrange(0)))] @@ -2416,7 +2432,7 @@ NOTE: This is a dynamic or step-and-shoot delivery, with leaf opening\ add_air $id .synchdmlc$id.show.frm.can.two $xrange(0) $zrange(0)\ $xscale $zscale $l $m - if $cmval($id,2,0)==0 { + if {$cmval($id,2,0)==0 || $cmval($id,2,0)==2} { add_SYNCHDMLC_sides $id $xscale $zscale $xrange(0) $zrange(0) $zrange(1)\ $l $m .synchdmlc$id.show.frm.can.two } else { @@ -2458,7 +2474,7 @@ NOTE: This is a dynamic or step-and-shoot delivery, with leaf opening\ add_air $id .synchdmlc$id.show.frm.can.three $yrange(0) $zrange(0)\ $yscale $zscale $l $m - if $cmval($id,2,0)==0 { + if {$cmval($id,2,0)==0 || $cmval($id,2,0)==2} { add_SYNCHDMLC_ends $id $yscale $zscale $yrange(0) $zrange(0) $zrange(1)\ $l $m .synchdmlc$id.show.frm.can.three } else { @@ -2577,6 +2593,17 @@ proc add_SYNCHDMLC_xy {id xscale yscale xmin ymin l m parent_w} { } incr i } + #now flip leaf opening sequence if ORIENT=2 or 3 + if {$cmval($id,2,0) == 2 || $cmval($id,2,0) == 3} { + for {set i 1} {$i <= $nleaf($id)/2} {incr i} { + set tmp_coord $neg($i) + set neg($i) $neg([expr $nleaf($id)-$i+1]) + set neg([expr $nleaf($id)-$i+1]) $tmp_coord + set tmp_coord $pos($i) + set pos($i) $pos([expr $nleaf($id)-$i+1]) + set pos([expr $nleaf($id)-$i+1]) $tmp_coord + } + } set color [lindex $colorlist $med(leaves)] @@ -2635,7 +2662,7 @@ proc add_SYNCHDMLC_xy {id xscale yscale xmin ymin l m parent_w} { set wg(5) $cmval($id,31,2) set wtot(5) [expr $cmval($id,31,0)+$cmval($id,31,1)] } - if {$cmval($id,2,0)==1} { + if {$cmval($id,2,0)==1 || $cmval($id,2,0)==3} { # leaves parallel to x set lstart $cmval($id,9) set rmin [expr (-$cmval($id,0)-$xmin)*$xscale+$l] @@ -2645,9 +2672,17 @@ proc add_SYNCHDMLC_xy {id xscale yscale xmin ymin l m parent_w} { set color [lindex $colorlist $med(leaves)] set a [expr ($neg($i)-$xmin)*$xscale+$l] - set b [expr ($lstart-$ymin)*$yscale+$m] + if {$cmval($id,2,0)==3} { + set b [expr (-$lstart-$ymin)*$yscale+$m] + } else { + set b [expr ($lstart-$ymin)*$yscale+$m] + } set c [expr ($pos($i)-$xmin)*$xscale+$l] - set d [expr ($lstart+$wtot($type($i))-$ymin)*$yscale+$m] + if {$cmval($id,2,0)==3} { + set d [expr (-($lstart+$wtot($type($i)))-$ymin)*$yscale+$m] + } else { + set d [expr ($lstart+$wtot($type($i))-$ymin)*$yscale+$m] + } $parent_w create rectangle $rmin $b $a $d -fill $color -outline black $parent_w create rectangle $rmax $b $c $d -fill $color -outline black @@ -2657,10 +2692,19 @@ proc add_SYNCHDMLC_xy {id xscale yscale xmin ymin l m parent_w} { #draw the air space set color [lindex $colorlist $med(in)] set a [expr ($neg($i)-$xmin)*$xscale+$l] - set b [expr ($lstart+$wtot($type($i))-$ymin)*$yscale+$m] + if {$cmval($id,2,0)==3} { + set b [expr (-($lstart+$wtot($type($i)))-$ymin)*$yscale+$m] + } else { + set b [expr ($lstart+$wtot($type($i))-$ymin)*$yscale+$m] + } set c [expr ($pos($i)-$xmin)*$xscale+$l] - set d [expr ($lstart+$wtot($type($i))+$cmval($id,10) \ + if {$cmval($id,2,0)==3} { + set d [expr (-($lstart+$wtot($type($i))+$cmval($id,10) \ + -$wt($type([expr $i+1])))-$ymin)*$yscale+$m] + } else { + set d [expr ($lstart+$wtot($type($i))+$cmval($id,10) \ -$wt($type([expr $i+1]))-$ymin)*$yscale+$m] + } $parent_w create rectangle $rmin $b $a $d -fill $color -outline {} $parent_w create rectangle $rmax $b $c $d -fill $color -outline {} } @@ -2678,9 +2722,17 @@ proc add_SYNCHDMLC_xy {id xscale yscale xmin ymin l m parent_w} { # now make rectangles for the top view of the leaf set a [expr ($neg($i)-$ymin)*$yscale+$m] - set b [expr ($lstart-$xmin)*$xscale+$l] + if {$cmval($id,2,0)==2} { + set b [expr (-$lstart-$xmin)*$xscale+$l] + } else { + set b [expr ($lstart-$xmin)*$xscale+$l] + } set c [expr ($pos($i)-$ymin)*$yscale+$m] - set d [expr ($lstart+$wtot($type($i))-$xmin)*$xscale+$l] + if {$cmval($id,2,0)==2} { + set d [expr (-($lstart+$wtot($type($i)))-$xmin)*$xscale+$l] + } else { + set d [expr ($lstart+$wtot($type($i))-$xmin)*$xscale+$l] + } $parent_w create rectangle $b $rmax $d $c -fill $color -outline black $parent_w create rectangle $b $a $d $rmin -fill $color -outline black if {$i<$nleaf($id)} { @@ -2689,10 +2741,19 @@ proc add_SYNCHDMLC_xy {id xscale yscale xmin ymin l m parent_w} { #draw the air space set color [lindex $colorlist $med(in)] set a [expr ($neg($i)-$ymin)*$yscale+$m] - set b [expr ($lstart-$xmin)*$xscale+$l] + if {$cmval($id,2,0)==2} { + set b [expr (-$lstart-$xmin)*$xscale+$l] + } else { + set b [expr ($lstart-$xmin)*$xscale+$l] + } set c [expr ($pos($i)-$ymin)*$yscale+$m] - set d [expr ($lstart+$wtot($type($i))+$cmval($id,10) \ + if {$cmval($id,2,0)==2} { + set d [expr (-($lstart+$wtot($type($i))+$cmval($id,10) \ + -$wt($type([expr $i+1])))-$xmin)*$xscale+$l] + } else { + set d [expr ($lstart+$wtot($type($i))+$cmval($id,10) \ -$wt($type([expr $i+1]))-$xmin)*$xscale+$l] + } $parent_w create rectangle $b $rmax $d $c -fill $color -outline {} $parent_w create rectangle $b $a $d $rmin -fill $color -outline {} } @@ -2792,6 +2853,17 @@ proc add_SYNCHDMLC_ends {id xscale zscale xmin zmin zmax l m parent_w} { } incr i } + #now flip leaf opening sequence if ORIENT=2 or 3 + if {$cmval($id,2,0) == 2 || $cmval($id,2,0) == 3} { + for {set i 1} {$i <= $nleaf($id)/2} {incr i} { + set tmp_coord $neg($i) + set neg($i) $neg([expr $nleaf($id)-$i+1]) + set neg([expr $nleaf($id)-$i+1]) $tmp_coord + set tmp_coord $pos($i) + set pos($i) $pos([expr $nleaf($id)-$i+1]) + set pos([expr $nleaf($id)-$i+1]) $tmp_coord + } + } #set up an array of widths and Z positions for the leaf types #FULL leaf @@ -3170,6 +3242,17 @@ proc add_SYNCHDMLC_sides {id yscale zscale ymin zmin zmax l m parent_w} { } incr i } + #now flip leaf opening sequence if ORIENT=2 or 3 + if {$cmval($id,2,0) == 2 || $cmval($id,2,0) == 3} { + for {set i 1} {$i <= $nleaf($id)/2} {incr i} { + set tmp_coord $neg($i) + set neg($i) $neg([expr $nleaf($id)-$i+1]) + set neg([expr $nleaf($id)-$i+1]) $tmp_coord + set tmp_coord $pos($i) + set pos($i) $pos([expr $nleaf($id)-$i+1]) + set pos([expr $nleaf($id)-$i+1]) $tmp_coord + } + } # set up an array of leaf types set k 0; #leaf k @@ -3542,6 +3625,11 @@ proc add_SYNCHDMLC_sides {id yscale zscale ymin zmin zmax l m parent_w} { set y($j) [max_nrc $rmin $y($j)] set y($j) [min_nrc $rmax $y($j)] + #flip cross-sections around Z if ORIENT = 2 or 3 (hope this works!) + if {$cmval($id,2,0)==2 || $cmval($id,2,0)==3} { + set y($j) [expr -1*$y($j)] + } + # set y and z scale and relative position set y($j) [expr ($y($j)-$ymin)*$yscale+$l] set z($j) [expr ($z($j)-$zmin)*$zscale+$m] @@ -3563,6 +3651,9 @@ proc add_SYNCHDMLC_sides {id yscale zscale ymin zmin zmax l m parent_w} { set y($j) [expr ($ls+$hy($type($i),$j))*($z($j)-$zf)/($ztop-$zf)] set y($j) [max_nrc $rmin $y($j)] set y($j) [min_nrc $rmax $y($j)] + if {$cmval($id,2,0)==2 || $cmval($id,2,0)==3} { + set y($j) [expr -1*$y($j)] + } # set y and z scale and relative position set y($j) [expr ($y($j)-$ymin)*$yscale+$l] @@ -3638,6 +3729,23 @@ to have exact transport throughout the entire multi-leaf collimator.} help_dialog $w.help "Help" $text info 0 OK } +proc help_leaf_mfg_specs_synchdmlc { w } { + + set text { +Choose "default orientation" for leaf cross-sections and numbering as shown in\ +the BEAMnrc manual for leaves parallel to Y (ORIENT=0) or X (ORIENT=1). Choose\ +"mfg orientation" to reflect leaves parallel to Y about the X-axis (ORIENT=2)\ +or to reflect leaves parallel to X about the Y-axis (ORIENT=3). The\ +"mfg orientation" option effectively reflects leaf banks so that the MLC\ +coordinate system accords with that used in the manufacturer (Varian)\ +specifications for the 120MLC and HD120 multileaf collimators.\ +Note that because the leaf banks have been reflected, leaf opening sequences\ +are automaticaly "flipped," so that opening coordinates for leaf i are instead\ +applied to leaf N-i+1, where N is the total no. of leaves. See the BEAMnrc\ +Manual for more details.} + help_dialog $w.help "Help" $text info 0 OK +} + proc help_screwdist { w } { # help procedure put here because it is only for SYNCHDMLC From 7c0e351918ea6adec97a867c66eea44cb0f56c6c Mon Sep 17 00:00:00 2001 From: Blake Walters Date: Fri, 11 Mar 2022 13:44:01 -0800 Subject: [PATCH 09/14] Reverse definition of leaf opening sequence Reverse leaf opening sequence definition for option ORIENT_$SYNCHDMLC=2,3 --- .../omega/beamnrc/CMs/SYNCHDMLC_cm.mortran | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran index 417ecbed7..fff689d5c 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran @@ -1180,7 +1180,9 @@ EGS-IO/; DOUBLE PRECISION NEG_$SYNCHDMLC, "T>Leaf B tip POS_$SYNCHDMLC, "T>Leaf A Tip TEMP1, - TEMP2; + TEMP2, + tmp_coord; "a variable to hold values while" + "reversing leaf opening definitions" INTEGER I,J,K,L, "T>DO loop indices IRA, "T>Absolute region number @@ -2700,6 +2702,23 @@ IF(MODE_$SYNCHDMLC=1|MODE_$SYNCHDMLC=2)["dynamic or step-and-shoot leaf inputs" ] J=K; ]WHILE(J<=TOT_LEAF_$SYNCHDMLC); + IF(ORIENT_$SYNCHDMLC>=2)[ + "reverse order of leaf opening coordinates" + DO K=1,TOT_LEAF_$SYNCHDMLC/2[ + tmp_coord = LEAFNEG_$SYNCHDMLC(K+(I-1)*TOT_LEAF_$SYNCHDMLC); + LEAFNEG_$SYNCHDMLC(K+(I-1)*TOT_LEAF_$SYNCHDMLC) = + LEAFNEG_$SYNCHDMLC((TOT_LEAF_$SYNCHDMLC-K+1)+ + (I-1)*TOT_LEAF_$SYNCHDMLC); + LEAFNEG_$SYNCHDMLC((TOT_LEAF_$SYNCHDMLC-K+1)+ + (I-1)*TOT_LEAF_$SYNCHDMLC) = tmp_coord; + tmp_coord = LEAFPOS_$SYNCHDMLC(K+(I-1)*TOT_LEAF_$SYNCHDMLC); + LEAFPOS_$SYNCHDMLC(K+(I-1)*TOT_LEAF_$SYNCHDMLC) = + LEAFPOS_$SYNCHDMLC((TOT_LEAF_$SYNCHDMLC-K+1)+ + (I-1)*TOT_LEAF_$SYNCHDMLC); + LEAFPOS_$SYNCHDMLC((TOT_LEAF_$SYNCHDMLC-K+1)+ + (I-1)*TOT_LEAF_$SYNCHDMLC) = tmp_coord; + ] + ] ] CLOSE(UNIT=mlc_unit); @@ -2761,6 +2780,17 @@ LOOP[ ] I=J; ]WHILE(I<=TOT_LEAF_$SYNCHDMLC);"End of Coordinate inputs for || direction " +IF(ORIENT_$SYNCHDMLC>=2)[ + "reverse leaf opening definitions" + DO I=1,TOT_LEAF_$SYNCHDMLC/2 [ + tmp_coord = LEAFB_$SYNCHDMLC(I); + LEAFB_$SYNCHDMLC(I) = LEAFB_$SYNCHDMLC(TOT_LEAF_$SYNCHDMLC-I+1); + LEAFB_$SYNCHDMLC(TOT_LEAF_$SYNCHDMLC-I+1) = tmp_coord; + tmp_coord = LEAFA_$SYNCHDMLC(I); + LEAFA_$SYNCHDMLC(I) = LEAFA_$SYNCHDMLC(TOT_LEAF_$SYNCHDMLC-I+1); + LEAFA_$SYNCHDMLC(TOT_LEAF_$SYNCHDMLC-I+1) = tmp_coord; + ] +] IF(ENDTYPE_$SYNCHDMLC=1)[ DO I=1, TOT_LEAF_$SYNCHDMLC [ From 5230f76ad13fb6a9a7c0553fe65df4bcffba14d7 Mon Sep 17 00:00:00 2001 From: Blake Walters Date: Fri, 18 Mar 2022 09:47:35 -0700 Subject: [PATCH 10/14] Fix synchdmlc QUARTER leaf restriction relaxation Reorder cross section y boundaries when input restrictions are relaxed. --- .../omega/beamnrc/CMs/SYNCHDMLC_cm.mortran | 332 +++++++++---- .../beamnrc/CMs/SYNCHDMLC_macros.mortran | 445 ++++++++++++------ 2 files changed, 531 insertions(+), 246 deletions(-) diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran index fff689d5c..1ff09fbf8 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran @@ -2489,11 +2489,16 @@ IF(TOT_LEAF_$SYNCHDMLC>0) [ YREG_$SYNCHDMLC(I,1)=START_$SYNCHDMLC; ] ELSE[ + YLEAFEND=YREG_$SYNCHDMLC(I-1,7); "possible exceptions" IF(LEAFTYPE_$SYNCHDMLC(I-1)=2 & I_LEAF_ALT_DEF_$SYNCHDMLC(2,1,6)=1)[ YLEAFEND=YREG_$SYNCHDMLC(I-1,6); ] + ELSEIF(LEAFTYPE_$SYNCHDMLC(I-1)=4 & I_LEAF_ALT_DEF_$SYNCHDMLC(4,1,6)=1)[ + YLEAFEND=YREG_$SYNCHDMLC(I-1,6); + ] + IF(LEAFTYPE_$SYNCHDMLC(I)=1)[ YREG_$SYNCHDMLC(I,1)=YLEAFEND+LEAFGAP_$SYNCHDMLC- WTONGUE_$SYNCHDMLC(1); @@ -2585,11 +2590,18 @@ IF(TOT_LEAF_$SYNCHDMLC>0) [ ] ELSEIF(LEAFTYPE_$SYNCHDMLC(I)=4)["qtr target leaf" YREG_$SYNCHDMLC(I,2)=YREG_$SYNCHDMLC(I,1)+WTONGUE_$SYNCHDMLC(4); - YREG_$SYNCHDMLC(I,7)=YREG_$SYNCHDMLC(I,2)+LEAFWIDTH_$SYNCHDMLC(4); IF(I_LEAF_ALT_DEF_$SYNCHDMLC(4,1,5)=1)[ + YREG_$SYNCHDMLC(I,7)=YREG_$SYNCHDMLC(I,2)+LEAFWIDTH_$SYNCHDMLC(4); YREG_$SYNCHDMLC(I,6)=YREG_$SYNCHDMLC(I,7)-WGROOVE_$SYNCHDMLC(4); ] + ELSEIF(I_LEAF_ALT_DEF_$SYNCHDMLC(4,1,6)=1)[ + "this exception and the above are mutually exclusive" + YREG_$SYNCHDMLC(I,6)=YREG_$SYNCHDMLC(I,2)+LEAFWIDTH_$SYNCHDMLC(2); + YREG_$SYNCHDMLC(I,7)=YREG_$SYNCHDMLC(I,6)+ + ABS(WRAILBOT_$SYNCHDMLC(4)-WRAILTOP_$SYNCHDMLC(4)); + ] ELSE[ + YREG_$SYNCHDMLC(I,7)=YREG_$SYNCHDMLC(I,2)+LEAFWIDTH_$SYNCHDMLC(4); YREG_$SYNCHDMLC(I,6)=YREG_$SYNCHDMLC(I,7)- ABS(WRAILBOT_$SYNCHDMLC(4)-WRAILTOP_$SYNCHDMLC(4)); ] @@ -2639,7 +2651,7 @@ IF(TOT_LEAF_$SYNCHDMLC>0) [ SURPARA1_$SYNCHDMLC(I,J)=YREG_$SYNCHDMLC(I,J)/TEMP1; "OUTPUT I, J, YREG_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" "write(*,*)' i, leafis, j, yreg ',i,LEAFTYPE_$SYNCHDMLC(I),j," - "YREG_$SYNCHDMLC(I,J);" + " YREG_$SYNCHDMLC(I,J);" " OUTPUT I, J, SURPARA1_$SYNCHDMLC(I,J); (I5, I5, F12.6, ' ', $/);" ];"End of J Loop" ]; "End of K Loop" @@ -4037,26 +4049,98 @@ IF(LEAFIS~=0) [ ] ] ELSE [ "Quarter Isocenter leaf" - - "!= from Half Isocenter" - IF((NY=1|NY=2) & NZ<=4) [I1=1; I2=5;] - "!= from Half Isocenter" - ELSEIF((NY=1|NY=2) & (NZ=5)) [I1=5; I2=6;] - ELSEIF(NZ=6) [I1=6; I2=7;] - ELSEIF(NY<=4 & NZ=7) [I1=7; I2=8;] - ELSEIF(NY=1 & NZ>=8) [I1=8; I2=10;] - ELSEIF((NY=2|NY=3|NY=4) & NZ=8) [I1=8; I2=9;] - ELSEIF((NY=2|NY=3|NY=4) & NZ=9) [I1=9; I2=10;] - ELSEIF(NY=3 & NZ=1) [I1=1; I2=2;] - ELSEIF(NY=3 & (NZ=2|NZ=3|NZ=4|NZ=5)) [I1=2; I2=6;] - ELSEIF((NY=4|NY=5) & NZ<=2) [I1=1; I2=3;] - ELSEIF((NY=4|NY=5) & (NZ=3|NZ=4|NZ=5)) [I1=3; I2=6;] - ELSEIF((NY=5|NY=6) & NZ>=7) [I1=7; I2=10;] - "!= from Half Isocenter" - ELSEIF(NY=6 & NZ<=3) [I1=1; I2=4;] - "!= from Half Isocenter" - ELSEIF(NY=6 & (NZ=4|NZ=5)) [I1=4; I2=6;] - + IF(NY=1) [ + IF(NZ<=3) [I1=1; I2=4;] + ELSEIF(NZ<=5) [I1=4; I2=6;] + ELSEIF(NZ=6) [I1=6; I2=7;] + ELSEIF(NZ=7) [I1=7; I2=8;] + ELSE [I1=8; I2=10;] + ] + ELSEIF(NY=2) [ + IF(NZ<=3) [I1=1; I2=4;] + ELSEIF(NZ<=5) [I1=4; I2=6;] + ELSEIF(NZ=6) [I1=6; I2=7;] + ELSEIF(NZ=7) [I1=7; I2=8;] + ELSE[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,1,2)=1)[ + I1=8; I2=10; + ] + ELSE[ + IF(NZ=8) [I1=8; I2=9;] + ELSE [I1=9; I2=10;] + ] + ] + ] + ELSEIF(NY=3) [ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,2,4)=1)[ + IF(NZ=1) [I1=1; I2=2;] + ELSEIF(NZ=2)[I1=2; I2=6;] + ELSEIF(NZ=3) [I1=3; I2=6;] + ELSEIF(NZ<=5) [I1=4; I2=6;] + ELSEIF(NZ=6) [I1=6; I2=7;] + ELSEIF(NZ=7) [I1=7; I2=8;] + ELSEIF(NZ=8) [I1=8; I2=9;] + ELSE [I1=9; I2=10;] + ] + ELSE[ "Zg > Zt" + IF(NZ=1) [I1=1; I2=2;] + ELSEIF(NZ=2)[I1=2; I2=6;] + ELSEIF(NZ<=4) [I1=3; I2=6;] + ELSEIF(NZ=5) [I1=5; I2=6;] + ELSEIF(NZ=6) [I1=6; I2=7;] + ELSEIF(NZ=7) [I1=7; I2=8;] + ELSEIF(NZ=8) [I1=8; I2=9;] + ELSE [I1=9; I2=10;] + ] + ] + ELSEIF(NY=4) [ + IF(NZ<=2) [I1=1; I2=3;] + ELSEIF(NZ=3) [I1=3; I2=6;] + ELSEIF(NZ=4) [I1=4; I2=6;] + ELSEIF(NZ=5) [I1=5; I2=6;] + ELSEIF(NZ=6) [I1=6; I2=7;] + ELSEIF(NZ=7) [I1=7; I2=8;] + ELSEIF(NZ=8) [I1=8; I2=9;] + ELSE [I1=9; I2=10;] + ] + ELSEIF(NY=5) [ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,2,4)=1)[ + IF(NZ<=2) [I1=1; I2=3;] + ELSEIF(NZ<=4) [I1=3; I2=6;] + ELSEIF(NZ=5) [I1=5; I2=6;] + ELSEIF(NZ=6) [I1=6; I2=7;] + ELSEIF(NZ=7) [I1=7; I2=8;] + ELSEIF(NZ=8) [I1=7; I2=10;] + ELSE [I1=9; I2=10;] + ] + ELSE[ + IF(NZ<=2) [I1=1; I2=3;] + ELSEIF(NZ=3) [I1=3; I2=6;] + ELSEIF(NZ<=5) [I1=4; I2=6;] + ELSEIF(NZ=6) [I1=6; I2=7;] + ELSEIF(NZ=7) [I1=7; I2=8;] + ELSEIF(NZ=8) [I1=7; I2=10;] + ELSE [I1=9; I2=10;] + ] + ] + ELSEIF(NY=6) [ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,2,4)=1)[ + IF(NZ<=4) [I1=1; I2=5;] + ELSEIF(NZ=5) [I1=5; I2=6;] + ELSEIF(NZ=6) [I1=6; I2=7;] + ELSEIF(NZ=7) [I1=7; I2=8;] + ELSEIF(NZ=8) [I1=7; I2=10;] + ELSE [I1=9; I2=10;] + ] + ELSE[ + IF(NZ<=3) [I1=1; I2=4;] + ELSEIF(NZ<=5) [I1=4; I2=6;] + ELSEIF(NZ=6) [I1=6; I2=7;] + ELSEIF(NZ=7) [I1=7; I2=8;] + ELSEIF(NZ=8) [I1=7; I2=10;] + ELSE [I1=9; I2=10;] + ] + ] ]; DIST=MIN(ABS(ZREG_$SYNCHDMLC(LEAFIS,I1)-Z(NP)), @@ -4284,7 +4368,7 @@ IF(LEAFIS~=0) [ IF(NY<=2)[ IF(LEAFIS=1) [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);] ELSE [ - IF(Z(NP)>ZREG_$SYNCHDMLC(J,7))[ + IF(Z(NP)>ZREG_$SYNCHDMLC(LEAFIS-1,7))[ TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,5); ] ELSE[ @@ -4300,8 +4384,8 @@ IF(LEAFIS~=0) [ ELSE[ TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,6); IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7);] - ELSE [ - IF(Z(NP)=4) [ - TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,4); - IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7);] - ELSE [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS+1,1);]; - ] - ELSEIF(NZ=3 & (NY=3|NY=4|NY=5)) [ - TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,3); - TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,6); - ] - ELSEIF((NZ=3 & NY=6) - | (NZ=4 & NY=6 & (LEAFTYPE_$SYNCHDMLC(LEAFIS)=3))) [ - - TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,6); + IF(LEAFIS=1) [ TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);] + ELSE [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,7);] + "possibly use LHS=6?" IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7);] - ELSE [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS+1,1);]; - ] - ELSEIF (NZ=4 & NY>=3 - & (LEAFTYPE_$SYNCHDMLC(LEAFIS)=5)) [ - - TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,3); - TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7); - ] - " ELSEIF (NZ=4 & NY<3" - " & (LEAFTYPE_$SYNCHDMLC(LEAFIS)=5)) [" - - " IF(LEAFIS=1) [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);]" - " ELSE [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,5);];" - " TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,3);" - " ]" - ELSEIF(NZ=4 & NY<=5 & (LEAFTYPE_$SYNCHDMLC(LEAFIS)=3)) [ - - TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1); - TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,6); - ] - ELSEIF(NZ=5|NZ=6|NZ=7) [ + ELSE [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS+1,1);] + ] + ELSEIF(NZ=2)[ + IF(NY<=2)[ + IF(LEAFIS=1) [ TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);] + ELSE [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,7);] + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,3); + ] + IF(NY=3)[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,3); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,4); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,4); + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7);] + ELSE [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS+1,1);] + ] + ] + ELSEIF(NZ=3)[ + IF(NY<=2)[ + IF(LEAFIS=1) [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);] + ELSE [ + IF(Z(NP)>ZREG_$SYNCHDMLC(LEAFIS-1,7))[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,5); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,7); + ] + ] + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,3); + ] + IF(NY<=5)[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,3); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,6); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,6); + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7);] + ELSE [ "ignores that LEAFIS+1 might be FULL" + IF(Z(NP) Zg" + IF(NY<=2)[ + IF(LEAFIS=1) [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);] + ELSE [ + IF(Z(NP)>ZREG_$SYNCHDMLC(LEAFIS-1,7))[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,5); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,7); + ] + ] + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,3); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,3); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7); + ] + ] + ] + ELSEIF(NZ=5)[ TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1); TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7); - ] - ELSEIF(NZ=8 & NY<=4) [ - IF(LEAFIS=1) [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);] - ELSE [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,5);]; - TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,5); - ] - ELSEIF(NZ=8 & NY>=5) [ - TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,5); + ] + ELSEIF(NZ=6)[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1); TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7); - ] - ELSEIF(NZ=9 & NY=1) [ - IF(LEAFIS=1) [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);] - ELSE [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,5);] - TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,2); - ] - ELSEIF(NZ=9 & NY>=2) [ - TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,2); + ] + ELSEIF(NZ=7)[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1); TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7); - ] - ]; + ] + ELSEIF(NZ=8)[ + IF(NY<=4)[ + IF(LEAFIS=1) [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);] + ELSE [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,5);] + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,5); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,5); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7); + ] + ] + ELSEIF(NZ=9)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,1,2)=1) [ + IF(NY<=2)[ + IF(LEAFIS=1) [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);] + ELSE [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,5);] + "here we are ignoring the possibility that Z could be" + ">Ztip(LEAFIS-1) but should be okay" + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,3); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,3); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7); + ] + ] + ELSE[ + IF(NY=1)[ + IF(LEAFIS=1) [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1);] + ELSE [TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS-1,5);] + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,2); + ] + ELSE[ + TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,2); + TEMP2=SURPARA1_$SYNCHDMLC(LEAFIS,7); + ] + ] + ] + ]; TEMP1=ABS((TEMP1*(Z(NP)-ZFOCUS_$SYNCHDMLC(1))-XYL1)/ SQRT(1+TEMP1**2)); TEMP2=ABS((TEMP2*(Z(NP)-ZFOCUS_$SYNCHDMLC(1))-XYL1)/ diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran index 932ce8a27..67e67aac9 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran @@ -713,116 +713,10 @@ ELSE ["inside leaf bank" ;} ; -" $SYNCHDMLC_MINDISTANCE; " -"=============================== " -" The following macro will give the nearest distance the particle" -" can travel along its given direction before it strikes the boundary" -" in the x, y or z direction." -"{P1}: The change value for ir region #" - -REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" - "Note: some of these will underestimate dZ when input dimension" - "restrictions are overridden--this should not result in transport" - "errors, but will potentially slow transport" - IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ - "Target leaf" - - IF((NY=1|NY=2) & NZ<=3) [ZLHS=1; ZRHS=4;] - ELSEIF(NY=1 & NZ=5) [ZLHS=5; ZRHS=6;] - ELSEIF(NY=1 & NZ>=6) [ZLHS=6; ZRHS=10;] - ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] - ELSEIF((NY=2|NY=3) & NZ>=8) [ZLHS=8; ZRHS=10;] - ELSEIF((NY=3|NY=4|NY=5) & NZ=1) [ZLHS=1; ZRHS=2;] - ELSEIF((NY=3|NY=4|NY=5) & NZ=2) [ZLHS=2; ZRHS=3;] - ELSEIF(NY>=3 & NZ=3) [ZLHS=3; ZRHS=4;] - ELSEIF((NY=2|NY=3) & (NZ=5|NZ=6|NZ=7)) [ZLHS=5; ZRHS=8;] - ELSEIF(NY=4 & (NZ=5|NZ=6|NZ=7|NZ=8)) [ZLHS=5; ZRHS=9;] - ELSEIF(NY=4 & NZ=9) [ZLHS=9; ZRHS=10;] - ELSEIF((NY=5|NY=6) & (NZ=5|NZ=6)) [ZLHS=5; ZRHS=7;] - ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] - ELSEIF(NY=6 & NZ<=2) [ - "dZ potentially overestimated--deal with it!" - IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1)[ - IF(NZ=1)[ZLHS=1; ZRHS=2;] - ELSE[ZLHS=2; ZRHS=10;] - ] - ELSE[ZLHS=1; ZRHS=3;] - ] - - ] ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=1) ["Full leaf" - - IF((NY=1|NY=2) & NZ=1) [ZLHS=1; ZRHS=2;] - ELSEIF(NY=1 & (NZ=2|NZ=3)) [ZLHS=2; ZRHS=4;] - ELSEIF(NY=1 & NZ>=4) [ZLHS=4; ZRHS=10;] - ELSEIF(NY=2 & (NZ=2|NZ=3|NZ=4|NZ=5)) [ZLHS=2; ZRHS=6;] - ELSEIF(NY>=2 & NZ=6) [ZLHS=6; ZRHS=7;] - ELSEIF(NY=2 & NZ>=8) [ZLHS=8; ZRHS=10;] - ELSEIF((NY=3|NY=4|NY=5) & (NZ=1|NZ=2)) [ZLHS=1; ZRHS=3;] - ELSEIF((NY=3|NY=4|NY=5) & (NZ=3|NZ=4|NZ=5)) [ZLHS=3; ZRHS=6;] - ELSEIF(NY=3 & NZ>=8) [ZLHS=8; ZRHS=10;] - ELSEIF((NY=2|NY=3|NY=4) & NZ=7) [ZLHS=7; ZRHS=8;] - ELSEIF(NY=4 & NZ=8) [ZLHS=8; ZRHS=9;] - ELSEIF(NY=4 & NZ=9) [ZLHS=9; ZRHS=10;] - ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] - ELSEIF(NY=6 & NZ<=4) [ZLHS=1; ZRHS=5;] - ELSEIF(NY=6 & NZ=5) [ZLHS=5; ZRHS=6;] - - ] ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=3) [ - "Half Isocenter leaf" - - IF((NY=1|NY=2) & NZ<=3) [ZLHS=1; ZRHS=4;] - ELSEIF((NY=1|NY=2) & (NZ=4|NZ=5)) [ZLHS=4; ZRHS=6;] - ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] - ELSEIF(NY<=4 & NZ=7) [ZLHS=7; ZRHS=8;] - "potential overestimate of dZ below--correct it" - ELSEIF(NY=1 & NZ>=8) [ - IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1)[ - IF(NZ=9)[ZLHS=9; ZRHS=10;] - ELSE[ZLHS=1; ZRHS=9;] - ] - ELSE[ZLHS=8; ZRHS=10;] - ] - ELSEIF((NY=2|NY=3|NY=4) & NZ=8) [ZLHS=8; ZRHS=9;] - ELSEIF((NY=2|NY=3|NY=4) & NZ=9) [ZLHS=9; ZRHS=10;] - ELSEIF(NY=3 & NZ=1) [ZLHS=1; ZRHS=2;] - ELSEIF(NY=3 & (NZ=2|NZ=3|NZ=4|NZ=5)) [ZLHS=2; ZRHS=6;] - ELSEIF((NY=4|NY=5) & NZ<=2) [ZLHS=1; ZRHS=3;] - ELSEIF((NY=4|NY=5) & (NZ=3|NZ=4|NZ=5)) [ZLHS=3; ZRHS=6;] - ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] - ELSEIF(NY=6 & NZ<=4) [ZLHS=1; ZRHS=5;] - ELSEIF(NY=6 & NZ=5) [ZLHS=5; ZRHS=6;] - - ] ELSE [ - "Quarter Isocenter leaf" - - "!= from Half Isocenter" - IF((NY=1|NY=2) & NZ<=4) [ZLHS=1; ZRHS=5;] - "!= from Half Isocenter" - ELSEIF((NY=1|NY=2) & (NZ=5)) [ZLHS=5; ZRHS=6;] - ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] - ELSEIF(NY<=4 & NZ=7) [ZLHS=7; ZRHS=8;] - ELSEIF(NY=1 & NZ>=8) [ZLHS=8; ZRHS=10;] - ELSEIF((NY=2|NY=3|NY=4) & NZ=8) [ZLHS=8; ZRHS=9;] - ELSEIF((NY=2|NY=3|NY=4) & NZ=9) [ZLHS=9; ZRHS=10;] - ELSEIF(NY=3 & NZ=1) [ZLHS=1; ZRHS=2;] - ELSEIF(NY=3 & (NZ=2|NZ=3|NZ=4|NZ=5)) [ZLHS=2; ZRHS=6;] - ELSEIF((NY=4|NY=5) & NZ<=2) [ZLHS=1; ZRHS=3;] - ELSEIF((NY=4|NY=5) & (NZ=3|NZ=4|NZ=5)) [ZLHS=3; ZRHS=6;] - ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] - "!= from Half Isocenter" - ELSEIF(NY=6 & NZ<=3) [ZLHS=1; ZRHS=4;] - "!= from Half Isocenter" - ELSEIF(NY=6 & (NZ=4|NZ=5)) [ZLHS=4; ZRHS=6;] - ] - IF(W(NP)~=0) [ - ZP = (ZREG_$SYNCHDMLC(LEAFIS,ZRHS)-ZFL)/W(NP); - ZN = (ZREG_$SYNCHDMLC(LEAFIS,ZLHS)-ZFL)/W(NP); - IF( (ZP>=0.0) & (ZN>=0.0) ) [ ZDIST =MIN(ZP, ZN); ] - ELSE [ ZDIST = MAX(ZP, ZN); ] - "write(*,*)' zdist,leafis ',zdist,leafis;" - ] - ELSE [ ZDIST = 1.0E20; ]; - IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ +"Macro to find I, LHS, J, RHS, indices of boundaries in Y-direction" +"Put in a separate macro to prevent the parent macro from getting too long" +REPLACE {$SYNCHDMLC_FIND_Y_BOUNDS;} WITH{; +IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ "Target leaf" IF(NZ=1) [ IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1) [ @@ -1190,56 +1084,303 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" ] ] ] - ] ELSE [ + ] + ELSE[ "Isocenter Quarter" IF(NZ=1) [ IF(LEAFIS=1) [ LHS=1; J=LEAFIS;] ELSE [LHS=7; J=LEAFIS-1;] + "possibly use LHS=6?" IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] ELSE [RHS=1; I=LEAFIS+1;] - ] ELSEIF((NZ=2|NZ=3|NZ=4) & (NY=1|NY=2)) [ - "!= from Half Isocenter - Block 2" - IF(LEAFIS=1) [LHS=1; J=LEAFIS;] - ELSE [LHS=7; J=LEAFIS-1;] - RHS=3; I=LEAFIS; - ] ELSEIF(NZ=2 & NY=3) [ - LHS=3; J=LEAFIS; - RHS=4; I=LEAFIS; - ] ELSEIF(NZ=2 & NY>=4) [ - LHS=4; J=LEAFIS; - IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] - ELSE [RHS=1; I=LEAFIS+1;] - ] ELSEIF(NZ=3 & (NY=3|NY=4|NY=5)) [ - LHS=3; J=LEAFIS; - RHS=6; I=LEAFIS; - ] ELSEIF(NZ=3 & NY=6) [ - "!= from Half Isocenter - Block 5" - LHS=6; J=LEAFIS; - IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] - ELSE [RHS=1; I=LEAFIS+1;] - ] ELSEIF(NZ=4 & (NY>=3)) [ - "!= from Half Isocenter - Block 7" - LHS=3; J=LEAFIS; - RHS=7; I=LEAFIS; - ] ELSEIF(NZ=5|NZ=6|NZ=7) [ + ] + ELSEIF(NZ=2)[ + IF(NY<=2)[ + IF(LEAFIS=1) [ LHS=1; J=LEAFIS;] + ELSE [LHS=7; J=LEAFIS-1;] + RHS=3; I=LEAFIS; + ] + IF(NY=3)[ + LHS=3; J=LEAFIS; + RHS=4; I=LEAFIS; + ] + ELSE[ + LHS=4; J=LEAFIS; + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] + ELSE [RHS=1; I=LEAFIS+1;] + ] + ] + ELSEIF(NZ=3)[ + IF(NY<=2)[ + IF(LEAFIS=1) [ LHS=1; J=LEAFIS;] + ELSE [ + J=LEAFIS-1; + IF(ZFL>ZREG_$SYNCHDMLC(J,7))[ + LHS = 5; + ] + ELSE[ + LHS = 7; + ] + ] + RHS=3; I=LEAFIS; + ] + IF(NY<=5)[ + LHS=3; J=LEAFIS; + RHS=6; I=LEAFIS; + ] + ELSE[ + LHS=6; J=LEAFIS; + IF(LEAFIS=TOT_LEAF_$SYNCHDMLC) [RHS=7; I=LEAFIS;] + ELSE [ + I=LEAFIS+1; + IF(ZFLZREG_$SYNCHDMLC(J,7))[ + LHS = 5; + ] + ELSE[ + LHS = 7; + ] + ] + RHS=3; I=LEAFIS; + ] + ELSE[ + LHS=3; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ] + ] + ELSEIF(NZ<=7)[ LHS=1; J=LEAFIS; RHS=7; I=LEAFIS; - ] ELSEIF(NZ=8 & NY<=4) [ - IF(LEAFIS=1) [LHS=1; J=LEAFIS;] - ELSE [LHS=5; J=LEAFIS-1;] - RHS=5; I=LEAFIS; - ] ELSEIF(NZ=8 & NY>=5) [ - LHS=5; J=LEAFIS; - RHS=7; I=LEAFIS; - ] ELSEIF(NZ=9 & NY=1) [ - IF(LEAFIS=1) [LHS=1; J=LEAFIS;] - ELSE [LHS=5; J=LEAFIS-1;] - RHS=2; I=LEAFIS; - ] ELSEIF(NZ=9 & NY>=2) [ - LHS=2; J=LEAFIS; - RHS=7; I=LEAFIS; ] - ]; + ELSEIF(NZ=8)[ + IF(NY<=4)[ + IF(LEAFIS=1) [LHS=1; J=LEAFIS;] + ELSE [LHS=5; J=LEAFIS-1;] + RHS=5; I=LEAFIS; + ] + ELSE[ + LHS=5; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ] + ELSEIF(NZ=9)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,1,2)=1) [ + IF(NY<=2)[ + IF(LEAFIS=1) [LHS=1; J=LEAFIS;] + ELSE [LHS=5; J=LEAFIS-1;] + RHS=3; I=LEAFIS; + ] + ELSE[ + LHS=3; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ] + ELSE[ + IF(NY=1)[ + IF(LEAFIS=1) [LHS=1; J=LEAFIS;] + ELSE [LHS=5; J=LEAFIS-1;] + RHS=2; I=LEAFIS; + ] + ELSE[ + LHS=2; J=LEAFIS; + RHS=7; I=LEAFIS; + ] + ] + ] +]; +}; + +" $SYNCHDMLC_MINDISTANCE; " +"=============================== " +" The following macro will give the nearest distance the particle" +" can travel along its given direction before it strikes the boundary" +" in the x, y or z direction." +"{P1}: The change value for ir region #" + +REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" + "Note: some of these will underestimate dZ when input dimension" + "restrictions are overridden--this should not result in transport" + "errors, but will potentially slow transport" + IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ + "Target leaf" + + IF((NY=1|NY=2) & NZ<=3) [ZLHS=1; ZRHS=4;] + ELSEIF(NY=1 & NZ=5) [ZLHS=5; ZRHS=6;] + ELSEIF(NY=1 & NZ>=6) [ZLHS=6; ZRHS=10;] + ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] + ELSEIF((NY=2|NY=3) & NZ>=8) [ZLHS=8; ZRHS=10;] + ELSEIF((NY=3|NY=4|NY=5) & NZ=1) [ZLHS=1; ZRHS=2;] + ELSEIF((NY=3|NY=4|NY=5) & NZ=2) [ZLHS=2; ZRHS=3;] + ELSEIF(NY>=3 & NZ=3) [ZLHS=3; ZRHS=4;] + ELSEIF((NY=2|NY=3) & (NZ=5|NZ=6|NZ=7)) [ZLHS=5; ZRHS=8;] + ELSEIF(NY=4 & (NZ=5|NZ=6|NZ=7|NZ=8)) [ZLHS=5; ZRHS=9;] + ELSEIF(NY=4 & NZ=9) [ZLHS=9; ZRHS=10;] + ELSEIF((NY=5|NY=6) & (NZ=5|NZ=6)) [ZLHS=5; ZRHS=7;] + ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] + ELSEIF(NY=6 & NZ<=2) [ + "dZ potentially overestimated--deal with it!" + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1)[ + IF(NZ=1)[ZLHS=1; ZRHS=2;] + ELSE[ZLHS=2; ZRHS=10;] + ] + ELSE[ZLHS=1; ZRHS=3;] + ] + + ] ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=1) ["Full leaf" + + IF((NY=1|NY=2) & NZ=1) [ZLHS=1; ZRHS=2;] + ELSEIF(NY=1 & (NZ=2|NZ=3)) [ZLHS=2; ZRHS=4;] + ELSEIF(NY=1 & NZ>=4) [ZLHS=4; ZRHS=10;] + ELSEIF(NY=2 & (NZ=2|NZ=3|NZ=4|NZ=5)) [ZLHS=2; ZRHS=6;] + ELSEIF(NY>=2 & NZ=6) [ZLHS=6; ZRHS=7;] + ELSEIF(NY=2 & NZ>=8) [ZLHS=8; ZRHS=10;] + ELSEIF((NY=3|NY=4|NY=5) & (NZ=1|NZ=2)) [ZLHS=1; ZRHS=3;] + ELSEIF((NY=3|NY=4|NY=5) & (NZ=3|NZ=4|NZ=5)) [ZLHS=3; ZRHS=6;] + ELSEIF(NY=3 & NZ>=8) [ZLHS=8; ZRHS=10;] + ELSEIF((NY=2|NY=3|NY=4) & NZ=7) [ZLHS=7; ZRHS=8;] + ELSEIF(NY=4 & NZ=8) [ZLHS=8; ZRHS=9;] + ELSEIF(NY=4 & NZ=9) [ZLHS=9; ZRHS=10;] + ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] + ELSEIF(NY=6 & NZ<=4) [ZLHS=1; ZRHS=5;] + ELSEIF(NY=6 & NZ=5) [ZLHS=5; ZRHS=6;] + + ] ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=3) [ + "Half Isocenter leaf" + + IF((NY=1|NY=2) & NZ<=3) [ZLHS=1; ZRHS=4;] + ELSEIF((NY=1|NY=2) & (NZ=4|NZ=5)) [ZLHS=4; ZRHS=6;] + ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] + ELSEIF(NY<=4 & NZ=7) [ZLHS=7; ZRHS=8;] + "potential overestimate of dZ below--correct it" + ELSEIF(NY=1 & NZ>=8) [ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1)[ + IF(NZ=9)[ZLHS=9; ZRHS=10;] + ELSE[ZLHS=1; ZRHS=9;] + ] + ELSE[ZLHS=8; ZRHS=10;] + ] + ELSEIF((NY=2|NY=3|NY=4) & NZ=8) [ZLHS=8; ZRHS=9;] + ELSEIF((NY=2|NY=3|NY=4) & NZ=9) [ZLHS=9; ZRHS=10;] + ELSEIF(NY=3 & NZ=1) [ZLHS=1; ZRHS=2;] + ELSEIF(NY=3 & (NZ=2|NZ=3|NZ=4|NZ=5)) [ZLHS=2; ZRHS=6;] + ELSEIF((NY=4|NY=5) & NZ<=2) [ZLHS=1; ZRHS=3;] + ELSEIF((NY=4|NY=5) & (NZ=3|NZ=4|NZ=5)) [ZLHS=3; ZRHS=6;] + ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] + ELSEIF(NY=6 & NZ<=4) [ZLHS=1; ZRHS=5;] + ELSEIF(NY=6 & NZ=5) [ZLHS=5; ZRHS=6;] + + ] ELSE [ + "Quarter Isocenter leaf" + IF(NY=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,2,4)=1)[ + IF(NZ<=3)[ZLHS=1; ZRHS=4;] + ELSEIF(NZ<=5)[ZLHS=4; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] + ELSE[ZLHS=8; ZRHS=10;] + ] + ELSE[ + IF(NZ<=4)[ZLHS=1; ZRHS=5;] + ELSEIF(NZ=5)[ZLHS=5; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] + ELSE[ZLHS=8; ZRHS=10;] + ] + ] + ELSEIF(NY=2)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,2,4)=1)[ + IF(NZ<=3)[ZLHS=1; ZRHS=4;] + ELSEIF(NZ<=5)[ZLHS=4; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] + ELSEIF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,1,2)=1)[ZLHS=8; ZRHS=10;] + ELSEIF(NZ=8)[ZLHS=8; ZRHS=9;] + ELSE[ZLHS=9; ZRHS=10;] + ] + ELSE[ + IF(NZ<=4)[ZLHS=1; ZRHS=5;] + ELSEIF(NZ=5)[ZLHS=5; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] + ELSEIF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,1,2)=1)[ZLHS=8; ZRHS=10;] + ELSEIF(NZ=8)[ZLHS=8; ZRHS=9;] + ELSE[ZLHS=9; ZRHS=10;] + ] + ] + ELSEIF(NY=3)[ + IF(NZ=1)[ZLHS=1; ZRHS=2;] + ELSEIF(NZ<=5)[ZLHS=2; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] + ELSEIF(NZ=8)[ZLHS=8; ZRHS=9;] + ELSE[ZLHS=9; ZRHS=10;] + ] + ELSEIF(NY=4)[ + IF(NZ<=2)[ZLHS=1; ZRHS=3;] + ELSEIF(NZ<=5)[ZLHS=3; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] + ELSEIF(NZ=8)[ZLHS=8; ZRHS=9;] + ELSE[ZLHS=9; ZRHS=10;] + ] + ELSEIF(NY=5)[ + IF(NZ<=2)[ZLHS=1; ZRHS=3;] + ELSEIF(NZ<=5)[ZLHS=3; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSE[ZLHS=7; ZRHS=10;] + ] + ELSEIF(NY=6)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,2,4)=1)[ + IF(NZ<=4)[ZLHS=1; ZRHS=5;] + ELSEIF(NZ=5)[ZLHS=5; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSE[ZLHS=7; ZRHS=10;] + ] + ELSE[ + IF(NZ<=3)[ZLHS=1; ZRHS=4;] + ELSEIF(NZ<=5)[ZLHS=4; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSE[ZLHS=7; ZRHS=10;] + ] + ] + ] + IF(W(NP)~=0) [ + ZP = (ZREG_$SYNCHDMLC(LEAFIS,ZRHS)-ZFL)/W(NP); + ZN = (ZREG_$SYNCHDMLC(LEAFIS,ZLHS)-ZFL)/W(NP); + IF( (ZP>=0.0) & (ZN>=0.0) ) [ ZDIST =MIN(ZP, ZN); ] + ELSE [ ZDIST = MAX(ZP, ZN); ] + "write(*,*)' zdist,leafis ',zdist,leafis;" + ] + ELSE [ ZDIST = 1.0E20; ]; + + $SYNCHDMLC_FIND_Y_BOUNDS; + IF((UVL(1)-SURPARA1_$SYNCHDMLC(I,RHS)*W(NP))~ = 0 ) [ YP = (SURPARA1_$SYNCHDMLC(I,RHS)*(ZFL-ZFOCUS_$SYNCHDMLC(1))-XYFL(1)); YP = YP/(UVL(1) - SURPARA1_$SYNCHDMLC(I,RHS)*W(NP)); @@ -1252,7 +1393,7 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" ELSE [ YN = 1.0E20; ]; IF((YP>=0.0) & (YN>=0.0) ) [ YDIST =MIN(YP, YN); ] ELSE [ YDIST = MAX(YP,YN);]; - "write(*,*)' ydist ',ydist;" + "write(*,*)' i,j, rhs, lhs, ydist ',i,j,rhs,lhs,ydist;" IF(ENDTYPE_$SYNCHDMLC = 1) ["focused leaf end" HOLE=HOLEPOS_$SYNCHDMLC(LEAFIS); TEMP3=LEAFB_$SYNCHDMLC(LEAFIS)-HOLE; From b64d4f2f053220371ec8fe1f84c324ddede55792 Mon Sep 17 00:00:00 2001 From: Frederic Tessier Date: Thu, 30 Jun 2022 17:25:52 -0400 Subject: [PATCH 11/14] Add new FIND_Z_BOUNDS macro in synchdmlc --- .../beamnrc/CMs/SYNCHDMLC_macros.mortran | 300 +++++++++--------- 1 file changed, 154 insertions(+), 146 deletions(-) diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran index 67e67aac9..fd4ad6c09 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran @@ -713,6 +713,158 @@ ELSE ["inside leaf bank" ;} ; +"Macro to find ZLHS and ZRHS, upper and lower indices of boundaries in" +"Z-direction" +"Put in a separate macro to prevent the parent macro from getting too long" +REPLACE {$SYNCHDMLC_FIND_Z_BOUNDS;} WITH{; +"Note: some of these will underestimate dZ when input dimension" +"restrictions are overridden--this should not result in transport" +"errors, but will potentially slow transport" +IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ + "Target leaf" + + IF((NY=1|NY=2) & NZ<=3) [ZLHS=1; ZRHS=4;] + ELSEIF(NY=1 & NZ=5) [ZLHS=5; ZRHS=6;] + ELSEIF(NY=1 & NZ>=6) [ZLHS=6; ZRHS=10;] + ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] + ELSEIF((NY=2|NY=3) & NZ>=8) [ZLHS=8; ZRHS=10;] + ELSEIF((NY=3|NY=4|NY=5) & NZ=1) [ZLHS=1; ZRHS=2;] + ELSEIF((NY=3|NY=4|NY=5) & NZ=2) [ZLHS=2; ZRHS=3;] + ELSEIF(NY>=3 & NZ=3) [ZLHS=3; ZRHS=4;] + ELSEIF((NY=2|NY=3) & (NZ=5|NZ=6|NZ=7)) [ZLHS=5; ZRHS=8;] + ELSEIF(NY=4 & (NZ=5|NZ=6|NZ=7|NZ=8)) [ZLHS=5; ZRHS=9;] + ELSEIF(NY=4 & NZ=9) [ZLHS=9; ZRHS=10;] + ELSEIF((NY=5|NY=6) & (NZ=5|NZ=6)) [ZLHS=5; ZRHS=7;] + ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] + ELSEIF(NY=6 & NZ<=2) [ + "dZ potentially overestimated--deal with it!" + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1)[ + IF(NZ=1)[ZLHS=1; ZRHS=2;] + ELSE[ZLHS=2; ZRHS=10;] + ] + ELSE[ZLHS=1; ZRHS=3;] + ] + + ] ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=1) ["Full leaf" + + IF((NY=1|NY=2) & NZ=1) [ZLHS=1; ZRHS=2;] + ELSEIF(NY=1 & (NZ=2|NZ=3)) [ZLHS=2; ZRHS=4;] + ELSEIF(NY=1 & NZ>=4) [ZLHS=4; ZRHS=10;] + ELSEIF(NY=2 & (NZ=2|NZ=3|NZ=4|NZ=5)) [ZLHS=2; ZRHS=6;] + ELSEIF(NY>=2 & NZ=6) [ZLHS=6; ZRHS=7;] + ELSEIF(NY=2 & NZ>=8) [ZLHS=8; ZRHS=10;] + ELSEIF((NY=3|NY=4|NY=5) & (NZ=1|NZ=2)) [ZLHS=1; ZRHS=3;] + ELSEIF((NY=3|NY=4|NY=5) & (NZ=3|NZ=4|NZ=5)) [ZLHS=3; ZRHS=6;] + ELSEIF(NY=3 & NZ>=8) [ZLHS=8; ZRHS=10;] + ELSEIF((NY=2|NY=3|NY=4) & NZ=7) [ZLHS=7; ZRHS=8;] + ELSEIF(NY=4 & NZ=8) [ZLHS=8; ZRHS=9;] + ELSEIF(NY=4 & NZ=9) [ZLHS=9; ZRHS=10;] + ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] + ELSEIF(NY=6 & NZ<=4) [ZLHS=1; ZRHS=5;] + ELSEIF(NY=6 & NZ=5) [ZLHS=5; ZRHS=6;] + + ] ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=3) [ + "Half Isocenter leaf" + + IF((NY=1|NY=2) & NZ<=3) [ZLHS=1; ZRHS=4;] + ELSEIF((NY=1|NY=2) & (NZ=4|NZ=5)) [ZLHS=4; ZRHS=6;] + ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] + ELSEIF(NY<=4 & NZ=7) [ZLHS=7; ZRHS=8;] + "potential overestimate of dZ below--correct it" + ELSEIF(NY=1 & NZ>=8) [ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1)[ + IF(NZ=9)[ZLHS=9; ZRHS=10;] + ELSE[ZLHS=1; ZRHS=9;] + ] + ELSE[ZLHS=8; ZRHS=10;] + ] + ELSEIF((NY=2|NY=3|NY=4) & NZ=8) [ZLHS=8; ZRHS=9;] + ELSEIF((NY=2|NY=3|NY=4) & NZ=9) [ZLHS=9; ZRHS=10;] + ELSEIF(NY=3 & NZ=1) [ZLHS=1; ZRHS=2;] + ELSEIF(NY=3 & (NZ=2|NZ=3|NZ=4|NZ=5)) [ZLHS=2; ZRHS=6;] + ELSEIF((NY=4|NY=5) & NZ<=2) [ZLHS=1; ZRHS=3;] + ELSEIF((NY=4|NY=5) & (NZ=3|NZ=4|NZ=5)) [ZLHS=3; ZRHS=6;] + ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] + ELSEIF(NY=6 & NZ<=4) [ZLHS=1; ZRHS=5;] + ELSEIF(NY=6 & NZ=5) [ZLHS=5; ZRHS=6;] + + ] ELSE [ + "Quarter Isocenter leaf" + IF(NY=1)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,2,4)=1)[ + IF(NZ<=3)[ZLHS=1; ZRHS=4;] + ELSEIF(NZ<=5)[ZLHS=4; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] + ELSE[ZLHS=8; ZRHS=10;] + ] + ELSE[ + IF(NZ<=4)[ZLHS=1; ZRHS=5;] + ELSEIF(NZ=5)[ZLHS=5; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] + ELSE[ZLHS=8; ZRHS=10;] + ] + ] + ELSEIF(NY=2)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,2,4)=1)[ + IF(NZ<=3)[ZLHS=1; ZRHS=4;] + ELSEIF(NZ<=5)[ZLHS=4; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] + ELSEIF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,1,2)=1)[ZLHS=8; ZRHS=10;] + ELSEIF(NZ=8)[ZLHS=8; ZRHS=9;] + ELSE[ZLHS=9; ZRHS=10;] + ] + ELSE[ + IF(NZ<=4)[ZLHS=1; ZRHS=5;] + ELSEIF(NZ=5)[ZLHS=5; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] + ELSEIF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,1,2)=1)[ZLHS=8; ZRHS=10;] + ELSEIF(NZ=8)[ZLHS=8; ZRHS=9;] + ELSE[ZLHS=9; ZRHS=10;] + ] + ] + ELSEIF(NY=3)[ + IF(NZ=1)[ZLHS=1; ZRHS=2;] + ELSEIF(NZ<=5)[ZLHS=2; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] + ELSEIF(NZ=8)[ZLHS=8; ZRHS=9;] + ELSE[ZLHS=9; ZRHS=10;] + ] + ELSEIF(NY=4)[ + IF(NZ<=2)[ZLHS=1; ZRHS=3;] + ELSEIF(NZ<=5)[ZLHS=3; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] + ELSEIF(NZ=8)[ZLHS=8; ZRHS=9;] + ELSE[ZLHS=9; ZRHS=10;] + ] + ELSEIF(NY=5)[ + IF(NZ<=2)[ZLHS=1; ZRHS=3;] + ELSEIF(NZ<=5)[ZLHS=3; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSE[ZLHS=7; ZRHS=10;] + ] + ELSEIF(NY=6)[ + IF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,2,4)=1)[ + IF(NZ<=4)[ZLHS=1; ZRHS=5;] + ELSEIF(NZ=5)[ZLHS=5; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSE[ZLHS=7; ZRHS=10;] + ] + ELSE[ + IF(NZ<=3)[ZLHS=1; ZRHS=4;] + ELSEIF(NZ<=5)[ZLHS=4; ZRHS=6;] + ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] + ELSE[ZLHS=7; ZRHS=10;] + ] + ] +] +}; + "Macro to find I, LHS, J, RHS, indices of boundaries in Y-direction" "Put in a separate macro to prevent the parent macro from getting too long" REPLACE {$SYNCHDMLC_FIND_Y_BOUNDS;} WITH{; @@ -1223,159 +1375,15 @@ IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ " in the x, y or z direction." "{P1}: The change value for ir region #" -REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; "boundaries in Z direction" - "Note: some of these will underestimate dZ when input dimension" - "restrictions are overridden--this should not result in transport" - "errors, but will potentially slow transport" - IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ - "Target leaf" - - IF((NY=1|NY=2) & NZ<=3) [ZLHS=1; ZRHS=4;] - ELSEIF(NY=1 & NZ=5) [ZLHS=5; ZRHS=6;] - ELSEIF(NY=1 & NZ>=6) [ZLHS=6; ZRHS=10;] - ELSEIF(NZ=4) [ZLHS=4; ZRHS=5;] - ELSEIF((NY=2|NY=3) & NZ>=8) [ZLHS=8; ZRHS=10;] - ELSEIF((NY=3|NY=4|NY=5) & NZ=1) [ZLHS=1; ZRHS=2;] - ELSEIF((NY=3|NY=4|NY=5) & NZ=2) [ZLHS=2; ZRHS=3;] - ELSEIF(NY>=3 & NZ=3) [ZLHS=3; ZRHS=4;] - ELSEIF((NY=2|NY=3) & (NZ=5|NZ=6|NZ=7)) [ZLHS=5; ZRHS=8;] - ELSEIF(NY=4 & (NZ=5|NZ=6|NZ=7|NZ=8)) [ZLHS=5; ZRHS=9;] - ELSEIF(NY=4 & NZ=9) [ZLHS=9; ZRHS=10;] - ELSEIF((NY=5|NY=6) & (NZ=5|NZ=6)) [ZLHS=5; ZRHS=7;] - ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] - ELSEIF(NY=6 & NZ<=2) [ - "dZ potentially overestimated--deal with it!" - IF(I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1)[ - IF(NZ=1)[ZLHS=1; ZRHS=2;] - ELSE[ZLHS=2; ZRHS=10;] - ] - ELSE[ZLHS=1; ZRHS=3;] - ] - - ] ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=1) ["Full leaf" - - IF((NY=1|NY=2) & NZ=1) [ZLHS=1; ZRHS=2;] - ELSEIF(NY=1 & (NZ=2|NZ=3)) [ZLHS=2; ZRHS=4;] - ELSEIF(NY=1 & NZ>=4) [ZLHS=4; ZRHS=10;] - ELSEIF(NY=2 & (NZ=2|NZ=3|NZ=4|NZ=5)) [ZLHS=2; ZRHS=6;] - ELSEIF(NY>=2 & NZ=6) [ZLHS=6; ZRHS=7;] - ELSEIF(NY=2 & NZ>=8) [ZLHS=8; ZRHS=10;] - ELSEIF((NY=3|NY=4|NY=5) & (NZ=1|NZ=2)) [ZLHS=1; ZRHS=3;] - ELSEIF((NY=3|NY=4|NY=5) & (NZ=3|NZ=4|NZ=5)) [ZLHS=3; ZRHS=6;] - ELSEIF(NY=3 & NZ>=8) [ZLHS=8; ZRHS=10;] - ELSEIF((NY=2|NY=3|NY=4) & NZ=7) [ZLHS=7; ZRHS=8;] - ELSEIF(NY=4 & NZ=8) [ZLHS=8; ZRHS=9;] - ELSEIF(NY=4 & NZ=9) [ZLHS=9; ZRHS=10;] - ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] - ELSEIF(NY=6 & NZ<=4) [ZLHS=1; ZRHS=5;] - ELSEIF(NY=6 & NZ=5) [ZLHS=5; ZRHS=6;] - - ] ELSEIF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=3) [ - "Half Isocenter leaf" +REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; - IF((NY=1|NY=2) & NZ<=3) [ZLHS=1; ZRHS=4;] - ELSEIF((NY=1|NY=2) & (NZ=4|NZ=5)) [ZLHS=4; ZRHS=6;] - ELSEIF(NZ=6) [ZLHS=6; ZRHS=7;] - ELSEIF(NY<=4 & NZ=7) [ZLHS=7; ZRHS=8;] - "potential overestimate of dZ below--correct it" - ELSEIF(NY=1 & NZ>=8) [ - IF(I_LEAF_ALT_DEF_$SYNCHDMLC(3,1,1)=1)[ - IF(NZ=9)[ZLHS=9; ZRHS=10;] - ELSE[ZLHS=1; ZRHS=9;] - ] - ELSE[ZLHS=8; ZRHS=10;] - ] - ELSEIF((NY=2|NY=3|NY=4) & NZ=8) [ZLHS=8; ZRHS=9;] - ELSEIF((NY=2|NY=3|NY=4) & NZ=9) [ZLHS=9; ZRHS=10;] - ELSEIF(NY=3 & NZ=1) [ZLHS=1; ZRHS=2;] - ELSEIF(NY=3 & (NZ=2|NZ=3|NZ=4|NZ=5)) [ZLHS=2; ZRHS=6;] - ELSEIF((NY=4|NY=5) & NZ<=2) [ZLHS=1; ZRHS=3;] - ELSEIF((NY=4|NY=5) & (NZ=3|NZ=4|NZ=5)) [ZLHS=3; ZRHS=6;] - ELSEIF((NY=5|NY=6) & NZ>=7) [ZLHS=7; ZRHS=10;] - ELSEIF(NY=6 & NZ<=4) [ZLHS=1; ZRHS=5;] - ELSEIF(NY=6 & NZ=5) [ZLHS=5; ZRHS=6;] + $SYNCHDMLC_FIND_Z_BOUNDS; - ] ELSE [ - "Quarter Isocenter leaf" - IF(NY=1)[ - IF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,2,4)=1)[ - IF(NZ<=3)[ZLHS=1; ZRHS=4;] - ELSEIF(NZ<=5)[ZLHS=4; ZRHS=6;] - ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] - ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] - ELSE[ZLHS=8; ZRHS=10;] - ] - ELSE[ - IF(NZ<=4)[ZLHS=1; ZRHS=5;] - ELSEIF(NZ=5)[ZLHS=5; ZRHS=6;] - ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] - ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] - ELSE[ZLHS=8; ZRHS=10;] - ] - ] - ELSEIF(NY=2)[ - IF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,2,4)=1)[ - IF(NZ<=3)[ZLHS=1; ZRHS=4;] - ELSEIF(NZ<=5)[ZLHS=4; ZRHS=6;] - ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] - ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] - ELSEIF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,1,2)=1)[ZLHS=8; ZRHS=10;] - ELSEIF(NZ=8)[ZLHS=8; ZRHS=9;] - ELSE[ZLHS=9; ZRHS=10;] - ] - ELSE[ - IF(NZ<=4)[ZLHS=1; ZRHS=5;] - ELSEIF(NZ=5)[ZLHS=5; ZRHS=6;] - ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] - ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] - ELSEIF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,1,2)=1)[ZLHS=8; ZRHS=10;] - ELSEIF(NZ=8)[ZLHS=8; ZRHS=9;] - ELSE[ZLHS=9; ZRHS=10;] - ] - ] - ELSEIF(NY=3)[ - IF(NZ=1)[ZLHS=1; ZRHS=2;] - ELSEIF(NZ<=5)[ZLHS=2; ZRHS=6;] - ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] - ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] - ELSEIF(NZ=8)[ZLHS=8; ZRHS=9;] - ELSE[ZLHS=9; ZRHS=10;] - ] - ELSEIF(NY=4)[ - IF(NZ<=2)[ZLHS=1; ZRHS=3;] - ELSEIF(NZ<=5)[ZLHS=3; ZRHS=6;] - ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] - ELSEIF(NZ=7)[ZLHS=7; ZRHS=8;] - ELSEIF(NZ=8)[ZLHS=8; ZRHS=9;] - ELSE[ZLHS=9; ZRHS=10;] - ] - ELSEIF(NY=5)[ - IF(NZ<=2)[ZLHS=1; ZRHS=3;] - ELSEIF(NZ<=5)[ZLHS=3; ZRHS=6;] - ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] - ELSE[ZLHS=7; ZRHS=10;] - ] - ELSEIF(NY=6)[ - IF(I_LEAF_ALT_DEF_$SYNCHDMLC(5,2,4)=1)[ - IF(NZ<=4)[ZLHS=1; ZRHS=5;] - ELSEIF(NZ=5)[ZLHS=5; ZRHS=6;] - ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] - ELSE[ZLHS=7; ZRHS=10;] - ] - ELSE[ - IF(NZ<=3)[ZLHS=1; ZRHS=4;] - ELSEIF(NZ<=5)[ZLHS=4; ZRHS=6;] - ELSEIF(NZ=6)[ZLHS=6; ZRHS=7;] - ELSE[ZLHS=7; ZRHS=10;] - ] - ] - ] IF(W(NP)~=0) [ ZP = (ZREG_$SYNCHDMLC(LEAFIS,ZRHS)-ZFL)/W(NP); ZN = (ZREG_$SYNCHDMLC(LEAFIS,ZLHS)-ZFL)/W(NP); IF( (ZP>=0.0) & (ZN>=0.0) ) [ ZDIST =MIN(ZP, ZN); ] ELSE [ ZDIST = MAX(ZP, ZN); ] - "write(*,*)' zdist,leafis ',zdist,leafis;" ] ELSE [ ZDIST = 1.0E20; ]; From 5f5143b067440cfbba886b05e4db7f5165caf23e Mon Sep 17 00:00:00 2001 From: Frederic Tessier Date: Thu, 30 Jun 2022 17:26:41 -0400 Subject: [PATCH 12/14] Remove debug output inserted to fix synchdmlc --- .../omega/beamnrc/CMs/SYNCHDMLC_cm.mortran | 31 --- .../beamnrc/CMs/SYNCHDMLC_macros.mortran | 8 - HEN_HOUSE/src/egsnrc.mortran | 224 ------------------ 3 files changed, 263 deletions(-) diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran index 1ff09fbf8..4418208af 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran @@ -783,15 +783,6 @@ ELSEIF(ORIENT_$SYNCHDMLC=3)[ ] ; -"write(*,*)' in howfar, ir, med ',IR_$SYNCHDMLC,med(IRL); - -"IF(Z(NP)>47.62001 & Z(NP)<54.37999)[" - "IF(med(irl) = 0)[" - " write(*,*)' iq,x,y,z ',iq(np),x(np),y(np),z(np);" - " write(*,*)' ir,med ',ir(np),med(irl);" - " write(*,*)' ihstry ',ihstry;" - " ]" - " ]" STEP_UNIT=0.0; COUNT = 0; OUTOFCMFLAG=0; @@ -820,7 +811,6 @@ OUTOFMLCFLAG=0; IF(N_GAP_$SYNCHDMLC=1 & IR_$SYNCHDMLC=4 ) ["Check the air gap first" IF(W(NP)>0.0) ["Particle going forward" DIST = (ZMIN_$SYNCHDMLC - Z(NP))/W(NP); "distance to front of CM" - "write(*,*)' dist ',dist; IF(DIST <= 0.0) [ USTEP=0.0; $SYNCHDMLC_FIND(IR_$SYNCHDMLC, 0.0); @@ -852,7 +842,6 @@ ELSEIF(IR_$SYNCHDMLC=1 | IR_$SYNCHDMLC=2 | IR_$SYNCHDMLC=3) [ ELSEIF(W(NP) < 0.0) [ "particle going backward" DIST = (ZMIN_$SYNCHDMLC - Z(NP))/W(NP); "distance to back of CM " - "write(*,*)' dist, ustep ',dist,ustep; IF(DIST>USTEP) [ STEP_UNIT=USTEP; ] ELSE [ STEP_UNIT=DIST; ] IF(DIST <= 0.0) [ @@ -870,18 +859,13 @@ ELSEIF(IR_$SYNCHDMLC=1 | IR_$SYNCHDMLC=2 | IR_$SYNCHDMLC=3) [ $SYNCHDMLC_FIND(REGION_$SYNCHDMLC,0.0); -"write(*,*)' leafis, region, dist ',leafis,REGION_$SYNCHDMLC,DIST; - IF(REGION_$SYNCHDMLC=4) [ "Particle is in the air gap " REGION_$SYNCHDMLC=IRSTART_$SYNCHDMLC-1+REGION_$SYNCHDMLC; IF(W(NP) > 0.0)[ IF(DIST <= USTEP ) ["particle to be moved to region boundary" - "write(*,*)' ustep, dist here ',ustep,dist; $GEO_SHIFT_1_(DIST); - "write(*,*)' and ustep, dist here ',ustep,dist; USTEP = DIST; $SYNCHDMLC_FIND(NEWREGION_$SYNCHDMLC,USTEP); - "write(*,*)' ustep, newregion ',ustep,NEWREGION_$SYNCHDMLC; IF( NEWREGION_$SYNCHDMLC=1) [IRNEW =IRSTART_$SYNCHDMLC; RETURN;] ELSE[IRNEW =IRSTART_$SYNCHDMLC+1; RETURN;] ] @@ -946,11 +930,6 @@ IF(OUTOFMLCFLAG=1) [ $SYNCHDMLC_MINDISTANCE(DIST1); -"write(*,*)' dist1 ',dist1; -"write(*,*)' x,y,z ',x(np),y(np),z(np); -"write(*,*)' leafis,nx,ny,nz ',leafis,nx,ny,nz; -"write(*,*)' dist1,step_unit ',DIST1,STEP_UNIT; - "OUTPUT REGION_$SYNCHDMLC;(I3);" IF((DIST1>=STEP_UNIT) | (DIST1<0)) [ @@ -983,9 +962,6 @@ ELSEIF( (STEP_UNIT>DIST1) & (DIST1>=0)) [ NEWREGION_$SYNCHDMLC=NEWREGION_$SYNCHDMLC+IRSTART_$SYNCHDMLC-1; " OUTPUT REGION_$SYNCHDMLC;(I3);" - "write(*,*)' region, newregion, dist1 ',REGION_$SYNCHDMLC, - " NEWREGION_$SYNCHDMLC,DIST1; - IF( OUTOFCMFLAG=1 ) [ EXIT; ] ELSEIF( (NEWREGION_$SYNCHDMLC~=REGION_$SYNCHDMLC) @@ -1018,7 +994,6 @@ ELSEIF( (STEP_UNIT>DIST1) & (DIST1>=0)) [ RETURN; ] ELSE [ $SYNCHDMLC_MINDISTANCE(DIST2); - "write(*,*)' dist1, dist2 ',dist1,dist2; DIST1=DIST1+DIST2; ]; @@ -3730,8 +3705,6 @@ IF(LEAFIS~=0) [ ] "Check if we are in groove on leaf and move to adjacent leaf" -"write(*,*)' before check leafis, leaftype ',leafis,LEAFTYPE_$SYNCHDMLC(LEAFIS); -"write(*,*)' nx, ny, nz ',nx,ny,nz; IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ "target leaf" IF(LEAFIS~=TOT_LEAF_$SYNCHDMLC & ((((NY=5|NY=6) & (NZ=7|NZ=8|NZ=9)) & @@ -4145,9 +4118,6 @@ IF(LEAFIS~=0) [ DIST=MIN(ABS(ZREG_$SYNCHDMLC(LEAFIS,I1)-Z(NP)), ABS(ZREG_$SYNCHDMLC(LEAFIS,I2)-Z(NP))); - "write(*,*)' x,y,z ',x(np),y(np),z(np); - "write(*,*)' nx,ny,nz ',nx,ny,nz; - "write(*,*)' leafis,i1,i2,zdist ',leafis,i1,i2,dist; "Calculates distance to closest boundary in z direction" "--> 3) 7 Jul 2009" @@ -4656,7 +4626,6 @@ IF(LEAFIS~=0) [ SQRT(1+TEMP2**2)); DIST = MIN(DIST,TEMP1,TEMP2); - "write(*,*)' ydist ',dist; "NOW CHECK DISTANCE IN X DIRECTION" IF(ENDTYPE_$SYNCHDMLC=1) [ "focused leaf end" TEMP1=SURPARA2_B_$SYNCHDMLC(LEAFIS); diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran index fd4ad6c09..a3345da38 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_macros.mortran @@ -518,8 +518,6 @@ ELSE ["inside leaf bank" NY=NY+1; ]; - "write(*,*)' leafis, xyfl1, ny ',leafis,xyfl(1),ny;" - IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ "Originally on Target (Quarter or Half) Leaf" @@ -698,9 +696,6 @@ ELSE ["inside leaf bank" ELSEIF((XYFL(2)>TEMP4) | (XYFL(2)=TEMP4 & UVL(2)>=0)) [ NX=5;] ]; - "write(*,*)' find: leafis, x, y, z ',leafis,xyfl(2),xyfl(1),zfl;" - "write(*,*)' nx, ny, nz, subindex ',nx,ny,nz," - " SUBINDEX_$SYNCHDMLC(LEAFIS,NX,NY,NZ);" {P1}=SUBINDEX_$SYNCHDMLC(LEAFIS,NX,NY,NZ); "OUTPUT LEAFIS,XYFL(2),XYFL(1),ZFL,{P1};" @@ -1401,7 +1396,6 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; ELSE [ YN = 1.0E20; ]; IF((YP>=0.0) & (YN>=0.0) ) [ YDIST =MIN(YP, YN); ] ELSE [ YDIST = MAX(YP,YN);]; - "write(*,*)' i,j, rhs, lhs, ydist ',i,j,rhs,lhs,ydist;" IF(ENDTYPE_$SYNCHDMLC = 1) ["focused leaf end" HOLE=HOLEPOS_$SYNCHDMLC(LEAFIS); TEMP3=LEAFB_$SYNCHDMLC(LEAFIS)-HOLE; @@ -1456,7 +1450,6 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; TEMP3 = UVL(2)*(XYFL(2)-XoP)+W(NP)*(ZFL-Zo); "B in eqn" TEMP4 = (XYFL(2)-XoN)**2 + (ZFL-Zo)**2; "part of C" TEMP5 = (XYFL(2)-XoP)**2 + (ZFL-Zo)**2; "part of C" - "write(*,*)' nx ',nx;" IF((XYFL(2)>=XoN) & (SQRT((XYFL(2)-XoN)**2+(ZFL-Zo)**2)- LEAFRADIUS_$SYNCHDMLC=0.0) & (UVL(2)*(XYFL(2)-XoN)+W(NP)*(ZFL-Zo)=0.0)) [ XN=0.0; XP=1.0E20; "on edge of negative leaf" @@ -1572,7 +1565,6 @@ REPLACE {$SYNCHDMLC_MINDISTANCE(#);} WITH {; ]; IF( (XP>=0.0) & (XN>=0.0) ) [ XDIST =MIN(XP, XN); ] ELSE [ XDIST = MAX(XP,XN); ]; -"write(*,*)' xdist ',xdist;" IF( ZDIST>=0.0) [TEMP=ZDIST; IF( YDIST>=0.0 ) [TEMP=MIN(TEMP,YDIST);]; IF( XDIST>=0.0 ) [TEMP=MIN(TEMP,XDIST);]; diff --git a/HEN_HOUSE/src/egsnrc.mortran b/HEN_HOUSE/src/egsnrc.mortran index 1ca92ccf5..ed3bc507a 100644 --- a/HEN_HOUSE/src/egsnrc.mortran +++ b/HEN_HOUSE/src/egsnrc.mortran @@ -1041,117 +1041,6 @@ $start_new_particle; :NEWELECTRON:LOOP [ -IF(Y(NP) > -0.73059 & Y(NP) < -0.689 & - Z(NP) > 50.998 & ABS(X(NP))<10.0 & MED(IR(NP))=2)[ - write(*,*)' half air test 1'; - write(*,*)' e,x,y,z,ir ',E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.8258 & Y(NP) < -0.689 & - Z(NP) > 47.716 & Z(NP) < 47.979 & ABS(X(NP))<10.0 & MED(IR(NP))=2)[ - write(*,*)' half air test 2'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.693 & Y(NP) < -0.689 & ABS(X(NP))<10.0 & Z(NP) > 47.716 & - MED(IR(NP))=2)[ - write(*,*)' half air test 3'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.9259 & Y(NP) <-0.8234 & Z(NP) >53.998 & ABS(X(NP))<10.0 & - MED(IR(NP))=2)[ - write(*,*)' half air test 4'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.9632 & Y(NP) < -0.689 & Z(NP) >54.1161 & ABS(X(NP))<10.0 & - MED(IR(NP))=2)[ - write(*,*)' half air test 5'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.9632 & Y(NP) < -0.926 & Z(NP) >50.996 & ABS(X(NP))<10.0 & - MED(IR(NP))=2)[ - write(*,*)' half air test 6'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.9259 & Y(NP) <-0.7306 & Z(NP) <53.996 & Z(NP)>47.981 & - ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' half med test 7'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.9259 & Y(NP) <-0.6933 & Z(NP) <50.996 & Z(NP)>47.981 & - ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' half med test 8'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.9632 & Y(NP) <-0.689 & Z(NP) <47.714 & Z(NP)>47.6201 & - ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' half med test 9'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.9632 & Y(NP) <-0.826 & Z(NP) <50.994 & Z(NP)>47.6201 & - ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' half med test 10'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.823 & Y(NP) <-0.7306 & Z(NP) <54.116 & Z(NP)>53.998 & - ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' half med test 11'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -"IF(Y(NP) > -0.7274 & Y(NP) <-0.4566 & Z(NP) <47.884 & Z(NP)>47.621 & -" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ -" write(*,*)' iso air test 1'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.7274 & Y(NP) <-0.7266 & Z(NP) <54.284 & Z(NP)>47.621 & -" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ -" write(*,*)' iso air test 2'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -" stop; -"] -"IF(Y(NP) > -0.7274 & Y(NP) <-0.6893 & Z(NP) <51.103 & Z(NP)>47.621 & -" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ -" write(*,*)' iso air test 3'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.7274 & Y(NP) <-0.6106 & Z(NP) <54.284 & Z(NP)>54.021 & -" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ -" write(*,*)' iso air test 4'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.6142 & Y(NP) <-0.4566 & Z(NP) <48.00 & Z(NP)>47.621 & -" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ -" write(*,*)' iso air test 5'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.4936 & Y(NP) <-0.4566 & Z(NP) <51.2 & Z(NP)>47.621 & -" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ -" write(*,*)' iso air test 6'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.7274 & Y(NP) <-0.4566 & Z(NP) <54.375 & Z(NP)>54.286 & -" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ -" write(*,*)' iso med test 7'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.6104 & Y(NP) <-0.4566 & Z(NP) <54.375 & Z(NP)>51.206 & -" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ -" write(*,*)' iso med test 8'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.7265 & Y(NP) <-0.4938 & Z(NP) <54.02 & Z(NP)>51.105 & -" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ -" write(*,*)' iso med test 9'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.6892 & Y(NP) <-0.4938 & Z(NP) <51.103 & Z(NP)>48.005 & -" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ -" write(*,*)' iso med test 10'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.6892 & Y(NP) <-0.6143 & Z(NP) <48.003 & Z(NP)>47.886 & -" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ -" write(*,*)' iso med test 11'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] "Go once through this loop for each 'new' electron whose charge and "energy has not been checked @@ -1293,7 +1182,6 @@ IF(Y(NP) > -0.823 & Y(NP) <-0.7306 & Z(NP) <54.116 & Z(NP)>53.998 & $SET-TUSTEP-EM-FIELD; "optional tustep restriction in EM field $CALL-HOWNEAR(tperp); - "write(*,*)'ustep, tperp ',ustep,tperp; dnear(np) = tperp; $RANGE-DISCARD; "optional regional range rejection for" "particles below e_max_rr if i_do_rr set" @@ -6592,118 +6480,6 @@ $EVALUATE GMFPR0 USING GMFP(GLE);] :PTRANS: LOOP["PHOTON TRANSPORT LOOP" -IF(Y(NP) > -0.73059 & Y(NP) < -0.689 & - Z(NP) > 50.998 & ABS(X(NP))<10.0 & MED(IR(NP))=2)[ - write(*,*)' half air test 1'; - write(*,*)' e,x,y,z,ir ',E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.8258 & Y(NP) < -0.689 & - Z(NP) > 47.716 & Z(NP) < 47.979 & ABS(X(NP))<10.0 & MED(IR(NP))=2)[ - write(*,*)' half air test 2'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.693 & Y(NP) < -0.689 & ABS(X(NP))<10.0 & Z(NP) > 47.716 & - MED(IR(NP))=2)[ - write(*,*)' half air test 3'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.9259 & Y(NP) <-0.8234 & Z(NP) >53.998 & ABS(X(NP))<10.0 & - MED(IR(NP))=2)[ - write(*,*)' half air test 4'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.9632 & Y(NP) < -0.689 & Z(NP) >54.1161 & ABS(X(NP))<10.0 & - MED(IR(NP))=2)[ - write(*,*)' half air test 5'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.9632 & Y(NP) < -0.926 & Z(NP) >50.996 & ABS(X(NP))<10.0 & - MED(IR(NP))=2)[ - write(*,*)' half air test 6'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.9259 & Y(NP) <-0.7306 & Z(NP) <53.996 & Z(NP)>47.981 & - ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' half med test 7'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.9259 & Y(NP) <-0.6933 & Z(NP) <50.996 & Z(NP)>47.981 & - ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' half med test 8'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.9632 & Y(NP) <-0.689 & Z(NP) <47.714 & Z(NP)>47.6201 & - ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' half med test 9'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.9632 & Y(NP) <-0.826 & Z(NP) <50.994 & Z(NP)>47.6201 & - ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' half med test 10'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -IF(Y(NP) > -0.823 & Y(NP) <-0.7306 & Z(NP) <54.116 & Z(NP)>53.998 & - ABS(X(NP))<10.0 & MED(IR(NP))=1)[ - write(*,*)' half med test 11'; - write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -] -"IF(Y(NP) > -0.7274 & Y(NP) <-0.4566 & Z(NP) <47.884 & Z(NP)>47.621 & -" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ -" write(*,*)' iso air test 1'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.7274 & Y(NP) <-0.7266 & Z(NP) <54.284 & Z(NP)>47.621 & -" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ -" write(*,*)' iso air test 2'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.7274 & Y(NP) <-0.6893 & Z(NP) <51.103 & Z(NP)>47.621 & -" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ -" write(*,*)' iso air test 3'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -" stop; -"] -"IF(Y(NP) > -0.7274 & Y(NP) <-0.6106 & Z(NP) <54.284 & Z(NP)>54.021 & -" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ -" write(*,*)' iso air test 4'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.6142 & Y(NP) <-0.4566 & Z(NP) <48.00 & Z(NP)>47.621 & -" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ -" write(*,*)' iso air test 5'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.4936 & Y(NP) <-0.4566 & Z(NP) <51.2 & Z(NP)>47.621 & -" ABS(X(NP))<10.0 & MED(IR(NP))=2)[ -" write(*,*)' iso air test 6'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.7274 & Y(NP) <-0.4566 & Z(NP) <54.375 & Z(NP)>54.286 & -" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ -" write(*,*)' iso med test 7'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.6104 & Y(NP) <-0.4566 & Z(NP) <54.375 & Z(NP)>51.206 & -" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ -" write(*,*)' iso med test 8'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.7265 & Y(NP) <-0.4938 & Z(NP) <54.02 & Z(NP)>51.105 & -" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ -" write(*,*)' iso med test 9'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.6892 & Y(NP) <-0.4938 & Z(NP) <51.103 & Z(NP)>48.005 & -" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ -" write(*,*)' iso med test 10'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] -"IF(Y(NP) > -0.6892 & Y(NP) <-0.6143 & Z(NP) <48.003 & Z(NP)>47.886 & -" ABS(X(NP))<10.0 & MED(IR(NP))=1)[ -" write(*,*)' iso med test 11'; -" write(*,*)' iq,e,x,y,z,ir ',IQ(NP),E(NP),X(NP),Y(NP),Z(NP),IR(NP); -"] - IF (MEDIUM.EQ.0)[TSTEP=VACDST;] ELSE [$SET-RHOF; "DENSITY RATIO SCALING TEMPLATE" GMFP=GMFPR0/RHOF; From 11cf3b82d7d538bc33d2eec90262fb59cef7bc02 Mon Sep 17 00:00:00 2001 From: Blake Walters Date: Fri, 20 May 2022 11:40:21 -0700 Subject: [PATCH 13/14] Update documentation to reflect synchdmlc changes --- .../pirs509a-beamnrc/figures/synchdmlcd.fig | 364 +++++++++--------- .../pirs509a-beamnrc/figures/synchdmlcd.pdf | Bin 26102 -> 25511 bytes .../src/pirs509a-beamnrc/pirs509a-beamnrc.tex | 139 ++++--- 3 files changed, 258 insertions(+), 245 deletions(-) diff --git a/HEN_HOUSE/doc/src/pirs509a-beamnrc/figures/synchdmlcd.fig b/HEN_HOUSE/doc/src/pirs509a-beamnrc/figures/synchdmlcd.fig index 090e190a1..6c11a4e30 100644 --- a/HEN_HOUSE/doc/src/pirs509a-beamnrc/figures/synchdmlcd.fig +++ b/HEN_HOUSE/doc/src/pirs509a-beamnrc/figures/synchdmlcd.fig @@ -1,4 +1,4 @@ -#FIG 3.2 Produced by xfig version 3.2.5b +#FIG 3.2 Produced by xfig version 3.2.8b Portrait Center Inches @@ -178,22 +178,10 @@ Single 1 1 1.00 60.00 90.00 1 1 1.00 60.00 90.00 6815 14424 7527 14424 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 1014 499 1014 5747 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 1289 499 1289 5778 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 1777 5290 -419 5290 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 1838 2666 -359 2666 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 1868 835 -327 835 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 1534 499 1534 5778 -2 1 1 1 0 6 50 0 20 4.000 0 0 -1 0 0 2 - 1831 2929 -366 2929 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 1892 3904 -457 3904 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 1800 3649 -395 3649 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 @@ -215,10 +203,6 @@ Single 1 1 1.00 94.50 94.50 1 1 1.00 94.50 94.50 -181 967 557 967 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 1838 1140 -359 1140 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 - -64 1036 520 1036 520 1237 -64 1237 -64 1036 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 1 2 1 1 1.00 66.00 36.00 1 1 1.00 66.00 36.00 @@ -242,26 +226,12 @@ Single 1 1 1.00 66.00 36.00 1 1 1.00 66.00 36.00 818 5228 1012 5228 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 1 2 - 1 1 1.00 96.00 96.00 - 1 1 1.00 96.00 96.00 - 21 4066 1513 4066 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 - 673 4966 1138 4966 1138 5176 673 5176 673 4966 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 96.00 96.00 1662 4253 1664 4676 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 96.00 96.00 1735 4922 1742 5299 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 - 283 4411 748 4411 748 4621 283 4621 283 4411 -2 2 0 0 -1 7 0 0 20 0.000 0 0 -1 0 0 5 - 171 2002 921 2002 921 2266 171 2266 171 2002 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 801 499 801 5747 -2 1 1 1 0 7 51 0 -1 4.000 0 0 -1 0 0 2 - 588 499 588 5747 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 13577 5526 11774 5526 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 @@ -274,14 +244,6 @@ Single 13652 827 11851 827 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 13603 4765 11799 4765 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 13636 591 11836 591 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 12776 491 12776 5740 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 13177 491 13177 5771 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 12125 491 12125 5740 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 1 2 1 1 1.00 94.50 94.50 1 1 1.00 94.50 94.50 @@ -308,8 +270,6 @@ Single 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 96.00 96.00 12921 561 12924 1120 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 13627 2901 11825 2901 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 1 2 1 1 1.00 66.00 36.00 1 1 1.00 66.00 36.00 @@ -319,14 +279,6 @@ Single 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 96.00 96.00 13305 2168 13298 2527 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 1 2 - 1 1 1.00 96.00 96.00 - 1 1 1.00 96.00 96.00 - 12338 1794 13355 1794 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 - 12653 1686 12930 1686 12930 1903 12653 1903 12653 1686 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 11881 4196 13333 4196 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 11922 3862 13374 3862 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 @@ -352,18 +304,10 @@ Single 14717 600 14725 5505 2 2 0 0 0 7 50 -1 20 0.000 0 0 -1 0 0 5 14273 2737 15443 2737 15443 3067 14273 3067 14273 2737 -2 1 1 1 0 6 50 0 20 4.000 0 0 -1 0 0 2 - 7 499 7 5747 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 1777 4680 -419 4680 -2 3 0 2 0 6 51 0 20 0.000 0 0 -1 0 0 17 - -205 865 -205 2666 7 2666 7 4680 1014 4680 1014 5290 - 801 5290 801 5533 1534 5533 1534 2910 1289 2910 1289 1140 - 588 1140 588 835 -205 835 -205 897 -205 865 2 1 1 1 0 7 52 0 -1 4.000 0 0 -1 0 0 2 -208 484 -208 5732 -2 2 0 2 0 14 51 0 20 0.000 0 0 -1 0 0 5 - -4 3642 1511 3642 1511 3904 -4 3904 -4 3642 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 -566 4694 244 3734 2 3 0 2 0 6 51 0 20 0.000 0 0 -1 0 0 17 @@ -392,22 +336,14 @@ Single 4477 8983 4443 9087 4789 9087 4809 8977 4477 8983 2 3 0 2 0 13 50 0 20 0.000 0 0 -1 0 0 5 4754 9625 4737 9724 5064 9719 5064 9624 4754 9625 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 2786 1929 4553 1929 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 2755 1655 4523 1655 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 4795 1655 2605 1655 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 4523 436 4523 5707 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 4795 1929 2605 1929 -2 1 1 1 0 7 52 0 -1 4.000 0 0 -1 0 0 2 - 2753 405 2753 5645 2 2 0 2 0 14 51 0 20 0.000 0 0 -1 0 0 5 2748 1655 4523 1655 4523 1915 2748 1915 2748 1655 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 3003 407 3003 5647 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 96.00 96.00 4583 314 4586 873 @@ -446,8 +382,6 @@ Single 4208 2536 4507 2536 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 4355 2569 4659 2936 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 4757 5077 2567 5077 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 4779 2296 2522 2304 2 3 0 2 0 6 51 0 20 0.000 0 0 -1 0 0 15 @@ -562,14 +496,10 @@ Single 10918 8760 11283 8760 11283 12020 10918 12020 10918 8760 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 10706 5267 8928 5267 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 9100 1934 10534 1934 2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 9075 1661 10510 1661 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 10731 1661 8953 1661 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 10731 1934 8953 1934 2 2 0 2 0 14 51 0 20 0.000 0 0 -1 0 0 5 9069 1661 10510 1661 10510 1920 9069 1920 9069 1661 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 @@ -601,10 +531,6 @@ Single 1 1 1.00 66.00 36.00 1 1 1.00 66.00 36.00 10255 2561 10505 2561 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 1 2 - 1 1 1.00 96.00 96.00 - 1 1 1.00 96.00 96.00 - 9285 3770 10505 3773 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2 1 1 1.00 96.00 96.00 10355 4499 10355 5054 @@ -633,10 +559,6 @@ Single 5097 6830 5097 10745 2 4 2 1 -1 7 0 0 -1 3.000 0 0 7 0 0 5 1151 8456 9332 8456 9332 10196 1151 10196 1151 8456 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 6865 481 6865 5760 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 7355 481 7355 5791 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 7845 5545 5640 5545 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 @@ -649,18 +571,6 @@ Single 7906 1126 5702 1126 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 7937 819 5734 819 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 5825 3886 7600 3886 -2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 5825 4197 7600 4197 -2 3 0 2 0 6 51 0 20 0.000 0 0 -1 0 0 15 - 6314 819 6314 2662 5942 2661 5942 4776 6865 4779 6865 5299 - 6069 5299 6069 5545 7600 5545 7600 2905 7355 2905 7355 1126 - 6652 1126 6652 819 6314 819 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 7814 3886 5717 3883 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 7937 4197 5680 4198 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 7877 4779 5672 4779 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 @@ -705,8 +615,6 @@ Single 1 1 1.00 66.00 36.00 1 1 1.00 66.00 36.00 7367 2986 7566 2986 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 - 8067 2306 7465 2966 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 1 2 1 1 1.00 94.50 94.50 1 1 1.00 94.50 94.50 @@ -715,46 +623,16 @@ Single 1 1 1.00 94.50 94.50 1 1 1.00 94.50 94.50 5965 4686 6848 4686 -2 2 0 0 -1 7 0 0 20 0.000 0 0 -1 0 0 5 - 6408 3903 7158 3903 7158 4167 6408 4167 6408 3903 -2 1 1 1 0 7 52 0 -1 4.000 0 0 -1 0 0 2 - 5942 466 5942 5745 -2 2 0 2 0 14 51 0 20 0.000 0 0 -1 0 0 5 - 5935 3883 7593 3883 7593 4201 5935 4201 5935 3883 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 6314 481 6314 5760 -2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 1 2 - 1 1 1.00 96.00 96.00 - 1 1 1.00 96.00 96.00 - 6310 1809 7606 1809 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 - 6647 1681 6985 1681 6985 1899 6647 1899 6647 1681 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 6652 481 6652 5760 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 6069 481 6069 5760 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 - 6138 4530 6603 4530 6603 4740 6138 4740 6138 4530 2 2 0 0 0 7 50 -1 20 0.000 0 0 -1 0 0 5 5628 1478 6213 1478 6213 1703 5628 1703 5628 1478 2 2 0 0 0 7 50 -1 20 0.000 0 0 -1 0 0 5 11643 1455 12250 1455 12250 1747 11643 1747 11643 1455 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 12325 491 12325 5740 -2 3 0 2 0 6 51 0 20 0.000 0 0 -1 0 0 15 - 12325 827 12325 2660 12020 2659 12020 4762 12776 4765 12776 5282 - 12125 5282 12125 5526 13378 5526 13388 2542 13178 2542 13177 1132 - 12601 1132 12601 827 12325 827 2 2 0 0 0 7 50 -1 20 0.000 0 0 -1 0 0 5 12003 1837 12258 1837 12258 2070 12003 2070 12003 1837 2 2 0 0 0 7 50 -1 20 0.000 0 0 -1 0 0 5 10250 4257 10505 4257 10505 4490 10250 4490 10250 4257 -2 1 1 1 0 7 52 0 -1 4.000 0 0 -1 0 0 2 - 12020 476 12020 5725 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 13651 4190 11806 4191 -2 2 0 2 0 14 51 0 20 0.000 0 0 -1 0 0 5 - 12015 3875 13369 3875 13369 4182 12015 4182 12015 3875 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 1 2 1 1 1.00 94.50 94.50 1 1 1.00 94.50 94.50 @@ -771,14 +649,12 @@ Single 9945 1305 10486 1305 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 4818 1237 2626 1237 -2 3 0 2 0 6 52 0 20 0.000 0 0 -1 0 0 15 +2 3 0 2 0 6 57 0 20 0.000 0 0 -1 0 0 15 4187 5281 4186 2459 4531 2461 4523 1228 3825 1230 3828 894 4400 893 4400 589 2755 589 2739 2304 2996 2309 2994 5069 3705 5070 3705 5280 4187 5281 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 4400 436 4400 5707 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 4766 893 2574 893 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 1 2 1 1 1.00 94.50 94.50 1 1 1.00 94.50 94.50 @@ -787,27 +663,19 @@ Single 1 1 1.00 66.00 66.00 1 1 1.00 66.00 66.00 3714 5352 4164 5352 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 12601 491 12601 5740 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 +2 2 0 0 0 7 47 0 20 0.000 0 0 -1 0 0 5 12214 4410 12594 4410 12594 4619 12214 4619 12214 4410 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 - 12282 4926 12634 4926 12634 5130 12282 5130 12282 4926 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 +2 2 0 0 0 7 47 0 20 0.000 0 0 -1 0 0 5 6257 4970 6722 4970 6722 5180 6257 5180 6257 4970 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 13400 493 13400 5773 2 2 0 0 0 7 50 -1 20 0.000 0 0 -1 0 0 5 13260 1873 13590 1873 13590 2120 13260 2120 13260 1873 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 7600 481 7600 5791 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 4187 436 4187 5676 2 1 1 1 0 7 55 0 -1 4.000 0 0 -1 0 0 2 14814 591 -245 581 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 +2 2 0 0 0 7 47 0 20 0.000 0 0 -1 0 0 5 3877 637 4342 637 4342 847 3877 847 3877 637 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 +2 2 0 0 0 7 47 0 20 0.000 0 0 -1 0 0 5 3975 1380 4440 1380 4440 1590 3975 1590 3975 1380 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 3697 400 3697 5640 @@ -817,46 +685,178 @@ Single 1 1 1.00 96.00 96.00 1 1 1.00 96.00 96.00 3021 3748 4521 3766 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 - 3502 3630 3840 3630 3840 3848 3502 3848 3502 3630 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 15182 5524 -419 5533 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 - 3697 5415 4281 5415 4281 5616 3697 5616 3697 5415 2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 9923 443 9923 5654 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 +2 1 1 1 0 7 49 0 -1 4.000 0 0 -1 0 0 2 10706 904 8928 904 2 1 1 1 0 7 55 0 -1 4.000 0 0 -1 0 0 2 10706 601 8928 601 -2 3 0 2 0 6 52 0 20 0.000 0 0 -1 0 0 15 +2 3 0 2 0 6 57 0 20 0.000 0 0 -1 0 0 15 10236 5267 10235 2460 10516 2462 10510 1237 9930 1236 9930 906 10409 904 10409 601 9075 601 9061 2307 9269 2312 9268 5056 9780 5055 9780 5273 10236 5267 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 10236 449 10236 5660 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 - 9948 675 10383 675 10383 867 9948 867 9948 675 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 10409 449 10409 5691 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 - 9960 1380 10478 1380 10478 1609 9960 1609 9960 1380 -2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 - 9773 435 9773 5646 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 - 9631 3637 9973 3637 9973 3870 9631 3870 9631 3637 2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 1 2 1 1 1.00 66.00 66.00 1 1 1.00 66.00 66.00 9786 5325 10235 5324 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 - 9741 5385 10325 5385 10325 5586 9741 5586 9741 5385 2 2 0 0 -1 7 6 0 20 0.000 0 0 -1 0 0 5 -384 4769 366 4769 366 5033 -384 5033 -384 4769 -2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 - 495 3937 833 3937 833 4155 495 4155 495 3937 2 2 0 0 0 7 50 0 20 0.000 0 0 -1 0 0 5 10262 4260 10470 4260 10470 4485 10262 4485 10262 4260 +2 1 1 1 0 6 50 0 20 4.000 0 0 -1 0 0 2 + 7 499 7 5747 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 1892 3904 -457 3904 +2 2 0 2 0 14 51 0 20 0.000 0 0 -1 0 0 5 + -4 3642 1511 3642 1511 3904 -4 3904 -4 3642 +2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 1 2 + 1 1 1.00 96.00 96.00 + 1 1 1.00 96.00 96.00 + 13 4245 1505 4245 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 645 507 645 5755 +2 2 0 0 0 7 48 0 20 0.000 0 0 -1 0 0 5 + 352 4343 817 4343 817 4553 352 4553 352 4343 +2 3 0 2 0 6 57 0 20 0.000 0 0 -1 0 0 15 + 6314 819 6314 2662 5942 2661 5942 4776 6865 4779 6865 5299 + 6069 5299 6069 5545 7600 5545 7600 2905 7355 2905 7355 1126 + 6652 1126 6652 819 6314 819 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 6652 481 6652 5760 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 5788 3922 7563 3922 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 7822 3916 5725 3913 +2 1 1 1 0 7 52 0 -1 4.000 0 0 -1 0 0 2 + 5942 466 5942 5745 +2 2 0 2 0 14 51 0 20 0.000 0 0 -1 0 0 5 + 5939 3915 7597 3915 7597 4233 5939 4233 5939 3915 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 7899 4230 5642 4231 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 6865 481 6865 5760 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 5903 4230 7678 4230 +2 2 0 0 -1 7 0 0 20 0.000 0 0 -1 0 0 5 + 6378 3944 7128 3944 7128 4208 6378 4208 6378 3944 +2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 8067 2306 7465 2966 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 9051 1912 10485 1912 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 10738 1920 8960 1920 +2 3 0 2 0 6 57 0 20 0.000 0 0 -1 0 0 15 + 12325 827 12325 2660 12020 2659 12020 4762 12776 4765 12776 5282 + 12125 5282 12125 5526 13378 5526 13388 2542 13178 2542 13177 1132 + 12601 1132 12601 827 12325 827 +2 2 0 2 0 14 51 0 20 0.000 0 0 -1 0 0 5 + 12015 3863 13369 3863 13369 4170 12015 4170 12015 3863 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 13643 4170 11798 4171 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 11936 4170 13388 4170 +2 1 1 1 0 7 52 0 -1 4.000 0 0 -1 0 0 2 + 12023 476 12023 5725 +2 1 1 1 0 7 49 0 -1 4.000 0 0 -1 0 0 2 + 10236 449 10236 5660 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 10409 449 10409 5691 +2 2 0 0 0 7 47 0 20 0.000 0 0 -1 0 0 5 + 9960 1380 10478 1380 10478 1609 9960 1609 9960 1380 +2 2 0 0 0 7 48 0 20 0.000 0 0 -1 0 0 5 + 9948 675 10383 675 10383 867 9948 867 9948 675 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 4795 1912 2605 1912 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 2786 1912 4553 1912 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 801 499 801 5747 +2 2 0 0 0 7 48 0 20 0.000 0 0 -1 0 0 5 + 675 3982 1013 3982 1013 4200 675 4200 675 3982 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 1289 499 1289 5778 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 1777 5290 -419 5290 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 1534 499 1534 5778 +2 3 0 2 0 6 57 0 20 0.000 0 0 -1 0 0 17 + -205 865 -205 2666 7 2666 7 4680 1014 4680 1014 5290 + 801 5290 801 5533 1534 5533 1534 2910 1289 2910 1289 1140 + 588 1140 588 835 -205 835 -205 897 -205 865 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 4757 5077 2567 5077 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 4766 893 2574 893 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 3003 407 3003 5647 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 7600 481 7600 5791 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 7355 481 7355 5791 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 13177 491 13177 5771 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 9773 435 9773 5646 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 13380 486 13380 5766 +2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 1 2 + 1 1 1.00 96.00 96.00 + 1 1 1.00 96.00 96.00 + 9285 3770 10505 3773 +2 2 0 0 0 7 47 0 20 0.000 0 0 -1 0 0 5 + 9685 3487 10027 3487 10027 3720 9685 3720 9685 3487 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 15182 5524 -419 5533 +2 2 0 0 0 7 47 0 20 0.000 0 0 -1 0 0 5 + 9719 5372 10303 5372 10303 5573 9719 5573 9719 5372 +2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 1 2 + 1 1 1.00 96.00 96.00 + 1 1 1.00 96.00 96.00 + 6310 1809 7606 1809 +2 2 0 0 0 7 47 0 20 0.000 0 0 -1 0 0 5 + 6682 1553 7020 1553 7020 1771 6682 1771 6682 1553 +2 2 0 0 0 7 47 0 20 0.000 0 0 -1 0 0 5 + 6195 4448 6660 4448 6660 4658 6195 4658 6195 4448 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 6314 481 6314 5760 +2 2 0 0 0 7 47 0 20 0.000 0 0 -1 0 0 5 + 3450 3495 3788 3495 3788 3713 3450 3713 3450 3495 +2 2 0 0 0 7 47 0 20 0.000 0 0 -1 0 0 5 + 3644 5415 4228 5415 4228 5616 3644 5616 3644 5415 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 1838 1140 -359 1140 +2 2 0 0 0 7 47 0 20 0.000 0 0 -1 0 0 5 + -111 1050 473 1050 473 1251 -111 1251 -111 1050 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 1014 499 1014 5747 +2 2 0 0 0 7 47 0 20 0.000 0 0 -1 0 0 5 + 652 4965 1117 4965 1117 5175 652 5175 652 4965 +2 2 0 0 -1 7 47 0 20 0.000 0 0 -1 0 0 5 + 171 2002 921 2002 921 2266 171 2266 171 2002 +2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 1 2 + 1 1 1.00 96.00 96.00 + 1 1 1.00 96.00 96.00 + 12338 1830 13355 1830 +2 1 1 1 0 7 51 0 -1 4.000 0 0 -1 0 0 2 + 12768 543 12768 5792 +2 2 0 0 0 7 47 0 20 0.000 0 0 -1 0 0 5 + 12638 1575 12915 1575 12915 1792 12638 1792 12638 1575 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 12601 491 12601 5740 +2 2 0 0 0 7 47 0 20 0.000 0 0 -1 0 0 5 + 12282 4926 12634 4926 12634 5130 12282 5130 12282 4926 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 12128 481 12128 5730 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 13636 591 11836 591 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 12315 454 12315 5703 +2 1 1 1 0 7 52 0 -1 4.000 0 0 -1 0 0 2 + 2745 390 2745 5630 +2 1 1 1 0 7 50 0 -1 4.000 0 0 -1 0 0 2 + 13635 2543 11833 2543 +2 1 1 1 0 6 50 0 20 4.000 0 0 -1 0 0 2 + 1831 2910 -366 2910 4 0 -1 0 0 18 16 0.0000 4 210 165 8160 14739 Z\001 4 0 -1 0 0 18 16 0.0000 4 210 165 2687 14859 Z\001 4 0 -1 0 0 18 16 0.0000 4 270 1410 2851 14528 RMAX_CM\001 @@ -887,17 +887,12 @@ Single 4 0 0 50 0 18 16 0.0000 4 210 225 873 278 zl\001 4 0 0 50 0 18 16 0.0000 4 210 495 1827 3542 zbh\001 4 0 0 50 0 18 16 0.0000 4 210 330 1731 2350 zg\001 -4 0 0 50 0 18 16 0.0000 4 270 540 -24 1207 wtip\001 4 0 0 50 0 18 16 0.0000 4 195 240 -473 2049 zt\001 4 0 0 50 0 18 16 0.0000 4 195 285 -551 3378 wt\001 4 0 0 50 0 18 16 0.0000 4 210 375 1632 1877 wg\001 4 0 0 50 0 18 16 0.0000 4 210 405 1599 3236 zth\001 -4 0 0 50 0 18 16 0.0000 4 210 525 676 5147 wbs\001 4 0 0 50 0 18 16 0.0000 4 195 390 1604 4216 zts\001 4 0 0 50 0 18 16 0.0000 4 210 480 1715 4899 zbs\001 -4 0 0 50 0 18 16 0.0000 4 195 435 317 4584 wts\001 -4 0 0 50 0 18 16 0.0000 4 210 270 530 4155 wl\001 -4 0 -1 0 0 18 16 0.0000 4 210 780 216 2221 MED2\001 4 0 -1 0 0 18 18 0.0000 4 210 1170 3131 -176 TARGET\001 4 0 -1 0 0 18 18 0.0000 4 210 765 3311 -536 HALF\001 4 0 -1 0 0 18 18 0.0000 4 210 765 6401 -536 HALF\001 @@ -909,7 +904,6 @@ Single 4 0 0 50 0 18 16 0.0000 4 270 540 11706 1685 wtip\001 4 0 0 50 0 18 16 0.0000 4 210 225 12858 504 zl\001 4 0 0 50 0 18 16 0.0000 4 210 375 13866 2218 wg\001 -4 0 0 50 0 18 16 0.0000 4 210 270 12648 1880 wl\001 4 0 0 50 0 18 16 0.0000 4 210 405 13410 3518 zth\001 4 0 0 50 0 18 16 0.0000 4 210 495 13694 3906 zbh\001 4 0 0 50 0 18 16 0.0000 4 195 390 13624 4515 zts\001 @@ -929,7 +923,6 @@ Single 4 0 0 50 0 18 16 0.0000 4 210 330 4818 2182 zg\001 4 0 0 50 0 18 16 0.0000 4 195 285 2433 3024 wt\001 4 0 0 50 0 18 16 0.0000 4 210 375 4608 3108 wg\001 -4 0 0 50 0 18 16 0.0000 4 210 270 3531 3834 wl\001 4 0 -1 0 0 18 16 0.0000 4 210 780 8007 8999 MED1\001 4 0 -1 0 0 18 16 0.0000 4 210 720 1570 10442 leaf 1\001 4 0 -1 0 0 18 16 0.0000 4 195 150 2830 10452 2\001 @@ -947,7 +940,6 @@ Single 4 0 0 50 0 18 16 0.0000 4 210 405 10680 1444 zth\001 4 0 0 50 0 18 16 0.0000 4 210 495 10805 1724 zbh\001 4 0 0 50 0 18 16 0.0000 4 210 330 10727 2177 zg\001 -4 0 0 50 0 18 16 0.0000 4 210 270 9648 3827 wl\001 4 0 0 50 0 18 16 0.0000 4 210 225 10266 4474 zl\001 4 0 0 50 0 18 16 0.0000 4 270 495 10574 4657 ztip\001 4 0 0 50 0 18 16 0.0000 4 195 240 8755 1903 zt\001 @@ -964,20 +956,28 @@ Single 4 0 0 50 0 18 16 0.0000 4 270 540 5645 1669 wtip\001 4 0 0 50 0 18 16 0.0000 4 195 285 5389 3455 wt\001 4 0 0 50 0 18 16 0.0000 4 210 375 8102 2314 wg\001 -4 0 0 50 0 18 16 0.0000 4 195 435 6177 4721 wts\001 -4 0 -1 0 0 18 16 0.0000 4 210 780 6441 4118 MED3\001 -4 0 0 50 0 18 16 0.0000 4 210 525 6226 5172 wbs\001 -4 0 0 50 0 18 16 0.0000 4 210 270 6695 1872 wl\001 4 0 -1 0 0 18 16 0.0000 4 210 1020 14067 2995 ZTHICK\001 4 0 -1 0 0 18 16 0.0000 4 210 690 14252 550 ZMIN\001 4 0 -1 0 0 19 34 0.0000 4 435 3585 3945 -1245 SYNCHDMLC\001 4 0 0 50 0 18 16 0.0000 4 210 330 13260 2098 zg\001 -4 0 0 50 0 18 16 0.0000 4 270 540 3696 5598 wtip\001 -4 0 0 50 0 18 16 0.0000 4 210 525 3950 1557 wbs\001 -4 0 0 50 0 18 16 0.0000 4 270 540 9778 5581 wtip\001 -4 0 0 50 0 18 16 0.0000 4 195 435 12158 4590 wts\001 -4 0 0 50 0 18 16 0.0000 4 210 525 12203 5116 wbs\001 -4 0 0 50 0 18 16 0.0000 4 195 435 3888 821 wts\001 -4 0 0 50 0 18 16 0.0000 4 195 435 9940 839 wts\001 -4 0 0 50 0 18 16 0.0000 4 210 525 9960 1592 wbs\001 +4 0 0 46 0 18 16 0.0000 4 195 435 12158 4590 wts\001 +4 0 0 44 0 18 16 0.0000 4 195 435 9940 839 wts\001 +4 0 0 46 0 18 16 0.0000 4 210 525 9960 1592 wbs\001 4 0 0 1 0 18 16 0.0000 4 270 1755 -1412 4987 driving screw\001 +4 0 0 44 0 18 16 0.0000 4 195 435 368 4539 wts\001 +4 0 -1 0 0 18 16 0.0000 4 210 780 6388 4179 MED3\001 +4 0 0 43 0 18 16 0.0000 4 210 270 703 4177 wl\001 +4 0 0 46 0 18 16 0.0000 4 210 270 9731 3700 wl\001 +4 0 0 46 0 18 16 0.0000 4 270 540 9750 5566 wtip\001 +4 0 0 46 0 18 16 0.0000 4 210 270 6717 1752 wl\001 +4 0 0 46 0 18 16 0.0000 4 195 435 6192 4638 wts\001 +4 0 0 46 0 18 16 0.0000 4 210 525 6219 5165 wbs\001 +4 0 0 46 0 18 16 0.0000 4 210 270 3471 3707 wl\001 +4 0 0 46 0 18 16 0.0000 4 270 540 3673 5598 wtip\001 +4 0 0 46 0 18 16 0.0000 4 210 525 3935 1558 wbs\001 +4 0 0 46 0 18 16 0.0000 4 195 435 3896 821 wts\001 +4 0 0 46 0 18 16 0.0000 4 270 540 -83 1238 wtip\001 +4 0 0 46 0 18 16 0.0000 4 210 525 653 5148 wbs\001 +4 0 -1 46 0 18 16 0.0000 4 210 780 216 2221 MED2\001 +4 0 0 46 0 18 16 0.0000 4 210 270 12645 1769 wl\001 +4 0 0 46 0 18 16 0.0000 4 210 525 12210 5123 wbs\001 diff --git a/HEN_HOUSE/doc/src/pirs509a-beamnrc/figures/synchdmlcd.pdf b/HEN_HOUSE/doc/src/pirs509a-beamnrc/figures/synchdmlcd.pdf index 3935242c575f3d849780a99072f87c7d8bc51161..0ec560303b2a9b456fff1cdf0a6ab66f9e6c0f8c 100644 GIT binary patch delta 22088 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 delta 22791 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 {\tt wg} + {\tt wtip}), changing the -order of the 3rd and 4th (counting from the right) vertical cross-section boundaries shown in Figure~\ref{synchdmlc_fig}. -\item {\bf For HALF TARGET and QUARTER TARGET leaves}: The top of the support rail can extend past the right edge -of the leaf ({\tt wts} $>$ {\tt wbs}), changing the order of the -6th and 7th vertical cross-section boundaries. -\item {\bf For QUARTER TARGET leaves}: The top of the support rail need not extend past the beginning (left edge) -of the groove ({\tt wts} $<$ {\tt wbs} - {\tt wg}), -effectively changing the order of vertical boundries 5 and -6, provided that, if relaxation 1 above is in effect, it does extend past the left edge of the leaf tip. -\item {\bf For HALF ISOCENTER leaves}: The bottom of the support rail can extend past the left edge of the leaf -({\tt wbs} $>$ {\tt wts}), changing the order of the 1st and 2nd vertical cross-section boundaries. -\item {\bf For QUARTER ISOCENTER leaves}: The bottom of the support rail need not extend (to the right) as far as -the right edge of the tongue ({\tt wbs} $<$ {\tt wts} - {\tt wt}), changing -the order of the 2nd and 3rd vertical cross-section boundaries, provided that it still extends past the -right edge of the leaf tip. -\item {\bf For QUARTER ISOCENTER leaves}: The Z-position of the groove, {\tt zg}, can be greater than that of the tongue, -{\tt zt}, allowing for duelling interpretations of manufacturer specifications for this leaf type in which the -relative Z-positions of these structures are not entirely clear. -\end{enumerate} -If user input dimensions require any of the above relaxations, a warning message will be output stating which restriction -is being relaxed and indicating that the input cross-section differs from that shown in this manual. -It is important to note that, while these relaxations in boundary ordering may allow the user to input -accurate dimensions consistent with divergent MLC leaves, leaves are still modeled as if they are non-divergent, -with all side surfaces focused at {\tt ZFOCUS(1)}, and, thus, the geometry remains an approximation. -Many thanks to Dr. Jarkko Ojala at Tampere University -Hospital, Finland, who, through detailed examination of manufacturer specifications and measurement of MLC leaves, -determined which restrictions needed to be relaxed and who helped test the modified code. - \index{SYNCHDMLC!restrictions on leaf dimensions} -Similar to DYNVMLC, leaf cross-section dimensions must be defined so that the Z and X ({\tt ORIENT}=0) or Y ({\tt ORIENT}=1) grid lines +Leaf cross-section dimensions must be defined so that the Z and X ({\tt ORIENT}=0,2) or Y ({\tt ORIENT}=1,3) grid lines shown on the cross-sections at the top of Figure~\ref{synchdmlc_fig} do not change order. The Z-positions of tongues and grooves must allow leaves to fit together in the following -combinations: \\ +combinations:\\~~\\ FULL/FULL ({\tt zt}$_{FULL}$ $\leq$ {\tt zg}$_{FULL}$)\\ FULL/HALF TARGET ({\tt zg}$_{FULL}$ $\geq$ {\tt zt}$_{HALF~TARGET}$)\\ HALF TARGET/HALF ISOCENTER ({\tt zg}$_{HALF~TARGET}$ $\leq$ {\tt zt}$_{HALF~ISOCENTER}$)\\ @@ -8586,22 +8552,11 @@ \subsubsection{SYNCHDMLC} QUARTER ISOCENTER/HALF TARGET ({\tt zg}$_{QUARTER~ISOCENTER}$ $\geq$ {\tt zt}$_{HALF~TARGET}$)\\ and HALF ISOCENTER/FULL (ie {\tt zg}$_{HALF~ISOCENTER}$ $\geq$ {\tt zt}$_{FULL}$). - - -As in DYNVMLC and SYNCVMLC, rather than specifying the type of each leaf in the MLC, the user is able to specify groups -of adjacent leaves of the same type. Since TARGET leaves always alternate with ISOCENTER leaves within a group, -for the purpose of defining a leaf group, HALF or QUARTER TARGET/ISOCENTER leaves are considered one type. -Unlike DYNVMLC and SYNCVMLC, however, the number of TARGET/ISOCENTER leaves in a group does not have to be even. Thus, -the final TARGET or ISOCENTER leaf in a group need not be matched by its ISOCENTER or TARGET (respectively) -counterpart. If a group of TARGET/ISOCENTER is defined adjacent to another group of TARGET/ISOCENTER leaves, the -first leaf in the group will automatically be chosen to match the last leaf of the previous group. Thus, if -the last leaf of the previous group was a QUARTER or HALF TARGET leaf, then the first leaf of the current -group will be a QUARTER or HALF ISOCENTER leaf, and vice versa. In terms of leaf groups, the only restriction -is that the numbers and types of leaves cannot be specified so that a QUARTER or HALF TARGET leaf ends up -immediately adjacent to a FULL leaf on the -X (ORIENT=0) or -Y (ORIENT=1) side. -Finally, note that the user need not use all leaf types in a simulated MLC. Thus, there may be no FULL leaves, HALF TARGET/ISOCENTER -leaves, or QUARTER TARGET/ISOCENTER leaves in the simulation. In this case, inputs for the -cross-section parameters of the unused leaves can be left as blanks or zeros. +The default cross-sections for each leaf type are shown in Figure~\ref{synchdmlc_fig}. The width of +each vertical region is specified as back projected to {\tt ZMIN}. Thus, for any width, $w_i$, +the user inputs the value, $w_i\times\left(\frac{{\tt ZMIN}}{Z_i}\right)$, where $Z_i$ is the value of Z +where $w_i$ is defined. For example, for any leaf type, to define the groove width, $wg$, +the user would input $wg\times\left(\frac{{\tt ZMIN}}{zg}\right)$. Similar to DYNVMLC and SYNCVMLC, leaf ends can be straight, focused ({\tt ENDTYPE}=1) or cylindrical ({\tt ENDTYPE}=0). For straight, focused ends, the user must specify the Z-position of the @@ -8636,9 +8591,67 @@ \subsubsection{SYNCHDMLC} leaves when determining the perpendicular distance to the nearest region boundary for charged particle range rejection. For this option to be in effect, charged particles must be in the leaf medium and have:\\ -particle Y ({\tt ORIENT}=0) or X ({\tt ORIENT}=1) $<$ minimum Y ({\tt ORIENT}=0) or X ({\tt ORIENT}=1) of all leaf openings +particle Y ({\tt ORIENT}=0,2) or X ({\tt ORIENT}=1,3) $<$ minimum Y ({\tt ORIENT}=0,2) or X ({\tt ORIENT}=1,3) of all leaf openings (excluding rounded or focused leaf end) or\\ -particle Y ({\tt ORIENT}=0) or X ({\tt ORIENT}=1) $>$ maximum Y ({\tt ORIENT}=0) or X ({\tt ORIENT}=1) of all leaf openings (excluding leaf end)\\ +particle Y ({\tt ORIENT}=0,2) or X ({\tt ORIENT}=1,3) $>$ maximum Y ({\tt ORIENT}=0,2) or X ({\tt ORIENT}=1,3) of all leaf openings (excluding leaf end)\\ + +\subsubsubsection{More accurate modeling of manufacturer specifications for 120MLC and HD120 collimators} +\index{SYNCHDMLC!And manufacturer MLC specifications} + +\index{SYNCHDMLC!Relaxation of leaf cross-section input restrictions} +The default cross-sections were originally implemented assuming that leaf divergence ({\em i.e.}, due +to all leaf sides being focused at a single Z-value, {\tt ZFOCUS(1)}) is sufficiently small that +the order of vertical boundaries does not change when widths are back projected to {\tt ZMIN}, and +restrictions have been placed on cross-section inputs based on this assumption. However, recent work +by Dr. Jarkko Ojala (2018, Tampere University Hospital, Finland) involving detailed measurements +of leaf cross-sections and reference to the manufacturer's (Varian) specifications has shown +that this assumption does not hold for a number of vertical regions. To facilitate more accurate modelling +of leaf cross-sections, then, we have implemented the following exceptions to the original cross-section +input restrictions: + +For accurate modelling of HALF TARGET and HALF ISOCENTER leaves (Varian MLC120 and HDMLC): +\renewcommand{\theenumi}{\roman{enumi}}% +\begin{enumerate} +\item In HALF TARGET leaves, the bottom of the support rail is allowed to extend to the left of the +leaf tip ({\tt wbs} $>$ {\tt wg} + {\tt wtip}), changing the +order of the 3rd and 4th (counting from the right) vertical cross-section boundaries shown in Figure~\ref{synchdmlc_fig}. +\item In HALF TARGET leaves, the top of the support rail can extend past the right edge +of the leaf ({\tt wts} $>$ {\tt wbs}), changing the order of the +6th and 7th vertical cross-section boundaries. +\item In HALF ISOCENTER leaves, the bottom of the support rail can extend past the left edge of the leaf +({\tt wbs} $>$ {\tt wts}), changing the order of the 1st and 2nd vertical cross-section boundaries. +\end{enumerate} + +For accurate modeling of QUARTER TARGET and QUARTER ISOCENTER leaves (Varian HDMLC only): +\begin{enumerate} +\item In QUARTER TARGET leaves, the bottom of the support rail is allowed to extend to the left of the +leaf tip ({\tt wbs} $>$ {\tt wg} + {\tt wtip}). This is similar to the exception for HALF TARGET leaves (see above). +\item In QUARTER TARGET leaves, the top of the support rail can extend past the right edge +of the leaf ({\tt wts} $>$ {\tt wbs}). This is also similar to the exception for HALF TARGET leaves (see above). +\end{enumerate} + +In addition, in the past there has been some doubt interpreting the manufacturer's specifications for the relative Z-positions +of the tongue ({\tt zt}) and groove ({\tt zg}) of QUARTER ISOCENTER leaves, with one interpretation consistent with the +cross-section shown in Figure~\ref{synchdmlc_fig} ({\tt i.e.}, {\tt zg} $<$ {\tt zt}) and another indicating +that {\tt zg} $>$ {\tt zt}. Ojala's work has shown that the latter interpretation is correct, and so we have implemented +an input exception for QUARTER ISOCENTER leaves allowing {\tt zg} $>$ {\tt zt}. + +Each of the exceptions above will generate a warning message on input making clear that the leaf cross-section now differs +from that shown in this manual. + +\index{SYNCHDMLC!{\tt ORIENT}=2 and 3} +More recent comparisons between simulated and measured dose results using the Varian +MLC120 and HDMLC collimators (Ojala, 2022) have revealed a mismatch between the BEAMnrc coordinate system and +that used in the manufacturer specifications for these MLCs. While the BEAMnrc coordinate system is right-handed, that used by in the manufacturer specifications is left-handed. As a result, for the definitions of positive +and negative leaf banks in BEAMnrc-space to +be consistent with specifications, leaf cross-sections must be flipped about the Z-axis and leaf ordering +must be reversed. This is best pictured by considering the X cross-section view shown in Figure~\ref{synchdmlc_fig} +with the X-axis replaced by the -X-axis. In order to preserve leaf opening sequences, however, +we must then ``flip'' the +leaf opening coordinates so that the opening coordinates formerly applied to leaf i are now applied to leaf +{\tt TOT\_LEAF} - i + 1, where {\tt TOT\_LEAF} is the total number of leaves in the bank. +These transformations are done automatically if +the user sets {\tt ORIENT=2} (for leaves opening in X-direction) or {\tt ORIENT=3} (for leaves opening in Y-direction). An example of a file specifying dynamic leaf settings for SYNCHDMLC is included with the distribution. This file is {\tt \$OMEGA\_HOME/beamnrc/CMs/sample\_synchdmlc.sequence}. From 5e0b12234d93029d715a8c977a35888dac6a9fd7 Mon Sep 17 00:00:00 2001 From: Frederic Tessier Date: Thu, 30 Jun 2022 18:12:36 -0400 Subject: [PATCH 14/14] Remove EOL whitespace in updated synchdmlc files --- .../src/pirs509a-beamnrc/pirs509a-beamnrc.tex | 2 +- .../omega/beamnrc/CMs/SYNCHDMLC_cm.mortran | 32 +++++++++---------- .../beamnrc/CMs/SYNCHDMLC_macros.mortran | 14 ++++---- .../omega/progs/gui/beamnrc/synchdmlc.tcl | 14 ++++---- 4 files changed, 31 insertions(+), 31 deletions(-) diff --git a/HEN_HOUSE/doc/src/pirs509a-beamnrc/pirs509a-beamnrc.tex b/HEN_HOUSE/doc/src/pirs509a-beamnrc/pirs509a-beamnrc.tex index dbc365e78..ea3afe440 100644 --- a/HEN_HOUSE/doc/src/pirs509a-beamnrc/pirs509a-beamnrc.tex +++ b/HEN_HOUSE/doc/src/pirs509a-beamnrc/pirs509a-beamnrc.tex @@ -8555,7 +8555,7 @@ \subsubsection{SYNCHDMLC} The default cross-sections for each leaf type are shown in Figure~\ref{synchdmlc_fig}. The width of each vertical region is specified as back projected to {\tt ZMIN}. Thus, for any width, $w_i$, the user inputs the value, $w_i\times\left(\frac{{\tt ZMIN}}{Z_i}\right)$, where $Z_i$ is the value of Z -where $w_i$ is defined. For example, for any leaf type, to define the groove width, $wg$, +where $w_i$ is defined. For example, for any leaf type, to define the groove width, $wg$, the user would input $wg\times\left(\frac{{\tt ZMIN}}{zg}\right)$. Similar to DYNVMLC and SYNCVMLC, leaf ends can be straight, focused ({\tt ENDTYPE}=1) or cylindrical diff --git a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran index 4418208af..28d4a1c9a 100644 --- a/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran +++ b/HEN_HOUSE/omega/beamnrc/CMs/SYNCHDMLC_cm.mortran @@ -495,17 +495,17 @@ "I> "I> Repeat 14 until coordinates of all leaves are defined once. Leaves "I> are numbered 1,2,...TOT_LEAF_$SYNCHDMLC, where numbering goes from leaf -"I> 1 to leaf TOT_LEAF_$SYNCHDMLC. Convention is -ve to +ve -"I> (ORIENT_$SYNCHDMLC=0,2) or +ve to -ve (ORIENT_$SYNCHDMLC=1,3) +"I> 1 to leaf TOT_LEAF_$SYNCHDMLC. Convention is -ve to +ve +"I> (ORIENT_$SYNCHDMLC=0,2) or +ve to -ve (ORIENT_$SYNCHDMLC=1,3) "I> "I> 14a NEG_$SYNCHDMLC, POS_$SYNCHDMLC, NUM_$SYNCHDMLC (2F15.5,I5) "I> -"I> NEG_$SYNCHDMLC: Min. Y (ORIENT_$SYNCHDMLC=0,2) or X -"I> (ORIENT_$SYNCHDMLC=1,3) of front opening in leaf I (ie -"I> the opening at ZMIN_$SYNCHDMLC) if ENDTYPE=1, or of +"I> NEG_$SYNCHDMLC: Min. Y (ORIENT_$SYNCHDMLC=0,2) or X +"I> (ORIENT_$SYNCHDMLC=1,3) of front opening in leaf I (ie +"I> the opening at ZMIN_$SYNCHDMLC) if ENDTYPE=1, or of "I> rounded end of leaf I if ENDTYPE=0. -"I> POS_$SYNCHDMLC: Max. Y (ORIENT_$SYNCHDMLC=0,2) or X -"I> (ORIENT_$SYNCHDMLC=1,3) of front opening in leaf I if +"I> POS_$SYNCHDMLC: Max. Y (ORIENT_$SYNCHDMLC=0,2) or X +"I> (ORIENT_$SYNCHDMLC=1,3) of front opening in leaf I if "I> ENDTYPE=1, or of rounded end of leaf I if ENDTYPE=0. "I> NUM_$SYNCHDMLC: Apply NEG_$SYNCHDMLC and POS_$SYNCHDMLC to leaves "I> I,...,I+NUM_$SYNCHDMLC-1. Defaults to 1 if set <=0. @@ -709,7 +709,7 @@ "V>{p1} the value to compare with ustep "V> if {p1}+1.0e-5 < ustep shift it, otherwise set it to ustep "V> Note: if above condition failed, this used to leave {p1} -"V> unshifted, which led to transport errors +"V> unshifted, which led to transport errors ; REPLACE {$GEO_SHIFT_1_(#)} WITH { ;IF({P1}~=0.00 ) [ @@ -1084,13 +1084,13 @@ DOUBLE PRECISION XYL(2), XYFL(2), ZFL, UVL(2), XoN, XoP, Zo, TEMP1, TEMP2, IF(ORIENT_$SYNCHDMLC=0)[ XYL(1)=X(NP); XYL(2)=Y(NP);UVL(1)=U(NP);UVL(2)=V(NP); ] -ELSEIF(ORIENT_$SYNCHDMLC=1)[ +ELSEIF(ORIENT_$SYNCHDMLC=1)[ XYL(1)=Y(NP); XYL(2)=X(NP);UVL(1)=V(NP);UVL(2)=U(NP); ] ELSEIF(ORIENT_$SYNCHDMLC=2)[ XYL(1)=-X(NP); XYL(2)=Y(NP);UVL(1)=-U(NP);UVL(2)=V(NP); ] -ELSEIF(ORIENT_$SYNCHDMLC=3)[ +ELSEIF(ORIENT_$SYNCHDMLC=3)[ XYL(1)=-Y(NP); XYL(2)=X(NP);UVL(1)=-V(NP);UVL(2)=U(NP); ] IF (IDIR=1) [ @@ -2705,7 +2705,7 @@ IF(MODE_$SYNCHDMLC=1|MODE_$SYNCHDMLC=2)["dynamic or step-and-shoot leaf inputs" LEAFPOS_$SYNCHDMLC((TOT_LEAF_$SYNCHDMLC-K+1)+ (I-1)*TOT_LEAF_$SYNCHDMLC) = tmp_coord; ] - ] + ] ] CLOSE(UNIT=mlc_unit); @@ -2777,7 +2777,7 @@ IF(ORIENT_$SYNCHDMLC>=2)[ LEAFA_$SYNCHDMLC(I) = LEAFA_$SYNCHDMLC(TOT_LEAF_$SYNCHDMLC-I+1); LEAFA_$SYNCHDMLC(TOT_LEAF_$SYNCHDMLC-I+1) = tmp_coord; ] -] +] IF(ENDTYPE_$SYNCHDMLC=1)[ DO I=1, TOT_LEAF_$SYNCHDMLC [ @@ -3709,8 +3709,8 @@ IF(LEAFIS~=0) [ "target leaf" IF(LEAFIS~=TOT_LEAF_$SYNCHDMLC & ((((NY=5|NY=6) & (NZ=7|NZ=8|NZ=9)) & XYL1>SURPARA1_$SYNCHDMLC(LEAFIS+1,1)*(Z(NP)-ZFOCUS_$SYNCHDMLC(1))) | - (I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1 & - NY=6 & NZ>1 & + (I_LEAF_ALT_DEF_$SYNCHDMLC(LEAFTYPE_$SYNCHDMLC(LEAFIS),1,6)=1 & + NY=6 & NZ>1 & XYL1>SURPARA1_$SYNCHDMLC(LEAFIS+1,3)*(Z(NP)-ZFOCUS_$SYNCHDMLC(1))))) [ LEAFIS=LEAFIS+1; TEMP1=SURPARA1_$SYNCHDMLC(LEAFIS,1)*(Z(NP)-ZFOCUS_$SYNCHDMLC(1)); @@ -3800,9 +3800,9 @@ IF(LEAFIS~=0) [ ] ]; ] - ELSEIF(LEAFIS ~=1 & NY<=2 & + ELSEIF(LEAFIS ~=1 & NY<=2 & ((LEAFTYPE_$SYNCHDMLC(LEAFIS) = 3 & NZ<=3) | - (LEAFTYPE_$SYNCHDMLC(LEAFIS) = 5 & NZ<=4)))[ + (LEAFTYPE_$SYNCHDMLC(LEAFIS) = 5 & NZ<=4)))[ "here we are in an isocenter leaf "check if particle is in region of previous leaf" IF(XYL1ZREG_$SYNCHDMLC(J,7))[ LHS = 5; ] - ELSE[ + ELSE[ LHS = 7; ] ] @@ -1319,7 +1319,7 @@ IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ LHS=3; J=LEAFIS; RHS=7; I=LEAFIS; ] - ] + ] ] ELSEIF(NZ<=7)[ LHS=1; J=LEAFIS; @@ -1346,7 +1346,7 @@ IF(LEAFTYPE_$SYNCHDMLC(LEAFIS)=2 | LEAFTYPE_$SYNCHDMLC(LEAFIS)=4) [ ELSE[ LHS=3; J=LEAFIS; RHS=7; I=LEAFIS; - ] + ] ] ELSE[ IF(NY=1)[ diff --git a/HEN_HOUSE/omega/progs/gui/beamnrc/synchdmlc.tcl b/HEN_HOUSE/omega/progs/gui/beamnrc/synchdmlc.tcl index 9f2dede13..d0e19c92e 100644 --- a/HEN_HOUSE/omega/progs/gui/beamnrc/synchdmlc.tcl +++ b/HEN_HOUSE/omega/progs/gui/beamnrc/synchdmlc.tcl @@ -2369,7 +2369,7 @@ proc draw_SYNCHDMLC { id } { NOTE: This is a dynamic or step-and-shoot delivery, with leaf opening\ coordinates defined in a file. Leaf opening coordinates are shown for the\ first field defined in this file."\ - -font $helvfont -width 300 + -font $helvfont -width 300 } else { .synchdmlc$id.show.frm.can create text 160 160 -text "xz\ cross-section shows only those leaves that\ @@ -2379,7 +2379,7 @@ NOTE: This is a dynamic or step-and-shoot delivery, with leaf opening\ is shown. The xy view is at a plane at Z=ZMIN\ (straight leaf ends) or Z=ZMIN+ZTHICK/2 (cylindrical\ leaf ends)."\ - -font $helvfont -width 300 + -font $helvfont -width 300 } set xscale [expr $width/double(abs($xrange(1)-$xrange(0)))] @@ -2673,7 +2673,7 @@ proc add_SYNCHDMLC_xy {id xscale yscale xmin ymin l m parent_w} { set a [expr ($neg($i)-$xmin)*$xscale+$l] if {$cmval($id,2,0)==3} { - set b [expr (-$lstart-$ymin)*$yscale+$m] + set b [expr (-$lstart-$ymin)*$yscale+$m] } else { set b [expr ($lstart-$ymin)*$yscale+$m] } @@ -3247,8 +3247,8 @@ proc add_SYNCHDMLC_sides {id yscale zscale ymin zmin zmax l m parent_w} { for {set i 1} {$i <= $nleaf($id)/2} {incr i} { set tmp_coord $neg($i) set neg($i) $neg([expr $nleaf($id)-$i+1]) - set neg([expr $nleaf($id)-$i+1]) $tmp_coord - set tmp_coord $pos($i) + set neg([expr $nleaf($id)-$i+1]) $tmp_coord + set tmp_coord $pos($i) set pos($i) $pos([expr $nleaf($id)-$i+1]) set pos([expr $nleaf($id)-$i+1]) $tmp_coord } @@ -3629,7 +3629,7 @@ proc add_SYNCHDMLC_sides {id yscale zscale ymin zmin zmax l m parent_w} { if {$cmval($id,2,0)==2 || $cmval($id,2,0)==3} { set y($j) [expr -1*$y($j)] } - + # set y and z scale and relative position set y($j) [expr ($y($j)-$ymin)*$yscale+$l] set z($j) [expr ($z($j)-$zmin)*$zscale+$m] @@ -3744,7 +3744,7 @@ are automaticaly "flipped," so that opening coordinates for leaf i are instead\ applied to leaf N-i+1, where N is the total no. of leaves. See the BEAMnrc\ Manual for more details.} help_dialog $w.help "Help" $text info 0 OK -} +} proc help_screwdist { w } {