# we use numpy for the data #import numpy as np # from prob.runforest import RunForest from prob.runforest import newpin from prob.settings import setmethod, setalgebra if __name__ == "__main__": # ------------------------------------------------------------------------- TESTDIR = "2d3g_minicore/" PROB_NAME = "2d3g_minicore" DESCRIPTION = ("Mini core problem.") forest = RunForest(prob_name=PROB_NAME, description=DESCRIPTION) # Settings ---------------------------------------------------------------- METHOD = setmethod(mtype='transport', quad=['LevelSymType2', 8]) ALGEBRA = setalgebra(matfree=True, eig=["PI", 1.e-3, 1000]) #ALGEBRA = setalgebra(matfree=True, eig=["Krylov:2",1.e-7,1000, "Standard"]) #METHOD = setmethod(mtype='diffusion') forest.set_settings(method=METHOD, algebra=ALGEBRA) # Geometry ---------------------------------------------------------------- CORE = dict([ ('composed', True), ('name', 'Mini core'), ('nnodes', [3, 3]), ('length', [[5.0, 5.0, 5.0], [5.0, 5.0, 5.0]]), ('components', [[1, 2, 0], [2, 1, 0], [0, 0, 0]]), ('boundary', [2, 0, 2, 0]), ]) LATT = dict() LATT[0] = dict([
from prob.runforest import RunForest from prob.runforest import newpin from prob.settings import setmethod # we use numpy for the data #import numpy as np if __name__ == "__main__": # ------------------------------------------------------------------------- TESTDIR = "2d3g_lattice/" PROB_NAME = "2d3g_lattice" DESCRIPTION = ("Lattice problem.") forest = RunForest(prob_name=PROB_NAME, description=DESCRIPTION) # Settings ---------------------------------------------------------------- #METHOD = setmethod(mtype='transport',quad=['LevelSymType2', 4]) METHOD = setmethod(mtype='diffusion') forest.set_settings(method=METHOD) # Geometry ---------------------------------------------------------------- CORE = dict([ ('composed', True), ('name', 'Lattice'), ('nnodes', [1, 1]), ('length', [[17.0], [17.0]]), ('components', [0]), ('boundary', [2, 2, 2, 2]), ]) LATT = dict() LATT[0] = dict([ ('type', 'pin_map'), ('name', 'assembly'), ('nnodes', [17, 17]),
def test(): """ >>> PROB_NAME = "1d1g_heter" >>> forest = RunForest(prob_name=PROB_NAME) >>> forest_refl = RunForest(prob_name=PROB_NAME+"_refl") >>> METHOD = setmethod(mtype='transport', dsa=False, quad=['GaussLegendre', 96]) >>> ALGEBRA = setalgebra(matfree=True) >>> FE_SETTINGS= dict([('degree', 2), ('n_ref', 2)]) >>> forest.set_settings(method=METHOD, fe_settings=FE_SETTINGS, algebra=ALGEBRA) >>> forest_refl.set_settings(method=METHOD, fe_settings=FE_SETTINGS) >>> LATT = dict() >>> LATT[0] = dict([('type', 'grid'), \ ('nnodes', [7]), \ ('components', [0, 1, 0, 1, 0, 1, 0]), \ ('length', [2.7, 2.4, 2.7, 2.4, 2.7, 2.4, 2.7])]) >>> CORE = dict([('composed', True), \ ('nnodes', [1]), \ ('length', [[18.0]]), \ ('components', [0]), \ ('boundary', [0, 0])]) >>> forest.set_geometry(dim=1, core=CORE, lattices=LATT) >>> LATT = dict() >>> LATT[0] = dict([('type', 'grid'), \ ('nnodes', [4]), \ ('components', [1, 0, 1, 0]), \ ('length', [1.2, 2.7, 2.4, 2.7])]) >>> CORE = dict([('composed', True), \ ('nnodes', [1]), \ ('length', [[9.0]]), \ ('components', [0]), \ ('boundary', [2, 0])]) >>> forest_refl.set_geometry(dim=1, core=CORE, lattices=LATT) >>> MIX = dict() >>> MIX[0] = dict([('name', 'moderator'), \ ('SigmaT', [0.37037000]), \ ('Chi', [1.00000000]), \ ('SigmaS', [0.33400000]), \ ('NuSigF', [0.00000000])]) >>> MIX[1] = dict([('name', 'fuel'), \ ('SigmaT', 0.41666700), \ ('Chi', 1.00000000), \ ('SigmaS', 0.33400000), \ ('NuSigF', 0.17800000)]) >>> forest.set_materials(ngroups=1, mix=MIX) >>> forest_refl.set_materials(ngroups=1, mix=MIX) >>> forest.run() # doctest: +ELLIPSIS Running: ... >>> forest_refl.run() # doctest: +ELLIPSIS Running: ... >>> keff = forest.get_keff() >>> keff_refl = forest_refl.get_keff() >>> abs(keff-1.16222540417) < 1.e-6 True >>> abs(keff_refl-1.16222594896) < 1.e-6 True >>> abs(keff - keff_refl)< 1.e-6 True """ # ------------------------------------------------------------------------- TESTDIR = "1d1g_heter/" PROB_NAME = "1d1g_heter" DESCRIPTION = ("Seven Regions Heterogeneous 1D Slab \n \n" "The reference result is keff = 1.16224, and it has \n" "been obtained from ONEDANT, using an angular \n" "quadrature order of S96, with 500 fine mesh cells \n" "in each region and a convergence criterion of \n" "tol = 1.e-6, as it was reported in: \n \n" "M. Capilla, CF. Talavera, D. Ginestar, G. Verdu, \n" "\"A nodal collocation method for the calculation of \n" "the lambda modes of the P_L equations'; \n" "Annals of Nuclear Energy, 32, (2005), 1825-1853.") forest = RunForest(prob_name=PROB_NAME, description=DESCRIPTION) forest_refl = RunForest(prob_name=PROB_NAME + "_refl", description=DESCRIPTION) # Settings ---------------------------------------------------------------- METHOD = setmethod(mtype='transport', dsa=False, quad=['GaussLegendre', 96]) #METHOD = setmethod(mtype='transport', quad=['GaussLegendre', 96]) #METHOD = setmethod(mtype='diffusion') #ALGEBRA = setalgebra(matfree=True) #ALGEBRA = setalgebra(matfree=True, eig=["PI",1.e-7,1000]) #ALGEBRA = setalgebra(matfree=True, form=,'Standard',eig=["Krylov:1:3",1.e-7,1000], inner=["Krylov",1.e-9,1000,1]) ALGEBRA = setalgebra(matfree=True, form='Standard', eig=["Krylov:1:3", 1.e-7, 1000], mg=["krylov", 1.e-7, 100], inner=["Krylov", 1.e-9, 1000]) #ALGEBRA = setalgebra(matfree=True, eig=["PI",1.e-7,1000,'Standard'], inner=["Krylov",1.e-9,1000,1]) FE_SETTINGS = dict([('degree', 2), ('n_ref', 2)]) forest.set_settings(method=METHOD, fe_settings=FE_SETTINGS, algebra=ALGEBRA) forest_refl.set_settings(method=METHOD, fe_settings=FE_SETTINGS, algebra=ALGEBRA) # Geometry ---------------------------------------------------------------- LATT = dict() lenr = 2.7 #1.0/0.371 lenf = 2.4 #1.0/0.415 LATT[0] = dict([('type', 'grid'), ('nnodes', [7]), ('components', [0, 1, 0, 1, 0, 1, 0]), ('length', [lenr, lenf, lenr, lenf, lenr, lenf, lenr])]) CORE = dict([('composed', True), ('nnodes', [1]), ('length', [[18.0]]), ('components', [0]), ('boundary', [0, 0])]) forest.set_geometry(dim=1, core=CORE, lattices=LATT) # Geometry ---------------------------------------------------------------- LATT = dict() lenr = 2.7 #1.0/0.371 lenf = 2.4 #1.0/0.415 LATT[0] = dict([('type', 'grid'), ('nnodes', [4]), ('components', [0, 1, 0, 1]), ('length', [lenr, lenf, lenr, lenf / 2])]) CORE = dict([('composed', True), ('nnodes', [1]), ('length', [[9.0]]), ('components', [0]), ('boundary', [0, 2])]) forest_refl.set_geometry(dim=1, core=CORE, lattices=LATT) # Materials --------------------------------------------------------------- MIX = dict() MIX[0] = dict([('name', 'moderator'), ('SigmaT', [0.37037000]), ('Chi', [1.00000000]), ('SigmaS', [0.33400000]), ('NuSigF', [0.00000000])]) MIX[1] = dict([('name', 'fuel'), ('SigmaT', 0.41666700), ('Chi', 1.00000000), ('SigmaS', 0.33400000), ('NuSigF', 0.17800000)]) forest.set_materials(ngroups=1, mix=MIX) forest_refl.set_materials(ngroups=1, mix=MIX) # Running forest ---------------------------------------------------------- forest.run() #forest.memory() forest_refl.run()
def test(): """Return the keff of the Reactor >>> TESTDIR = "2d1g_homog/" >>> PROB_NAME = "2d1g_homog" >>> forest = RunForest(prob_name=PROB_NAME) >>> METHOD = setmethod(mtype='transport', dsa=False, quad=['LevelSymType2', 4]) >>> FE_SETTINGS= dict([('degree', 1), ('n_ref', 2)]) >>> ALGEBRA = setalgebra(matfree=True) >>> forest.set_settings(method=METHOD, fe_settings=FE_SETTINGS, algebra=ALGEBRA) >>> CORE = dict([('composed', True), \ ('name', 'mini core'), \ ('nnodes', [1, 1]), \ ('length', [[2.0], [2.0]]), \ ('components', [0]), \ ('boundary', [0, 0, 2, 2])]) >>> LATT = dict() >>> LATT[0] = dict([('type', 'grid'), \ ('name', 'assembly'), \ ('nnodes', [5, 5]), \ ('components', [[0, 0, 0, 0, 0], \ [0, 0, 0, 0, 0], \ [0, 0, 0, 0, 0], \ [0, 0, 0, 0, 0], \ [0, 0, 0, 0, 0]]), \ ('length', [[0.4]*5, [0.4]*5])]) >>> forest.set_geometry(dim=2, core=CORE, lattices=LATT) >>> MIX = dict() >>> MIX[0] = dict([('name', 'fuel'), \ ('SigmaT', 1.0000000000), \ ('Chi', 1.0000000000), \ ('SigmaS', 0.9000000000), \ ('NuSigF', 0.2500000000)]) >>> forest.set_materials(ngroups=1, mix=MIX) >>> forest.run() # doctest: +ELLIPSIS Running: ... >>> abs(forest.get_keff()-0.6383561482185065) < 1.e-6 True """ # ------------------------------------------------------------------------- TESTDIR = "2d1g_homog/" PROB_NAME = "2d1g_homog" DESCRIPTION = ( 'Homogeneous slab 10.0 cm (it can be a 2.0 cm or 10.0 cm slab) \n' 'The reference for sn = 96 is keff = 0.662951 (2cm slab) \n' 'The reference for sn = 96 is keff = 2.00193 (10cm slab) \n' 'This problem is provided in the following paper: \n \n' 'M. Capilla, CF. Talavera, D. Ginestar, G. Verdu, \n' '"A nodal collocation method for the calculation of \n' 'the lambda modes of the P_L equations"; \n' 'Annals of Nuclear Energy, 32, (2005), 1825--1853.') forest = RunForest(prob_name=PROB_NAME, description=DESCRIPTION) # Settings ---------------------------------------------------------------- METHOD = setmethod(mtype='transport', dsa=False, quad=['LevelSymType2', 4]) #METHOD = setmethod(mtype='transport',quad=['LevelSymType2', 2]) #METHOD = setmethod(mtype='diffusion') FE_SETTINGS = dict([('degree', 1), ('n_ref', 1)]) #ALGEBRA = setalgebra(matfree=False) #ALGEBRA = setalgebra(matfree=True) ALGEBRA = setalgebra(matfree=True, eig=["PI", 1.e-7, 1000]) #ALGEBRA = setalgebra(matfree=True, eig=["Krylov",1.e-7,1000]) forest.set_settings(method=METHOD, fe_settings=FE_SETTINGS, algebra=ALGEBRA) # Geometry ---------------------------------------------------------------- CORE = dict([('composed', True), ('name', 'mini core'), ('nnodes', [1, 1]), ('length', [[2.0], [2.0]]), ('components', [0]), ('boundary', [0, 0, 0, 0])]) LATT = dict() LATT[0] = dict([('type', 'grid'), ('name', 'assembly'), ('nnodes', [5, 5]), ('components', [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]), ('length', [[0.4] * 5, [0.4] * 5])]) forest.set_geometry(dim=2, core=CORE, lattices=LATT) # Materials --------------------------------------------------------------- MIX = dict() MIX[0] = dict([('name', 'fuel'), ('SigmaT', 1.0000000000), ('Chi', 1.0000000000), ('SigmaS', 0.9000000000), ('NuSigF', 0.2500000000)]) forest.set_materials(ngroups=1, mix=MIX) # Running forest ---------------------------------------------------------- #forest.run() forest.memory()
"The reference for sn = 02 is keff = 5.755775E-01 \n" "The reference for sn = 04 is keff = 5.806699E-01 \n" "The reference for sn = 06 is keff = 5.900330E-01 \n" "The reference for sn = 08 is keff = 5.941040E-01 \n" "The reference for sn = 12 is keff = 5.957445E-01 \n" "The reference for sn = 16 is keff = 5.963024E-01 \n" "The reference for sn = 20 is keff = 5.964814E-01 \n \n" "This problem is a generalization of the 1D seven \n" "region problem provided by: \n \n" "M. Capilla, CF. Talavera, D. Ginestar, G. Verdu, \n" "'A nodal collocation method for the calculation of \n" "the lambda modes of the P_L equations'; \n" "Annals of Nuclear Energy, 32, (2005), 1825-1853.") forest = RunForest(prob_name=PROB_NAME, description=DESCRIPTION) # Settings ---------------------------------------------------------------- METHOD = setmethod(mtype='transport', dsa=False, quad=['LevelSymType2', 4]) #METHOD = setmethod(mtype='transport',quad=['LevelSymType2', 2]) #METHOD = setmethod(mtype='diffusion') ALGEBRA = setalgebra(matfree=True) FE_SETTINGS = dict([('degree', 3), ('n_ref', 1)]) forest.set_settings(method=METHOD, fe_settings=FE_SETTINGS, algebra=ALGEBRA) # Geometry ---------------------------------------------------------------- CORE = dict([('composed', True), ('name', 'mini core'), ('nnodes', [1, 1]), ('length', [[18.0], [18.0]]), ('components', [0]), ('boundary', [0, 0, 0, 0])]) LATT = dict() LATT[0] = dict([('type', 'grid'), ('name', 'assembly'), ('nnodes', [8, 8]), ('components', [[0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 1, 1, 0, 1, 0],
#import numpy as np # from prob.runforest import RunForest # extra functions to make our life easier from prob.runforest import newpin from prob.utils import combine_xml, combine_names from prob.settings import setmethod if __name__ == "__main__": # ------------------------------------------------------------------------- #TESTDIR = "1dg7_c5g7_heter/" #PROB_NAME = "1dg7_c5g7_heter" DESCRIPTION = ("One-dimensional heterogeneous version of the c5g7.") # Settings ---------------------------------------------------------------- METHOD = setmethod(mtype='transport', quad=['GaussLegendre', 2]) #METHOD = setmethod(mtype='diffusion') FE_SETTINGS = dict([('degree', 0), ('n_ref', 0)]) # Materials --------------------------------------------------------------- from get_c5g7_materials import get_c5g7_materials MIX = get_c5g7_materials() # Geometry ---------------------------------------------------------------- PIN = dict() PIN[0] = newpin(ptype='box', mat=[0], name='moderator') PIN[1] = newpin(ptype='pin', mat=[0, 1], fradius=0.54, name='UO2') PIN[2] = newpin(ptype='pin', mat=[0, 2], fradius=0.54, name='MOX4.3') PIN[3] = newpin(ptype='pin', mat=[0, 3], fradius=0.54, name='MOX7.0') PIN[4] = newpin(ptype='pin', mat=[0, 4], fradius=0.54, name='MOX8.7') PIN[5] = newpin(ptype='pin', mat=[0, 5], fradius=0.54, name='fisschamber') PIN[6] = newpin(ptype='pin', mat=[0, 6], fradius=0.54, name='guidetube') LATT = dict()
def oneDc5g7_noupscattering(pinSize, method, nev=1, ncv=3): # ------------------------------------------------------------------------- # TESTDIR = "1d7g_c5g7_noupscattering/" pinSize_str = str(pinSize).replace('.', '') if method is 'kr': method_str = 'Krylov:' + str(nev) + ':' + str(ncv) PROB_NAME = ("1dg7_c5g7_" + method + '_' + pinSize_str + "cm" + '_nev' + str(nev) + '_ncv' + str(ncv)) else: method_str = 'PI' PROB_NAME = "1dg7_c5g7_" + method + '_' + pinSize_str + "cm" # If out file exists do not do anything out_file = PROB_NAME + '.out.xml' if (os.path.isfile(out_file)): return PROB_NAME DESCRIPTION = ("One-dimensional heterogeneous version of the c5g7.") forest = RunForest(prob_name=PROB_NAME, description=DESCRIPTION) # Settings ---------------------------------------------------------------- METHOD = setmethod(mtype='transport', quad=['GaussLegendre', 16]) #METHOD = setmethod(mtype='diffusion') FE_SETTINGS = dict([('degree', 2), ('n_ref', 1)]) ALGEBRA = setalgebra(matfree=True, eig=[method_str, 1.e-7, 1000, "Standard"], inner=["Krylov", 1.e-9, 1000]) forest.set_settings(method=METHOD, fe_settings=FE_SETTINGS, algebra=ALGEBRA) # Geometry ---------------------------------------------------------------- CORE = dict([ ('composed', True), ('name', 'Core'), ('nnodes', [3]), ('length', [[17 * pinSize, 17 * pinSize, 17 * pinSize]]), ('components', [[2, 1, 2]]), ('boundary', [2, 2]), ]) LATT = dict() LATT[1] = dict([ ('type', 'pin_map'), ('name', 'MOX'), ('nnodes', [17]), ('components', [[2, 3, 6, 4, 4, 6, 4, 4, 5, 4, 4, 6, 4, 4, 6, 3, 2]]), #('components', [[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]]), ('water_gap', [0., 0.]), ('length', [[pinSize] * 17]), ]) LATT[2] = dict([ ('type', 'pin_map'), ('name', 'UOX'), ('nnodes', [17]), ('components', [[1, 1, 6, 1, 1, 6, 1, 1, 5, 1, 1, 6, 1, 1, 6, 1, 1]]), #('components', [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]), ('water_gap', [0., 0.]), ('length', [[pinSize] * 17]), ]) PIN = dict() PIN[0] = newpin(ptype='box', mat=[0], name='moderator') PIN[1] = newpin(ptype='pin', mat=[0, 1], fradius=0.54, name='UO2') PIN[2] = newpin(ptype='pin', mat=[0, 2], fradius=0.54, name='MOX4.3') PIN[3] = newpin(ptype='pin', mat=[0, 3], fradius=0.54, name='MOX7.0') PIN[4] = newpin(ptype='pin', mat=[0, 4], fradius=0.54, name='MOX8.7') PIN[5] = newpin(ptype='pin', mat=[0, 5], fradius=0.54, name='fisschamber') PIN[6] = newpin(ptype='pin', mat=[0, 6], fradius=0.54, name='guidetube') forest.set_geometry(dim=1, core=CORE, lattices=LATT, pins=PIN) # Materials --------------------------------------------------------------- from get_c5g7_materials import get_c5g7_materials MIX = get_c5g7_materials() forest.set_materials(ngroups=7, mix=MIX) # Running forest ---------------------------------------------------------- forest.run() forest.clean() return PROB_NAME
# ------------------------------------------------------------------------- TESTDIR = "1d1g_homog/" PROB_NAME = "1d1g_homog" DESCRIPTION = ( 'Homogeneous slab 10.0 cm (it can be a 2.0 cm or 10.0 cm slab) \n' 'The reference for sn = 96 is keff = 0.662951 (2cm slab) \n' 'The reference for sn = 96 is keff = 2.00193 (10cm slab) \n' 'This problem is provided in the following paper: \n \n' 'M. Capilla, CF. Talavera, D. Ginestar, G. Verdu, \n' '"A nodal collocation method for the calculation of \n' 'the lambda modes of the P_L equations"; \n' 'Annals of Nuclear Energy, 32, (2005), 1825--1853.') forest = RunForest(prob_name=PROB_NAME, description=DESCRIPTION) # Settings ---------------------------------------------------------------- METHOD = setmethod(mtype='transport', dsa=False, quad=['GaussLegendre', 96]) #METHOD = setmethod(mtype='transport', quad=['GaussLegendre', 96]) FE_SETTINGS= dict([('degree', 4), ('n_ref', 2)]) #ALGEBRA = setalgebra(matfree=True) ALGEBRA = setalgebra(matfree=False) forest.set_settings(method=METHOD, fe_settings=FE_SETTINGS, algebra=ALGEBRA) # Geometry ---------------------------------------------------------------- CORE = dict([('composed', True), ('name', 'mini core'), ('nnodes', [1]), ('length', [[2.0]]), ('components', [0]), ('boundary', [0, 0])]) LATT = dict() LATT[0] = dict([('type', 'grid'), ('name', 'assembly'),