*********************************************************** * * * Input file : Example1.x2m * * Purpose : Test for non-regression using DONJON-4 * * Author(s) : D. Sekki (2007/11) * * * *********************************************************** PROCEDURE assertS Pgeom Pfmap Pburn Pdevc ; MODULE DELETE: GREP: END: CRE: MACINI: FLUD: USPLIT: DSET: TAVG: FLPOW: TRIVAT: TRIVAA: NEWMAC: ; LINKED_LIST GEOM TRACK MATEX FMAP FLUX POWER MACFL DEVICE MACRO1 MACRO2 MACRO SYSTEM ; LINKED_LIST LREFL1 LREFL2 LFUEL1 LFUEL2 LZCRin LZCRot LSORin LSORot ; *-- * variables: *-- INTEGER nbMix := 8 ; INTEGER nbRefl nbFuel := 2 2 ; INTEGER mFuel1 mFuel2 := 1 2 ; INTEGER mRefl1 mRefl2 := 3 4 ; INTEGER mZCRin mZCRot := 5 6 ; INTEGER mSORin mSORot := 7 8 ; INTEGER MaxReg := 100000 ; STRING Method := "MCFD" ; INTEGER degree quadr := 1 1 ; INTEGER iter iEdit := 0 5 ; REAL Power := 1800. ; REAL epsil := 1.E-5 ; REAL Precf := 1.E-5 ; REAL Eps Keff Bexit ; *-- * compo files: *-- SEQ_ASCII SFUEL1 :: FILE 'CpoFuel1' ; SEQ_ASCII SFUEL2 :: FILE 'CpoFuel2' ; SEQ_ASCII SREFL1 :: FILE 'CpoMode1' ; SEQ_ASCII SREFL2 :: FILE 'CpoMode2' ; SEQ_ASCII SZCRin :: FILE 'CpoZCRin' ; SEQ_ASCII SZCRot :: FILE 'CpoZCRot' ; SEQ_ASCII SSORin :: FILE 'CpoSORin' ; SEQ_ASCII SSORot :: FILE 'CpoSORot' ; *-- * compo directories: *-- STRING NamFuel1 := "FUEL1 1" ; STRING NamFuel2 := "FUEL2 1" ; STRING NamRefl1 := "MODE1 1" ; STRING NamRefl2 := "MODE2 1" ; STRING NamZCRin := "ZCRIN 1" ; STRING NamZCRot := "ZCROT 1" ; STRING NamSORin := "SORIN 1" ; STRING NamSORot := "SOROT 1" ; *---------------------------------------------------------- * * FULL-CORE CALCULATION * ====================== *-- * geometry construction: *-- GEOM := Pgeom ; *-- * reactor material index: *-- GEOM MATEX := USPLIT: GEOM :: EDIT 0 NGRP 2 MAXR <> NREFL <> RMIX <> <> NFUEL <> FMIX <> <> ; *-- * numerical discretization: *-- IF Method "MCFD" = THEN TRACK := TRIVAT: GEOM :: EDIT 1 MAXR <> MCFD <> ; ELSEIF Method "PRIM" = THEN TRACK := TRIVAT: GEOM :: EDIT 1 MAXR <> PRIM <> ; ELSEIF Method "DUAL" = THEN TRACK := TRIVAT: GEOM :: EDIT 1 MAXR <> DUAL <> <> ; ENDIF ; *-- * macrolib for reflector: *-- LREFL1 := SREFL1 ; LREFL2 := SREFL2 ; MACRO1 := CRE: LREFL1 LREFL2 :: EDIT 1 NMIX <> READ COMPO LREFL1 MIX <> <> ENDMIX COMPO LREFL2 MIX <> <> ENDMIX ; *-- * device specification: *-- DEVICE MATEX := Pdevc MATEX :: <> <> <> <> ; *-- * full insertion of ZCR-devices: *-- DEVICE := DSET: DEVICE :: EDIT 1 ROD-GROUP 1 LEVEL 1.0 END ROD-GROUP 2 LEVEL 1.0 END ROD-GROUP 3 LEVEL 1.0 END ; *-- * update macrolib for devices: *-- LZCRin := SZCRin ; LZCRot := SZCRot ; LSORin := SSORin ; LSORot := SSORot ; MACRO1 := CRE: MACRO1 LZCRin LZCRot LSORin LSORot :: EDIT 1 READ COMPO LZCRin MIX <> <> ENDMIX COMPO LZCRot MIX <> <> ENDMIX COMPO LSORin MIX <> <> ENDMIX COMPO LSORot MIX <> <> ENDMIX ; *-- * fuel-map specification: *-- FMAP MATEX := Pfmap MATEX ; *-- * average exit burnups: *-- FMAP := Pburn FMAP ; *-- * initialization: *-- LFUEL1 := SFUEL1 ; LFUEL2 := SFUEL2 ; EVALUATE Eps := epsil 1. + ; *---------------------------------------------------------- * TIME-AVERAGE CALCULATION *---------------------------------------------------------- WHILE Eps epsil > iter 20 < * DO EVALUATE iter := iter 1 + ; *-- * fuel-map macrolib: *-- MACFL := CRE: LFUEL1 LFUEL2 FMAP :: EDIT 0 READ TABLE LFUEL1 MIX <> <> ENDMIX TABLE LFUEL2 MIX <> <> ENDMIX ; *-- * extended macrolib: *-- MACRO2 MATEX := MACINI: MATEX MACRO1 MACFL :: EDIT 0 ; MACFL := DELETE: MACFL ; *-- * complete macrolib: *-- MACRO MATEX := NEWMAC: MATEX MACRO2 DEVICE :: EDIT 0 ; MACRO2 := DELETE: MACRO2 ; *-- * numerical solution: *-- SYSTEM := TRIVAA: MACRO TRACK :: EDIT 0 ; MACRO := DELETE: MACRO ; IF iter 1 = THEN FLUX := FLUD: SYSTEM TRACK :: EDIT 0 ACCE 3 3 ADI 4 EXTE 1000 <> THER 1000 ; ELSE FLUX := FLUD: FLUX SYSTEM TRACK :: EDIT 0 ACCE 3 3 ADI 4 EXTE 1000 <> THER 1000 ; ENDIF ; SYSTEM := DELETE: SYSTEM ; *-- * flux and power: *-- POWER := FLPOW: FMAP FLUX TRACK MATEX :: EDIT 0 PTOT <> ; *-- * burnups integration limits: *-- FMAP := TAVG: FMAP POWER :: EDIT 0 AX-SHAPE RELAX 0.5 B-EXIT ; POWER := DELETE: POWER ; *-- * current parameters: *-- GREP: FLUX :: GETVAL 'K-EFFECTIVE' 1 >>Keff<< ; GREP: FMAP :: GETVAL EPS-AX 1 >>Eps<< ; ECHO "Iteration No. " iter ; ECHO "AXIAL-SHAPE ERROR : " Eps ; ECHO "RESULTING K-EFF : " Keff ; ENDWHILE ; *---------------------------------------------------------- *-- * edit resulting fluxes and powers: *-- POWER := FLPOW: FMAP FLUX TRACK MATEX :: EDIT <> PTOT <> ; *-- * last parameters: *-- GREP: FLUX :: GETVAL 'K-EFFECTIVE' 1 >>Keff<< ; GREP: FMAP :: GETVAL EPS-AX 1 >>Eps<< ; GREP: FMAP :: GETVAL B-EXIT 1 >>Bexit<< ; ECHO "Number of Iterations " iter ; ECHO "AXIAL-SHAPE ERROR : " Eps ; ECHO "CORE-AVERAGE EXIT BURNUP : " Bexit ; ECHO "RESULTING K-EFFECTIVE : " Keff ; assertS FLUX :: 'K-EFFECTIVE' 1 1.050128 ; END: ; QUIT .