Quick launch:
Last version:
News:
--
Fluka Release
|
[ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ back ] A) Building one module with trapezoid shape. 1. WORK WITH 1 module with RECTANGULAR shape. 1.1 Almost all parts of this geometry are the same (as were develped for single module with rectangular shape), structure of lattices, and base cell in rectangular part, (more informations you can find in [2] and [9] positions in bibliography). Modification was based on shifting a lattices 1,3,5,7,.....(odd numbers) on x axis on 0.135/2.0 cm in geometry file in order to produce the following structure of fibers: o o o o o o o o o o o o o o o z /\ | | -------> x 2. Description: 2.1 Implementation a new base cell with: lead block RPP 774 0.520350000000000E+02 0.521700000000000E+02-0.215000000000000E+03 0.215000000000000E+03 0.105376086559900E+01 0.117067429511000E+01 one glue cylinder * bdjj glue YCC 775 1.112217580350000E+00 0.521025000000000E+02 0.550000000000000E-01 one fiber cylinder * bdjj fiber YCC 776 1.112217580350000E+00 0.521025000000000E+02 0.500000000000000E-01 These cylinders were located in the triangle areas: 22.....3 2 1 1 2 3 4 ..... 22 * ------------------------------- * ooooo| |ooooo * oooo| |oooo * ooo| |ooo * oo| |oo * o| |X * | | * ------------------- * * * X - base cell which was replicated * o - new lattices = 199 - 9 = 190 * New lattices are situated in 22 columns on the left side of old rectangular part and the same 22 columns for the right side (one box = a new base cell). **************************************************************************** * new lattices on the right and left side * **************************************************************************** * * 777 lattice 10 lattice right side column 1 RPP 777 0.519675000000000E+02 0.521025000000000E+02-0.215000000000000E+03 0.215000000000000E+03 0.117067429511000E+01 0.128758772462100E+01 . . . . . . * 5020 lattice 198 lattice left side column 22 RPP 5020-0.297750000000000E+01-0.284250000000000E+01-0.215000000000000E+03 0.215000000000000E+03 0.231503990431781E+02 0.232673124726891E+02 * 5021 lattice 199 lattice left side column 22 RPP 5021-0.291000000000000E+01-0.277500000000000E+01-0.215000000000000E+03 0.215000000000000E+03 0.232673124726891E+02 0.233842259022001E+02 * * * Each lattice is declared as a region. * *************************************************************************** ****** Old 199 lattices in rectangular shape - modificated - new coordinates. * * * 5022 lattice 1 RPP 5022 0.600000000000000E-01 0.520350000000000E+02-0.215000000000000E+03 0.215000000000000E+03 0.118453429511000E+00 0.235366859022000E+00 . . . . . * 5220 lattice 199 RPP 5220 0.600000000000000E-01 0.520350000000000E+02-0.215000000000000E+03 0.215000000000000E+03 0.232673124726891E+02 0.233842259022001E+02 * * 2.2. Input file: * Declared all new numbers of the regions with material * We are using GLOBAL card: GLOBAL 5000.0 *------------ new modyficated code by JJ ---------------------------* * *----- old fibers regions * ASSIGNMAT 23.0 6.0 390.0 1.0 * *----- old glue region * ASSIGNMAT 31.0 391.0 1.0 * *----- old vacuum region * ASSIGNMAT 2.0 392.0 * *----- old lattices * ASSIGNMAT 24. 393.0 591.0 1.0 * *--- new parts for trapesoidal areas ----------------------------------* * ASSIGNMAT 24. 592.0 4836.0 1.0 * lead block ASSIGNMAT 22.0 3.0 1.0 * 775 - glue ASSIGNMAT 31.0 5.0 1.0 * 776 - fiber ASSIGNMAT 23.0 4.0 1.0 * *--------------------------------------------------------------* For a new lattice areas was not needing to declare a materials. 2.3. mgdraw.f routine: - Declarations a lfibra variable tru for all regions with fibers, - One fiber is contained in 1 region. 2.4 lattic.f routine: - For the old part is the same, - For the new part is based on using IF conditions. ------------- For example: * First column on the right (899 + 189 = 1088) * not + 190 (because the first is a base cell) * IF (IRLTGG.GT.(898).AND.IRLTGG.LT.(1089)) THEN IF(MOD((IRLTGG),2).EQ.0) THEN SB (1) = XB (1) ELSE SB (1) = XB (1) + 0.135D+00/TWOTWO ENDIF SB (2) = XB (2) SB (3) = XB (3)-1.169134295110000D-01*(1+IRLTGG-899) UB (1) = WB (1) UB (2) = WB (2) UB (3) = WB (3) END IF * * Second column on the right (1089 + 181 = 1270) * IF (IRLTGG.GT.(1088).AND.IRLTGG.LT.(1271)) THEN IF(MOD((IRLTGG),2).EQ.0) THEN SB (1) = XB (1) - 0.135D+00 ELSE SB (1) = XB (1) + 0.135D+00/TWOTWO - 0.135D+00 ENDIF SB (2) = XB (2) SB (3) = XB (3)-1.169134295110000D-01 * (9+IRLTGG - 1089) UB (1) = WB (1) UB (2) = WB (2) UB (3) = WB (3) END IF ------------------- 2.5 Some details: TOTAL NUMBER of regions: 4836 TOTAL NUMBER of bodies: 5220 NUMBER of lines in geometry file: 21230B) Lattice replication for 24 modules. Below is presented the source code of the lattice transformation routine, which build in fly the whole barrel calorimeter geometry, this is the heart of the whole simulation which allows to build barrel calorimeter geometry in FLUKA simulation. *=== lattic ===========================================================* * SUBROUTINE LATTIC (XB, WB, DIST, SB, UB, IR, IRLTGG, IFLAG) INCLUDE '(DBLPRC)' INCLUDE '(DIMPAR)' INCLUDE '(IOUNIT)' INCLUDE '(RTGMMV)' c INCLUDE '(GLTLOC)' *----------------------------------------------------------------------* * LATTIC: user written routine which must return the tracking point * and direction ( SB, UB ) corresponding to region number IR, cell * number IRLTGG and real position/direction XB, WB * * Created on 16 December 1993 by Alfredo Ferrari & Paola Sala * Infn - Milan * * Last change on 26-may-98 by Alfredo Ferrari *----------------------------------------------------------------------* DIMENSION XB (3), WB (3), SB (3), UB (3), UN (3) DOUBLE PRECISION UNN(3),UBB(3) include 'kloecal.inc' LOGICAL LFIRST DATA LFIRST /.TRUE./ IF (LFIRST) THEN LFIRST = .FALSE. ENDIF c rewritting to variable which we can modificate c X,W - where particle hit c S,U - response in the lattice cell KMOD=0 SB(1)=XB(1) SB(2)=XB(2) SB(3)=XB(3) UB(1)=WB(1) UB(2)=WB(2) UB(3)=WB(3) IF(IRLTGG.lt.1.or.IRLTGG.gt.4822) THEN WRITE (LUNOUT,*)' NON-EXISTENT LATTICE: ',IRLTGG c rotation of 23 trapesoids to tha base trapesoid ELSEIF (IRLTGG.GE.4800.and.IRLTGG.LE.4822) THEN XRT = SB(1)-XO YRT = SB(2)-YO ZRT = SB(3)-ZO THETA = -TWOTWO*PIPIPI/24.0D0*(IRLTGG-4799) CALL ROTATE(SB(1),SB(2),SB(3),XRT,YRT,ZRT,THETA) SB(1)=SB(1)+XO SB(2)=SB(2)+YO SB(3)=SB(3)+ZO CALL ROTATE(UBB(1),UBB(2),UBB(3),UB(1),UB(2),UB(3),THETA) DO i=1,3 UB(i) = UBB(i) ENDDO c transformation from 199 lattices into trapes 1 ELSEIF (IRLTGG.GE.1.AND.IRLTGG.LE.199) THEN IF(MOD((IRLTGG),2).EQ.0) THEN SB (1) = SB (1) ELSE SB (1) = SB (1) - 0.135D+00/TWOTWO ENDIF SB (3) = SB (3) - 1.169134295110000D-01 * IRLTGG c c -------------------------------------------------- c transformation of the 200 layers for 2 - 24 trapesoids objects c * in which trapesoid I am * KMOD from 2 to the 24, but rotation for 1 - 23 * KLAYER - layer number in each trapesoid 1-200 c ELSEIF (IRLTGG.GE.200.AND.IRLTGG.LE.4799) THEN KMOD = (IRLTGG - 200)/200 + 1 + 1 THETA = -TWOTWO*PIPIPI/24.0D0*(KMOD - 1) KLAYER = IRLTGG - 200 * (KMOD-1) + 1 XRT=SB(1)-XO YRT=SB(2)-YO ZRT=SB(3)-ZO CALL ROTATE(SB(1),SB(2),SB(3),XRT,YRT,ZRT,THETA) SB(1)=SB(1)+XO SB(2)=SB(2)+YO SB(3)=SB(3)+ZO CALL ROTATE(UBB(1),UBB(2),UBB(3),UB(1),UB(2),UB(3),THETA) DO i=1,3 UB(i) = UBB(i) ENDDO IF(MOD((KLAYER),2).EQ.0) THEN SB (1) = SB (1) - 0.135D+00/TWOTWO ENDIF * * first layer without transformation because it is on the base cell level * * SB (3) = SB (3) - 1.169134295110000D-01 * (KLAYER-1) ENDIF RETURN *=== lantor =======================================================* ENTRY LATNOR ( UN, IRLTNO ) * *--------------------------------------------------------------------* * LATtice cell NORmal transformation: * * Input variables: un(i) = normal components in the tracking re- * ference system * irltno = present lattice cell \# * Output variables: un(i) = normal components in the problem re- * ference system *--------------------------------------------------------------------* * c rotation of the 23 trapesoids IF (IRLTNO.GE.4800.and.IRLTNO.LE.4822) THEN THETA=+TWOTWO*PIPIPI/24.0D0*(IRLTNO-4799) CALL ROTATE(UNN(1),UNN(2),UNN(3),UN(1),UN(2),UN(3),THETA) DO I=1,3 UN(I)=UNN(I) ENDDO c for the 199 lattices in trapesoid-1 ELSEIF (IRLTNO.GE.1.AND.IRLTNO.LE.199) THEN c for the 1 - 200 layers in trapesoids number 2 - 24 ELSEIF (IRLTNO.GE.200.and.IRLTNO.LE.4799) THEN KMOD = (IRLTNO - 200)/200 + 1 + 1 THETA = +TWOTWO*PIPIPI/24.0D0*(KMOD - 1) CALL ROTATE(UNN(1),UNN(2),UNN(3),UN(1),UN(2),UN(3),THETA) DO I=1,3 UN(I)=UNN(I) ENDDO ENDIF RETURN *=== End of subroutine lattic =======================================* END *-------------------------------------------------------------------- SUBROUTINE ROTATE(XOUT,YOUT,ZOUT,XIN,YIN,ZIN,THETA) DOUBLE PRECISION XIN,YIN,ZIN DOUBLE PRECISION XOUT,YOUT,ZOUT DOUBLE PRECISION THETA XOUT = COS(THETA)*XIN+SIN(THETA)*ZIN YOUT = YIN ZOUT = -SIN(THETA)*XIN+COS(THETA)*ZIN END c=================================================================== c===================================================================
Giuseppe Battistoni; INFN, Milano
Last updated: 26th of October, 2010 |
© FLUKA Team 2000–2024