mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-25 20:45:35 -04:00
72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
import glob
|
|
import os
|
|
import copy
|
|
|
|
from tests.testing_harness import CMFDTestHarness
|
|
from openmc import cmfd
|
|
import numpy as np
|
|
|
|
|
|
class CMFDRestartTestHarness(CMFDTestHarness):
|
|
def __init__(self, final_sp, restart_sp, cmfd_run1, cmfd_run2):
|
|
super().__init__(final_sp, cmfd_run1)
|
|
self._cmfd_restart_run = cmfd_run2
|
|
self._restart_sp = restart_sp
|
|
|
|
def execute_test(self):
|
|
try:
|
|
# Compare results from first CMFD run
|
|
self._test_output_created()
|
|
results = self._get_results()
|
|
results += self._cmfdrun_results
|
|
self._write_results(results)
|
|
self._compare_results()
|
|
|
|
# Run CMFD from restart file
|
|
statepoint = glob.glob(os.path.join(os.getcwd(), self._restart_sp))
|
|
assert len(statepoint) == 1
|
|
statepoint = statepoint[0]
|
|
self._cmfd_restart_run.run(args=['-r', statepoint])
|
|
|
|
# Compare results from second CMFD run
|
|
self._test_output_created()
|
|
self._create_cmfd_result_str(self._cmfd_restart_run)
|
|
results = self._get_results()
|
|
results += self._cmfdrun_results
|
|
self._write_results(results)
|
|
self._compare_results()
|
|
finally:
|
|
self._cleanup()
|
|
|
|
|
|
def test_cmfd_restart():
|
|
"""Test 1 group CMFD solver with restart run"""
|
|
# Initialize and set CMFD mesh, create a copy for second run
|
|
cmfd_mesh = cmfd.CMFDMesh()
|
|
cmfd_mesh.lower_left = (-10.0, -1.0, -1.0)
|
|
cmfd_mesh.upper_right = (10.0, 1.0, 1.0)
|
|
cmfd_mesh.dimension = (10, 1, 1)
|
|
cmfd_mesh.albedo = (0.0, 0.0, 1.0, 1.0, 1.0, 1.0)
|
|
cmfd_mesh2 = copy.deepcopy(cmfd_mesh)
|
|
|
|
# Initialize and run first CMFDRun object
|
|
cmfd_run = cmfd.CMFDRun()
|
|
cmfd_run.mesh = cmfd_mesh
|
|
cmfd_run.tally_begin = 5
|
|
cmfd_run.solver_begin = 5
|
|
cmfd_run.feedback = True
|
|
cmfd_run.gauss_seidel_tolerance = [1.e-15, 1.e-20]
|
|
cmfd_run.run()
|
|
|
|
# Initialize second CMFDRun object which will be run from restart file
|
|
cmfd_run2 = cmfd.CMFDRun()
|
|
cmfd_run2.mesh = cmfd_mesh2
|
|
cmfd_run2.tally_begin = 5
|
|
cmfd_run2.solver_begin = 5
|
|
cmfd_run2.feedback = True
|
|
cmfd_run2.gauss_seidel_tolerance = [1.e-15, 1.e-20]
|
|
|
|
# Initialize and run CMFD restart test harness
|
|
harness = CMFDRestartTestHarness('statepoint.20.h5', 'statepoint.15.h5',
|
|
cmfd_run, cmfd_run2)
|
|
harness.main()
|