summaryrefslogtreecommitdiff
path: root/Dragon/data/tmacro_proc/TCM78.c2m
diff options
context:
space:
mode:
Diffstat (limited to 'Dragon/data/tmacro_proc/TCM78.c2m')
-rw-r--r--Dragon/data/tmacro_proc/TCM78.c2m234
1 files changed, 234 insertions, 0 deletions
diff --git a/Dragon/data/tmacro_proc/TCM78.c2m b/Dragon/data/tmacro_proc/TCM78.c2m
new file mode 100644
index 0000000..6a872a5
--- /dev/null
+++ b/Dragon/data/tmacro_proc/TCM78.c2m
@@ -0,0 +1,234 @@
+*----
+* TEST CASE TCM78
+*
+* Coupled transport of photons, electrons and positrons in water
+* Cross-sections library produced by Radiant package
+* 10 MeV normally incident electron source
+* Convergence of the energy deposition profile
+*
+* Ref: Bienvenue, Charles, et al. "Toward Highly Accurate
+* Multigroup Coupled Photon-Electron-Positron Cross-Sections
+* for the Boltzmann Fokker-Planck Equation." Journal of
+* Computational Physics (2025): 113740.
+*
+*----
+
+*----
+* Define STRUCTURES and MODULES used
+*----
+
+LOGICAL IS_CONV ;
+INTEGER NPART NGEN_MAX IPART IGEN NX IX ;
+DOUBLE EDEP EDEP1 EPSILON EPSILON1 EPSILON_EDEP ;
+MODULE GEO: FMAC: MAC: SNT: ASM: FLU: PSOUR: OUT: DELETE: END: GREP: HEAT: ABORT: ;
+PROCEDURE assertS_low ;
+LINKED_LIST GEOM ETRACK TRACK GTRACK EMACRO GMACRO PMACRO MACRO ESOUR SOUR FLUX FLUX1 FLUX2 SYSTEM
+ RR ERR GRR PRR DEPOS DEPOS1 ;
+SEQ_ASCII FMAC_M :: FILE './radiant_fmac.txt' ;
+
+*----
+* Set and track the geometry
+*----
+
+EVALUATE NX := 40 ;
+GEOM := GEO: :: CAR1D 1
+ X- VOID X+ VOID
+ MIX 1
+ MESHX 0.0 10.0
+ SPLITX <<NX>>
+ ;
+ETRACK := SNT: GEOM ::
+ MAXR 300
+ NSHT
+ SCHM 2 DIAM 0 ! Linear discontinuous Galerkin for streaming term
+ ESCHM 2 EDIAM 0 ! Linear discontinuous Galerkin for CSD term
+ QUAD 2 GQ 1 ! Gauss-Legendre with Galerkin quadrature method
+ SN 8 SCAT 8
+ EPSI 1.E-5
+ MAXI 1000
+ BFPG
+ ;
+GTRACK := ETRACK ;
+GTRACK := SNT: GTRACK GEOM :: BTE ;
+
+*----
+* Extract the cross-sections
+*----
+
+! Electrons
+EMACRO := FMAC: FMAC_M :: PARTICLE B ;
+MACRO := EMACRO ;
+EMACRO := MAC: EMACRO MACRO :: MIX 1 1 OLDL ;
+MACRO := DELETE: MACRO ;
+
+! Photons
+GMACRO := FMAC: FMAC_M :: PARTICLE G ;
+MACRO := GMACRO ;
+GMACRO := MAC: GMACRO MACRO :: MIX 1 1 OLDL ;
+MACRO := DELETE: MACRO ;
+
+! Positrons
+PMACRO := FMAC: FMAC_M :: PARTICLE C ;
+MACRO := PMACRO ;
+PMACRO := MAC: PMACRO MACRO :: MIX 1 1 OLDL ;
+MACRO := DELETE: MACRO ;
+
+*----
+* Fixed external electron source definition
+*----
+
+ESOUR := PSOUR: EMACRO ETRACK GEOM ::
+ MONO 1
+ X-
+ INTG 1 1.0
+ DIR 1.0 0.0 0.0
+ ;
+
+*----
+* Coupled transport calculations
+*----
+
+EVALUATE NPART := 3 ; ! Number of particles
+EVALUATE NGEN_MAX := 10 ; ! Maximum number of particle generations
+EVALUATE EPSILON_EDEP := 1.D-5 ; ! Convergence criterion on energy deposition profile
+EVALUATE IS_CONV := $False_L ;
+
+EVALUATE IGEN := 1 ;
+WHILE IGEN NGEN_MAX <= IS_CONV NOT * DO
+ EVALUATE IPART := 1 ;
+ WHILE IPART NPART <= DO
+
+ ECHO " " ;
+ ECHO " COUPLED TRANSPORT INDEXES -------" ;
+ ECHO " IPART: " IPART ;
+ ECHO " IGEN: " IGEN ;
+ ECHO "----------------------------------" ;
+ ECHO " " ;
+
+ *----
+ * Set the cross-sections and tracking
+ *----
+
+ IF IPART 1 = THEN
+ MACRO := EMACRO ;
+ TRACK := ETRACK ;
+ ELSEIF IPART 2 = THEN
+ MACRO := GMACRO ;
+ TRACK := GTRACK ;
+ ELSEIF IPART 3 = THEN
+ MACRO := PMACRO ;
+ TRACK := ETRACK ;
+ ENDIF ;
+
+ *----
+ * Set the sources of particles
+ *----
+
+ IF IPART 1 = THEN
+ IF IGEN 1 = THEN
+ SOUR := ESOUR ;
+ ELSE
+ SOUR := PSOUR: MACRO TRACK ETRACK FLUX1 :: PARTICLE C ;
+ SOUR := PSOUR: MACRO TRACK GTRACK FLUX2 SOUR :: PARTICLE G ;
+ ENDIF ;
+ ELSEIF IPART 2 = THEN
+ SOUR := PSOUR: MACRO TRACK ETRACK FLUX1 :: PARTICLE B ;
+ IF IGEN 1 > THEN
+ SOUR := PSOUR: MACRO TRACK ETRACK FLUX2 SOUR :: PARTICLE C ;
+ ENDIF ;
+ ELSEIF IPART 3 = THEN
+ SOUR := PSOUR: MACRO TRACK GTRACK FLUX1 :: PARTICLE G ;
+ SOUR := PSOUR: MACRO TRACK ETRACK FLUX2 SOUR :: PARTICLE B ;
+ ENDIF ;
+
+ *----
+ * Compute the particle flux
+ *----
+
+ SYSTEM := ASM: MACRO TRACK :: ARM ;
+ FLUX := FLU: MACRO TRACK SYSTEM SOUR :: TYPE S EXTE 100 ;
+ RR := OUT: FLUX TRACK MACRO GEOM :: COND INTG NONE ;
+ IF IPART 1 = THEN
+ ERR := RR ;
+ ELSEIF IPART 2 = THEN
+ GRR := RR ;
+ ELSEIF IPART 3 = THEN
+ PRR := RR ;
+ ENDIF ;
+
+ *----
+ * Compute the energy deposition
+ *----
+
+ IF IPART 3 = IGEN 1 = * THEN
+ DEPOS := HEAT: ERR GRR PRR :: EDIT 1 NORM 1.0 ;
+ ERR GRR PRR := DELETE: ERR GRR PRR ;
+ ELSEIF IPART 3 = THEN
+ DEPOS1 := DEPOS ;
+ DEPOS := HEAT: DEPOS ERR GRR PRR :: EDIT 1 NORM 1.0 ;
+ ERR GRR PRR := DELETE: ERR GRR PRR ;
+ ENDIF ;
+
+ *----
+ * Verify convergence of the energy deposition profile
+ *----
+
+ IF IPART 3 = IGEN 1 = NOT * THEN
+ EVALUATE IX := 1 ;
+ EVALUATE EPSILON := 1.D-10 ;
+ WHILE IX NX <= DO
+ GREP: DEPOS :: GETVAL 'EDEPOS_TOT' <<IX>> >>EDEP<< ;
+ GREP: DEPOS1 :: GETVAL 'EDEPOS_TOT' <<IX>> >>EDEP1<< ;
+ IF EDEP EPSILON_EDEP > THEN
+ EVALUATE EPSILON1 := EDEP EDEP1 - EDEP / ;
+ ELSE
+ EVALUATE EPSILON1 := EDEP EDEP1 - EPSILON_EDEP / ;
+ ENDIF ;
+ IF EPSILON1 EPSILON > THEN
+ EVALUATE EPSILON := EPSILON1 ;
+ ENDIF ;
+ EVALUATE IX := IX 1 + ;
+ ENDWHILE ;
+ IF EPSILON EPSILON_EDEP <= THEN
+ EVALUATE IS_CONV := $True_L ;
+ ENDIF ;
+ DEPOS1 := DELETE: DEPOS1 ;
+ ENDIF ;
+
+ *----
+ * Set the fluxes
+ *----
+
+ IF IPART 1 = IGEN 1 = * THEN
+ FLUX1 := FLUX ;
+ ELSEIF IPART 2 = IGEN 1 = * THEN
+ FLUX2 := FLUX1 ;
+ FLUX1 := DELETE: FLUX1 ;
+ FLUX1 := FLUX ;
+ ELSE
+ FLUX2 := DELETE: FLUX2 ;
+ FLUX2 := FLUX1 ;
+ FLUX1 := DELETE: FLUX1 ;
+ FLUX1 := FLUX ;
+ ENDIF ;
+
+ SOUR FLUX SYSTEM MACRO TRACK RR := DELETE: SOUR FLUX SYSTEM MACRO TRACK RR ;
+ EVALUATE IPART := IPART 1 + ;
+
+ ENDWHILE ;
+ EVALUATE IGEN := IGEN 1 + ;
+ENDWHILE ;
+
+*----
+* Asserts
+*----
+assertS_low DEPOS :: 'EDEPOS_TOT' 1 1.909428E+00 1.0E-4 ;
+assertS_low DEPOS :: 'EDEPOS_TOT' 3 2.100268E+00 1.0E-4 ;
+assertS_low DEPOS :: 'EDEPOS_TOT' 10 2.191387E+00 1.0E-4 ;
+assertS_low DEPOS :: 'EDEPOS_TOT' 30 1.893547E-01 1.0E-4 ;
+assertS_low DEPOS :: 'CDEPOS_TOT' 1 -1.488792E-01 5.0E-4 ;
+assertS_low DEPOS :: 'CDEPOS_TOT' 3 -4.382314E-03 5.0E-2 ;
+assertS_low DEPOS :: 'CDEPOS_TOT' 10 1.891187E-01 5.0E-4 ;
+assertS_low DEPOS :: 'CDEPOS_TOT' 30 4.212810E-02 5.0E-4 ;
+ECHO "test TCM78 completed" ;
+END: ;