Merge branch 'develop' into cmfd_src

This commit is contained in:
Bryan Herman 2014-03-15 08:18:35 -04:00
commit a598732862
19 changed files with 155 additions and 47 deletions

View file

@ -48,7 +48,12 @@ following commands in a terminal:
sudo make install
This will build an executable named ``openmc`` and install it (by default in
/usr/local/bin).
/usr/local/bin). If you do not have administrator privileges, the last command
can be replaced with a local install, e.g.
.. code-block:: sh
make install -e prefix=$HOME/.local
.. _GitHub: https://github.com/mit-crpg/openmc
.. _git: http://git-scm.com

View file

@ -10,6 +10,7 @@ bugs fixed, and known issues for each successive release.
.. toctree::
:maxdepth: 1
notes_0.5.4
notes_0.5.3
notes_0.5.2
notes_0.5.1

View file

@ -0,0 +1,63 @@
.. _notes_0.5.4:
==============================
Release Notes for OpenMC 0.5.4
==============================
.. note::
These release notes are for an upcoming release of OpenMC and are still
subject to change.
-------------------
System Requirements
-------------------
There are no special requirements for running the OpenMC code. As of this
release, OpenMC has been tested on a variety of Linux distributions, Mac OS X,
and Microsoft Windows 7. Memory requirements will vary depending on the size of
the problem at hand (mostly on the number of nuclides in the problem).
------------
New Features
------------
- New XML parsing backend (FoX)
- Ability to write particle track files
- Handle lost particles more gracefully (via particle track files)
- Source sites outside geometry are resampled
- Multiple random number generator streams
- plot_mesh_tally.py utility converted to use Tkinter rather than PyQt
- Script added to download ACE data from NNDC
- Mixed ASCII/binary cross_sections.xml now allowed
- Expanded options for writing source bank
- Re-enabled ability to use source file as starting source
---------
Bug Fixes
---------
- 32c03c_: Check for valid data in cross_sections.xml
- c71ef5_: Fix bug in statepoint.py
- 8884fb_: Check for all ZAIDs for S(a,b) tables
- b38af0_: Fix XML reading on multiple levels of input
- d28750_: Fix bug in convert_xsdir.py
.. _32c03c: https://github.com/mit-crpg/openmc/commit/32c03c
.. _c71ef5: https://github.com/mit-crpg/openmc/commit/c71ef5
.. _8884fb: https://github.com/mit-crpg/openmc/commit/8884fb
.. _b38af0: https://github.com/mit-crpg/openmc/commit/b38af0
.. _d28750: https://github.com/mit-crpg/openmc/commit/d28750
------------
Contributors
------------
This release contains new contributions from the following people:
- `Sterling Harper <smharper@mit.edu>`_
- `Bryan Herman <bherman@mit.edu>`_
- `Nick Horelik <nhorelik@mit.edu>`_
- `Adam Nelson <nelsonag@umich.edu>`_
- `Paul Romano <paul.k.romano@gmail.com>`_
- `Tuomas Viitanen <tuomas.viitanen@vtt.fi>`_
- `Jon Walsh <walshjon@mit.edu>`_

View file

@ -1089,7 +1089,7 @@ sub-elements:
the PNG format can often times reduce the file size by orders of
magnitude without any loss of image quality. Likewise,
high-resolution voxel files produced by OpenMC can be quite large,
but the equivalent SILO files will by significantly smaller.
but the equivalent SILO files will be significantly smaller.
*Default*: "slice"

View file

@ -244,7 +244,15 @@ the root directory of the source code:
sudo make install
This will build an executable named ``openmc`` and install it (by default in
/usr/local/bin).
/usr/local/bin). If you do not have administrative privileges, you can install
OpenMC locally by replacing the last command with:
.. code-block:: sh
make install -e prefix=$HOME/.local
The ``prefix`` variable can be changed to any path for which you have
write-access.
Compiling on Windows
--------------------

View file

@ -11,7 +11,7 @@ module constants
integer, parameter :: VERSION_RELEASE = 3
! Revision numbers for binary files
integer, parameter :: REVISION_STATEPOINT = 10
integer, parameter :: REVISION_STATEPOINT = 11
integer, parameter :: REVISION_PARTICLE_RESTART = 1
! Binary file types

View file

@ -394,7 +394,7 @@ contains
! It is a source file
path_source_point = argv(i)
else
else ! Different option is specified not a source file
! Source is in statepoint file
path_source_point = path_state_point
@ -403,6 +403,12 @@ contains
i = i - 1
end if
else ! No command line arg after statepoint
! Source is assumed to be in statepoint file
path_source_point = path_state_point
end if
case ('-g', '-geometry-debug', '--geometry-debug')

View file

@ -58,7 +58,6 @@ contains
integer(8) :: temp_long
integer :: n_tracks
logical :: file_exists
logical :: check
character(MAX_FILE_LEN) :: env_variable
character(MAX_WORD_LEN) :: type
character(MAX_LINE_LEN) :: filename
@ -681,14 +680,14 @@ contains
end if
! Check if the user has specified to write binary source file
if (check_for_node(node_sp, "source_separate")) then
call get_node_value(node_sp, "source_separate", temp_str)
if (check_for_node(node_sp, "separate")) then
call get_node_value(node_sp, "separate", temp_str)
call lower_case(temp_str)
if (trim(temp_str) == 'true' .or. &
trim(temp_str) == '1') source_separate = .true.
end if
if (check_for_node(node_sp, "source_write")) then
call get_node_value(node_sp, "source_write", temp_str)
if (check_for_node(node_sp, "write")) then
call get_node_value(node_sp, "write", temp_str)
call lower_case(temp_str)
if (trim(temp_str) == 'false' .or. &
trim(temp_str) == '0') source_write = .false.
@ -713,10 +712,9 @@ contains
! make sure that the sourcepoint batch numbers are contained in the
! statepoint list
if (.not. source_separate) then
check = .true.
do i = 1, n_source_points
check = statepoint_batch % contains(sourcepoint_batch % get_item(i))
if (.not. check) then
if (.not. statepoint_batch % contains(sourcepoint_batch % &
get_item(i))) then
message = 'Sourcepoint batches are not a subset&
& of statepoint batches.'
call fatal_error()

View file

@ -101,11 +101,11 @@ element settings {
attribute batches { list { xsd:positiveInteger+ } }) |
(element interval { xsd:positiveInteger } |
attribute interval { xsd:positiveInteger })
) &
(element source_separate { xsd:boolean } |
attribute source_separate { xsd:boolean })? &
(element source_write { xsd:boolean } |
attribute source_write { xsd:boolean })? &
)? &
(element separate { xsd:boolean } |
attribute separate { xsd:boolean })? &
(element write { xsd:boolean } |
attribute write { xsd:boolean })? &
(element overwrite_latest { xsd:boolean} |
attribute overwrite_latest {xsd:boolean})?
}? &

View file

@ -50,6 +50,12 @@ contains
! Read the file type
call sp % read_data(itmp, "filetype")
! Check to make sure this is a source file
if (itmp /= FILETYPE_SOURCE) then
message = "Specified starting source file not a source file type."
call fatal_error()
end if
! Read in the source bank
call sp % read_source_bank()

View file

@ -232,6 +232,13 @@ contains
end if
! Indicate where source bank is stored in statepoint
if (source_separate) then
call sp % write_data(0, "source_present")
else
call sp % write_data(1, "source_present")
end if
! Check for the no-tally-reduction method
if (.not. reduce_tallies) then
! If using the no-tally-reduction method, we need to collect tally
@ -518,6 +525,7 @@ contains
integer :: length(4)
integer :: int_array(3)
integer, allocatable :: temp_array(:)
logical :: source_present
real(8) :: real_array(3)
type(TallyObject), pointer :: t => null()
@ -722,6 +730,20 @@ contains
end do TALLY_METADATA
! Check for source in statepoint if needed
call sp % read_data(int_array(1), "source_present")
if (int_array(1) == 1) then
source_present = .true.
else
source_present = .false.
end if
! Check to make sure source bank is present
if (path_source_point == path_state_point .and. .not. source_present) then
message = "Source bank must be contained in statepoint restart file"
call fatal_error()
end if
! Read tallies to master
if (master) then
@ -762,26 +784,17 @@ contains
if (run_mode == MODE_EIGENVALUE) then
! Check if source was written out separately
if (source_separate) then
if (.not. source_present) then
! Close statepoint file
call sp % file_close()
! Set filename for source
filename = trim(path_output) // 'source.' // &
trim(to_str(restart_batch))
#ifdef HDF5
filename = trim(filename) // '.h5'
#else
filename = trim(filename) // '.binary'
#endif
! Write message
message = "Loading source file " // trim(filename) // "..."
call write_message(1)
! Open source file
call sp % file_open(filename, 'r', serial = .false.)
call sp % file_open(path_source_point, 'r', serial = .false.)
! Read file type
call sp % read_data(int_array(1), "filetype")

View file

@ -151,7 +151,7 @@ class StatePoint(object):
# Read statepoint revision
self.revision = self._get_int(path='revision')[0]
if self.revision != 10:
if self.revision != 11:
raise Exception('Statepoint Revision is not consistent.')
# Read OpenMC version
@ -298,6 +298,13 @@ class StatePoint(object):
f.stride = stride
stride *= f.length
# Source bank present
source_present = self._get_int(path='source_present')[0]
if source_present == 1:
self.source_present = True
else:
self.source_present = False
# Set flag indicating metadata has already been read
self._metadata = True
@ -342,6 +349,11 @@ class StatePoint(object):
if not self._results:
self.read_results()
# Check if source bank is in statepoint
if not self.source_present:
print('Source not in statepoint file.')
return
# For HDF5 state points, copy entire bank
if self._hdf5:
source_sites = self._f['source_bank'].value

View file

@ -1,3 +1,5 @@
#!/bin/bash
# This simple script ensures that all binary
# output files have been deleted in all the
# folders. This can occur if a previous error
@ -5,10 +7,4 @@
# deleting left over binary files. This will
# cause an assertion error in some of the
# tests.
for i in ./*; do
if [ -d "$i" ]; then
cd $i
rm -f *.binary *.h5
cd ..
fi
done
find . \( -name "*.binary" -o -name "*.h5" \) -exec rm -f {} \;

View file

@ -117,6 +117,8 @@ if len(sys.argv) > 1:
if j.rfind(suffix) != -1:
if suffix == 'omp' and j == 'compile':
continue
if j == 'compile':
continue
tests__.append(j)
else:
tests__.append(i) # append specific test (e.g., mpi-debug)

View file

@ -2,7 +2,7 @@
<settings>
<state_point batches="10" />
<source_point source_separate="true" />
<source_point separate="true" />
<eigenvalue>
<batches>10</batches>

View file

@ -3,7 +3,7 @@
import os
from subprocess import Popen, STDOUT, PIPE, call
import filecmp
#from nose_mpi import NoseMPI
from nose_mpi import NoseMPI
import glob
pwd = os.path.dirname(__file__)
@ -12,7 +12,7 @@ settings1="""<?xml version="1.0"?>
<settings>
<state_point batches="10" />
<source_point source_separate="true" />
<source_point separate="true" />
<eigenvalue>
<batches>10</batches>
@ -51,8 +51,7 @@ def setup():
def test_run1():
openmc_path = pwd + '/../../src/openmc'
# if int(NoseMPI.mpi_np) > 0:
if False:
if int(NoseMPI.mpi_np) > 0:
proc = Popen([NoseMPI.mpi_exec, '-np', NoseMPI.mpi_np, openmc_path],
stderr=STDOUT, stdout=PIPE)
else:
@ -74,8 +73,7 @@ def test_run2():
source = glob.glob(pwd + '/source.10.*')
with open('settings.xml','w') as fh:
fh.write(settings2.format(source[0].split('.')[2]))
# if int(NoseMPI.mpi_np) > 0:
if False:
if int(NoseMPI.mpi_np) > 0:
proc = Popen([NoseMPI.mpi_exec, '-np', NoseMPI.mpi_np, openmc_path],
stderr=STDOUT, stdout=PIPE)
else:

View file

@ -1,7 +1,7 @@
<?xml version="1.0"?>
<settings>
<source_point batches="0" source_separate="true" overwrite_latest="true"/>
<source_point batches="0" separate="true" overwrite_latest="true"/>
<eigenvalue>
<batches>10</batches>

View file

@ -2,7 +2,7 @@
<settings>
<state_point batches="7 10" />
<source_point batches="7" source_separate="true" />
<source_point batches="7" separate="true" />
<eigenvalue>
<batches>10</batches>

View file

@ -2,7 +2,7 @@
<settings>
<state_point batches="10" />
<source_point source_separate="true" />
<source_point separate="true" />
<eigenvalue>
<batches>10</batches>