Initial commmit for tally triggers with squashed commit log

This commit is contained in:
Will Boyd 2015-05-05 16:47:05 -04:00
parent b73464be7d
commit fc5c421854
47 changed files with 2280 additions and 71 deletions

View file

@ -0,0 +1,10 @@
<?xml version="1.0"?>
<geometry>
<surface id="1" type="sphere" coeffs="0. 0. 0. 1.4" />
<surface id="2" type="sphere" coeffs="0. 0. 0. 5.35" boundary="vacuum" />
<cell id="1" material="void" surfaces="-1" /> <!-- cavity -->
<cell id="2" material="1" surfaces=" 1 -2" /> <!-- Pu Core -->
</geometry>

View file

@ -0,0 +1,13 @@
<?xml version="1.0"?>
<materials>
<default_xs>71c</default_xs>
<!-- Plutonium -->
<material id="1">
<density value="18.4757" units="g/cm3" />
<nuclide name="Pu-239" ao="1.0" />
</material>
</materials>

View file

@ -0,0 +1,43 @@
#!/usr/bin/env python
import sys
import numpy as np
sys.path.insert(0, '../../src/utils')
from openmc.statepoint import StatePoint
# read in statepoint file
if len(sys.argv) > 1:
sp = StatePoint(sys.argv[1])
else:
sp = StatePoint('statepoint.19.binary')
sp.read_results()
# extract tally results and convert to vector
sum1 = sp._tallies[1]._sum
sum_sq1 = sp._tallies[1]._sum_sq
results1 = np.concatenate([sum1, sum_sq1])
sum2 = sp._tallies[2]._sum
sum_sq2 = sp._tallies[2]._sum_sq
results2 = np.concatenate([sum2, sum_sq2])
results = np.concatenate([results1.flatten(), results2.flatten()])
# set up output string
outstr = ''
# write out k-combined
outstr += 'k-combined:\n'
outstr += "{0:12.6E} {1:12.6E}\n".format(sp.k_combined[0], sp.k_combined[1])
# write out tally results
outstr += 'tallies:\n'
for item in results:
outstr += "{0:12.6E}\n".format(item)
# write results to file
with open('results_test.dat','w') as fh:
fh.write(outstr)

View file

@ -0,0 +1,27 @@
k-combined:
9.851940E-01 4.283951E-03
tallies:
1.972289E+01
4.489781E+00
4.356175E+00
1.523311E+01
1.972289E+01
4.489781E+00
4.356175E+00
1.523311E+01
2.779778E+01
1.440247E+00
1.355797E+00
1.658397E+01
2.779778E+01
1.440247E+00
1.355797E+00
1.658397E+01
1.972289E+01
4.489781E+00
4.356175E+00
1.523311E+01
2.779778E+01
1.440247E+00
1.355797E+00
1.658397E+01

View file

@ -0,0 +1,26 @@
<?xml version="1.0"?>
<settings>
<eigenvalue>
<batches>10</batches>
<inactive>5</inactive>
<particles>1000</particles>
<keff_trigger>
<type>std_dev</type>
<threshold>0.00445</threshold>
</keff_trigger>
</eigenvalue>
<trigger>
<status>true</status>
<max_batches>30</max_batches>
<batch_interval>1</batch_interval>
</trigger>
<source>
<space>
<type>point</type>
<parameters>0.0 0.0 0.0</parameters>
</space>
</source>
</settings>

View file

@ -0,0 +1,14 @@
<?xml version="1.0"?>
<tallies>
<tally id="1">
<nuclides>all</nuclides>
<scores>total absorption fission scatter</scores>
</tally>
<tally id="2">
<nuclides>Pu-239</nuclides>
<scores>total absorption fission scatter</scores>
</tally>
</tallies>

View file

@ -0,0 +1,59 @@
#!/usr/bin/env python
import os
from subprocess import Popen, STDOUT, PIPE, call
import filecmp
import glob
from optparse import OptionParser
parser = OptionParser()
parser.add_option('--mpi_exec', dest='mpi_exec', default='')
parser.add_option('--mpi_np', dest='mpi_np', default='3')
parser.add_option('--exe', dest='exe')
(opts, args) = parser.parse_args()
cwd = os.getcwd()
def test_run():
if opts.mpi_exec != '':
proc = Popen([opts.mpi_exec, '-np', opts.mpi_np, opts.exe, cwd],
stderr=STDOUT, stdout=PIPE)
else:
proc = Popen([opts.exe, cwd], stderr=STDOUT, stdout=PIPE)
print(proc.communicate()[0])
returncode = proc.returncode
assert returncode == 0, 'OpenMC did not exit successfully.'
def test_created_statepoint():
statepoint = glob.glob(os.path.join(cwd, 'statepoint.19.*'))
assert len(statepoint) == 1, 'Either multiple or no statepoint files exist.'
assert statepoint[0].endswith('binary') or statepoint[0].endswith('h5'),\
'Statepoint file is not a binary or hdf5 file.'
def test_results():
statepoint = glob.glob(os.path.join(cwd, 'statepoint.19.*'))
call(['python', 'results.py', statepoint[0]])
compare = filecmp.cmp('results_test.dat', 'results_true.dat')
if not compare:
os.rename('results_test.dat', 'results_error.dat')
assert compare, 'Results do not agree.'
def teardown():
output = glob.glob(os.path.join(cwd, 'statepoint.19.*'))
output.append(os.path.join(cwd, 'results_test.dat'))
for f in output:
if os.path.exists(f):
os.remove(f)
if __name__ == '__main__':
# test for openmc executable
if opts.exe is None:
raise Exception('Must specify OpenMC executable from command line with --exe.')
# run tests
try:
test_run()
test_created_statepoint()
test_results()
finally:
teardown()