diff options
| author | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
|---|---|---|
| committer | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
| commit | 7dfcc480ba1e19bd3232349fc733caef94034292 (patch) | |
| tree | 03ee104eb8846d5cc1a981d267687a729185d3f3 /Donjon/data/rep900.x2m | |
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Donjon/data/rep900.x2m')
| -rw-r--r-- | Donjon/data/rep900.x2m | 260 |
1 files changed, 260 insertions, 0 deletions
diff --git a/Donjon/data/rep900.x2m b/Donjon/data/rep900.x2m new file mode 100644 index 0000000..7a5a8a9 --- /dev/null +++ b/Donjon/data/rep900.x2m @@ -0,0 +1,260 @@ +*---- +* Nom : rep900.x2m +* Type : fichier DONJON +* +* Parametres Locaux : +* densB1 densite de bore pour le 1er calcul +* densB2 densite de bore pour le 2eme calcul +* +* Options de calcul : +* Splitx Discretisation par assemblage +* Splitz Discretisation axiale +* TypeCal Concentration de bore : "critique" ou "fixe" +* +*---- +* Definition STRUCTURES, MODULES et PROCEDURES +*---- +LINKED_LIST GeoRes MacroF Track System Flux Cpo L0 Reseau Matex + Lib Macro1 Macro2 Fmap Micro ; +MODULE TRIVAT: TRIVAA: FLUD: GREP: FIND0: MACINI: UTL: NCR: + DELETE: ABORT: END: ; + +PROCEDURE GetDim GeoCo SetFuelMap SetParam ; +PROCEDURE assertS ; +SEQ_ASCII _ACompo ; +REAL DELTA REFVALUE ; +*---- +* Parametres Locaux +*---- +REAL densB1 := 2000.0 ; +REAL densB2 := 0.0 ; +*---- +* Options de calcul +*---- +INTEGER Splitx Splitz := 2 2 ; +STRING TypeCal := "critique" ; +STRING Dir := "EDI2B" ; + +REAL Rcomb1 Rcomb2 Rcomb3 Rcomb4 + R_int_TG R_ext_TG R_int_TI R_ext_TI R_int_G R_ext_G + Cote CoteL ! on ne declare pas la lame car c'est fait en dessous + RmodeN1 RmodeN2 + R_ext_G2 R_ext_TGm R_ext_TIm + N_U5_UOX N_U5_MOX + N_Pu8 N_Pu9 N_Pu0 N_Pu1 N_Pu2 N_Am1 + densU_UOX densU_MOX densPu_MOX + teneur1_Pu teneur2_Pu teneur3_Pu + temp_comb temp_mode dens_mode ; + +*---- +* Recover the Multicompo +*---- +Cpo := _ACompo ; +UTL: Cpo :: DIR ; + +*---- +* Enchainement du calcul +*---- +REAL ORF IRC ORC IRCGT ORCGT ORAG ORAN + IRCA ORCA ORDET ORDETC Lame LPitch Height ; + + GetDim :: + >>Rcomb1<< >>Rcomb2<< >>Rcomb3<< >>Rcomb4<< + >>R_int_TG<< >>R_ext_TG<< >>R_int_TI<< >>R_ext_TI<< + >>R_int_G<< >>R_ext_G<< >>Cote<< >>Lame<< >>CoteL<< + >>RmodeN1<< >>RmodeN2<< >>R_ext_G2<< >>R_ext_TGm<< >>R_ext_TIm<< + >>N_U5_UOX<< >>N_U5_MOX<< >>N_Pu8<< >>N_Pu9<< >>N_Pu0<< + >>N_Pu1<< >>N_Pu2<< >>N_Am1<< >>densU_UOX<< >>densU_MOX<< + >>densPu_MOX<< >>teneur1_Pu<< >>teneur2_Pu<< >>teneur3_Pu<< + >>temp_comb<< >>temp_mode<< >>dens_mode<< ; + + +EVALUATE + ORF IRC ORC IRCGT ORCGT + ORAG ORAN IRCA ORCA + ORDET ORDETC + Lame LPitch Height + := + Rcomb4 R_int_TG R_ext_TG R_int_TI R_ext_TI + R_int_TG R_ext_TG R_int_TI R_ext_TI + R_int_TG R_ext_TG + Lame Cote 10.0 + ; + +REAL rPavX := 17.0 ; ! assemblage 17 x 17 +INTEGER iPavX := 17 ; ! assemblage 17 x 17 + +REAL dx := rPavX LPitch * 2.0 Lame * + ; +INTEGER MaxR := iPavX iPavX * 33 * Splitx * Splitx * Splitz * ; +INTEGER Iter := 1 ; +REAL keff1 keff2 keffn ; +REAL Y1 Y2 ROOT YNEW ; +REAL densB ; +LOGICAL CONV ; + +GeoRes Matex := GeoCo :: + <<Splitx>> <<Splitz>> <<MaxR>> <<dx>> ; + +Track := TRIVAT: GeoRes :: + MAXR <<MaxR>> DUAL 2 3 ; + +*-- +* Definition de la map de combustible et zones de combustion +*-- +Fmap Matex := SetFuelMap Matex :: <<dx>> ; + +Fmap := SetParam Fmap :: <<densB1>> <<temp_comb>> <<temp_mode>> + <<dens_mode>> ; + +Micro := NCR: Cpo Fmap :: + EDIT 2 + LINEAR + TABLE Cpo <<Dir>> 'burnup' + MIX 1 INST-BURN ENDMIX +; +MacroF := Micro :: STEP UP MACROLIB ; +Micro := DELETE: Micro ; + +Micro := NCR: Cpo :: +* dummy reflector -- please use more realistic data + EDIT 2 + LINEAR NMIX 2 + COMPO Cpo <<Dir>> + MIX 2 SET 'burnup' 0.0 + SET 'ppmBore' <<densB1>> + ENDMIX +; +Macro1 := Micro :: STEP UP MACROLIB ; +Micro := DELETE: Micro ; + +Macro2 Matex := MACINI: Matex Macro1 MacroF ; + +System := TRIVAA: Macro2 Track ; + +Macro1 Macro2 := DELETE: Macro1 Macro2 ; + +Flux := FLUD: System Track :: + EDIT 1 ADI 2 ; + +GREP: Flux :: + GETVAL 'K-EFFECTIVE ' 1 >>keff1<< ; + +ECHO "densB1=" densB1 "K-effective 1 = " keff1 ; +assertS Flux :: 'K-EFFECTIVE' 1 0.9917999 ; + +IF TypeCal "critique" = THEN + + System Flux MacroF DELETE: System Flux MacroF ; + + Fmap := SetParam Fmap :: <<densB2>> <<temp_comb>> <<temp_mode>> + <<dens_mode>> ; + + Micro := NCR: Cpo Fmap :: + EDIT 2 + LINEAR + TABLE Cpo <<Dir>> 'burnup' + MIX 1 INST-BURN ENDMIX + ; + MacroF := Micro :: STEP UP MACROLIB ; + Micro := DELETE: Micro ; + + Micro := NCR: Cpo :: +* dummy reflector -- please use more realistic data + EDIT 2 + LINEAR NMIX 2 + COMPO Cpo <<Dir>> + MIX 2 SET 'burnup' 0.0 + SET 'ppmBore' <<densB2>> + ENDMIX + ; + Macro1 := Micro :: STEP UP MACROLIB ; + Micro := DELETE: Micro ; + + Macro2 Matex := MACINI: Matex Macro1 MacroF ; + + System := TRIVAA: Macro2 Track ; + + Macro1 Macro2 := DELETE: Macro1 Macro2 ; + + Flux := FLUD: System Track :: + EDIT 1 ; + + GREP: Flux :: + GETVAL 'K-EFFECTIVE ' 1 >>keff2<< ; + ECHO "densB2=" densB2 "K-effective 2 = " keff2 ; + assertS Flux :: 'K-EFFECTIVE' 1 1.052038 ; + + EVALUATE Y1 := 1.0 1.0 keff1 / - ; + EVALUATE Y2 := 1.0 1.0 keff2 / - ; + L0 := FIND0: :: ITMAX 20 TOL 1.0E-4 + POINT X <<densB1>> Y <<Y1>> + POINT X <<densB2>> Y <<Y2>> + >>CONV<< >>ROOT<< ; + REPEAT + + System Flux MacroF DELETE: System Flux MacroF ; + + EVALUATE densB := ROOT ; + + Fmap := SetParam Fmap :: <<densB>> <<temp_comb>> <<temp_mode>> + <<dens_mode>> ; + + Micro := NCR: Cpo Fmap :: + EDIT 2 + LINEAR + TABLE Cpo <<Dir>> 'burnup' + MIX 1 INST-BURN ENDMIX + ; + MacroF := Micro :: STEP UP MACROLIB ; + Micro := DELETE: Micro ; + + Micro := NCR: Cpo :: +* dummy reflector -- please use more realistic data + EDIT 2 + LINEAR NMIX 2 + COMPO Cpo <<Dir>> + MIX 2 SET 'burnup' 0.0 + SET 'ppmBore' <<densB>> + ENDMIX + ; + Macro1 := Micro :: STEP UP MACROLIB ; + Micro := DELETE: Micro ; + + Macro2 Matex := MACINI: Matex Macro1 MacroF ; + + System := TRIVAA: Macro2 Track ; + + Macro1 Macro2 := DELETE: Macro1 Macro2 ; + + Flux := FLUD: System Track :: + EDIT 1 ; + + GREP: Flux :: + GETVAL 'K-EFFECTIVE ' 1 >>keffn<< ; + ECHO "K-effective iter " Iter "et bore " ROOT " = " keffn ; + + EVALUATE YNEW := 1.0 1.0 keffn / - ; + L0 := FIND0: L0 :: Y <<YNEW>> + >>CONV<< >>ROOT<< ; + + EVALUATE Iter := Iter 1 + ; + + UNTIL CONV ; + ECHO "Zero is =" ROOT ; + EVALUATE REFVALUE := 1.705336E+03 ; + EVALUATE DELTA := ROOT REFVALUE - REFVALUE / ABS ; + IF DELTA 5.0E-5 < THEN + PRINT "TEST SUCCESSFUL; DELTA=" DELTA ; + ELSE + PRINT "------------" ; + PRINT "TEST FAILURE" ; + PRINT "------------" ; + PRINT "REFERENCE=" REFVALUE " CALCULATED=" ROOT ; + ABORT: ; + ENDIF ; + +ENDIF ; + +ECHO "test rep900.x2m completed" ; +END: ; +QUIT "LIST" . |
