Commit graph

2091 commits

Author SHA1 Message Date
Paul Romano
7fe2055b43
Merge pull request #1339 from rockfool/white
White Boundary Condition Implementation
2019-09-18 13:21:53 -05:00
Paul Romano
8f2b0a01b6
Merge pull request #1332 from drewejohnson/depletion-example-notebook
Depletion example notebook
2019-09-18 13:21:34 -05:00
Paul Romano
3e12e363eb Make some fixes/edits in white boundary condition documentation 2019-09-18 09:39:59 -05:00
rockfool
747e87d31a bug fixed in geometry.rst 2019-09-17 16:34:11 -04:00
Andrew Johnson
72471d249f
Expand openmc.deplete documentation: minimal example and ABCs
Slight reformatting of the depletion documentation. The "Primary API"
is presented at the top, including integrators and the Operator.
This section is followed by a "Minimal Example" that demonstrates
how one might instantiate an Operator, and use it for depletion.
The comm communicator is moved into the "Internal Classes and Functions"
section, as the end-user is less likely to interact with this directly.
Lastly, a section on "Abstract Base Classes" is provided and expanded,
documenting the purpose of specific ABCs.
2019-09-17 14:56:31 -05:00
Andrew Johnson
2428702fb6
Improved documentation for depletion module
* __call__ methods for Operator documented
* CRAM16 and CRAM48 are closer to the top of the page
* Document deplete and timed_deplete functions
* Abstract integrators documented as part of abc submodule
* Abstract operator helpers documented as part of abc submodule
2019-09-17 13:38:23 -05:00
Andrew Johnson
17ded50443
Improve energy deposition methodology 2019-09-17 13:01:50 -05:00
rockfool
06ebf7dbad fix math equation in geometry.rst 2019-09-17 12:41:48 -04:00
rockfool
bfba0e6b1b Merge remote-tracking branch 'upstream/develop' into white 2019-09-17 11:30:58 -04:00
Andrew Johnson
016fc0e43e
Use energy deposition score for depletion
Introduce a new subclass of EnergyHelper, EnergyScoreHelper,
that computes the system energy using the energy-deposition score.
This energy is fed back to the Operator to normalize reaction rates.

The energy from the tally is only stored on the helper on the
MPI process 0 as to avoid scaling the system energy by the number
of processes. During the Operator unpacking, the energy reported
by each process is reduced, as the previous implementations took
fission reaction rates from the "local materials", e.g. the
materials each process is responsible for depleting.
The tally results are shared across all processes and only
contains a single quantity, the tallied energy deposition across
all materials.

This mode is controlled by passing the "energy_mode" argument passed
to the Operator. The two options are "fission-q" [default and previous
behavior] and "energy-deposition" [new features]. If energy_mode indicates using
the energy deposition score, the user-supplied fission-q dictionary is not used.

(cherry picked from commit d566f3080f)
2019-09-16 14:04:12 -05:00
Andrew Johnson
0c02e58b78
Documentation for modifications to total heating 2019-09-16 14:01:48 -05:00
rockfool
fbaa780731 remove the surface.py first 2019-09-16 14:03:05 -04:00
rockfool
781cb0eef7 documentation issues fixed 2019-09-16 13:46:51 -04:00
rockfool
4987f5aea0 modify geometry.rst 2019-09-16 13:36:18 -04:00
Paul Romano
348dd74dcc Merge branch 'develop' into local-photon-heating 2019-09-16 11:00:33 -05:00
Jiankai Yu
46367e8369 add more details in documentation of geometry 2019-09-15 16:57:07 -04:00
Jiankai Yu
849524d4dc add draft description to methodology on white boundary condition 2019-09-15 15:45:58 -04:00
Paul Romano
8a58028469 Mention openmc.capi -> openmc.lib name change in release notes 2019-09-13 10:38:30 -05:00
Paul Romano
bbb0b78383 Rename openmc.capi -> openmc.lib 2019-09-13 10:38:26 -05:00
Paul Romano
d84c379007 Fix up heating tally scores 2019-09-13 09:31:08 -05:00
Andrew Johnson
8ca0d35ad6
Add pincell depletion jupyter notebook
The basic structure is borrowed from examples/python/pincell_depletion/
and builds a single pin cell to be depleted. The model building is
expedited, as this assumes the user has read through the
basic user guide on model building. The new openmc.model.pin
function is highlighted, both for building a plain pin
and for subdividing regions for depletion.

The Chain and Operator classes are the focuses of the example,
and the PredictorIntegrator is used to deplete the pin out to
6 months using 30 day depletion steps with 174 W power.
The openmc-make-depletion-chain scripts are introduced as methods
for building initial depletion chains. Use of
openmc.data.DataLibrary.register_file is included, as this allows
the user to not pass the chain_file argument if the depletion chain
is included in OPENMC_CROSS_SECTIONS.

The jupyter notebook is included in the documentation similar
to other examples.
2019-09-05 16:50:17 -05:00
Andrew Johnson
269b3bf2d1
Update user's guide on depletion
Indicate class-based integration, and pull results from file
using `ResultsList.from_hdf5`
2019-09-05 16:50:16 -05:00
Paul Romano
cb73c87d9c Respond to comments on #1330 2019-09-05 16:30:42 -05:00
Paul Romano
5f7bf87631 Update release notes for 0.11.0 2019-09-05 06:50:22 -05:00
Paul Romano
33d7166aef Various fixes for building documentation (esp. latexpdf) 2019-09-04 10:35:55 -05:00
Andrew Johnson
93d68a24df
Merge branch 'develop' into chain-fission-yields 2019-08-21 17:32:14 -05:00
Paul Romano
a0bff1194f
Merge pull request #1314 from drewejohnson/chain-fixes
Provide validation for depletion chain
2019-08-21 08:15:10 -05:00
Andrew Johnson
37c871cbad
Add hyperlink to CASL depletion benchmark in scripts documentation
https://doi.org/10.2172/1256820
2019-08-19 10:08:15 -05:00
Andrew Johnson
aa86aa5262
Improve documentation for FissionYieldHelpers
Add a separate section in the documentation describing
the helpers.

Reword purpose of mat_indexes in generate_tallies
2019-08-15 09:18:56 -05:00
Andrew Johnson
454e6cc6b6
Add AveragedFissionYieldHelper operator helper
Computes the effective fission yields for nuclides
with multiple sets of yields by
1) Tallying fission rate and energy-weighted fission rate
2) Determining average energy at which fission events occur
3) Interpolating [lin-lin] between adjacent fission yields based
   on this average energy

Uses a second tally with an EnergyFunctionFilter to tally
E * sigma_f * phi.

Added unit tests with the proxy-style class that doesn't use the
C API to generate tallies but tests all other aspects of the
implementation. Tests cover three possible average energies
(below minimum supplied yield energy, above max supplied yield energy,
and between two)

The Operator uses fission_yield_mode="average" to select this helper.
The helper also has a from_operator class method.
2019-08-14 17:39:57 -05:00
Andrew Johnson
6b87ada752
Apply suggestions from code review
Co-Authored-By: Paul Romano <paul.k.romano@gmail.com>
2019-08-13 16:59:25 -05:00
Andrew Johnson
f82dc83473
Add FissionYieldCutoffHelper for weighting yields by a cutoff energy
This helper performs the following tasks to weight fission yields:
1) Determine a set of "fast" and "thermal" yields
based on a user specified cutoff energy,
2) Tally fission rates above and below the cutoff, and
3) Compute the effective yield by weighting the fast and
thermal yields by the fraction of fast and thermal fissions
for all nuclides in all burnable materials.

The user is allowed to specify the cutoff energy and energies
preferred for the fast and thermal yields. By default, the
cutoff is 112 eV, chosen as it is the logarithmic mean of
0.0253 eV and 500 keV. These two values are the default energies
for thermal and fast yields.

Tests are added to check for failure in constructing this
helper (thermal energy > cutoff, non-real values passed, etc.),
selection of yields given a range of user data, and
a proxy class that emulates a variety of thermal and fast splits
to check the eventual computed yield libraries.
2019-08-13 16:38:24 -05:00
Andrew Johnson
ca435b0bda
Add TalliedFissionYieldHelper abstract helper
Designed to be subclassed by helpers that aim to compute
effective fission yields with tallied data.
Constructs a tally in all burnable materials, scoring the
fission rate in all nuclides that have non-zero density
(as reported by the Operator) and have multiple sets of yields.
For nuclides with non-zero densities and a single set of
yields, those yields are assumed to be constant across incident
neutron energies.

The unpack method is now abstract, as each subclass should have
its own data layout, some with different energy structures
perhaps?? Maybe some weighting functions?
2019-08-13 16:20:55 -05:00
Andrew Johnson
d8b9f5db54
Add ConstantFissionYieldHelper concrete class
Given a requested energy, will take fission yields from that
energy on all nuclides and hold them as constant throughout
the simulation. If the requested energy is not found for a specific
nuclide, then the closest energy is used. The default is to
take the thermal 0.0253 eV yields.

This is now the helper attached to the Operator. The user can
select what energy of yields they would like to use.
2019-08-13 16:01:50 -05:00
Andrew Johnson
2cfbb21858
Provide abstract FissionYieldHelper class
API used by the Operator:
- generate_tallies
- weighted_yields [abstract]
- update_nuclides_from_operator
- unpack

generate_tallies and unpack are empty methods, provided
so that a consistent API can be found on helpers
with tallies.

Sorts nuclides into two dictionaries: those with a single
set of fission yields, and those with multiple sets.
The former can is exposed through the
constant_yields property, returning a copy of the fission
yield dictionary {parent: {product: yield}}

The Operator now looks for/uses the weighted_yields and
update_nuclides_from_operator methods instead of the old
compute_yields and set_fissionable_nuclides methods
2019-08-13 15:30:14 -05:00
Andrew Johnson
fab859982f
Document openmc.deplete.nuclide.FissionYield 2019-08-13 10:13:04 -05:00
Paul Romano
fc2c80628b Remove list of developers, update copyright year in a few places 2019-08-13 08:36:09 -05:00
Paul Romano
fe2a87e759 Add a few papers in publications list 2019-08-13 08:32:18 -05:00
Andrew Johnson
066885ddec
Document openmc-make-depletion-chain[-casl] scripts 2019-08-08 16:53:12 -05:00
Andrew Johnson
d10b83e064
Document FissionYieldDistribution
Pretty internal, but people may be curious
2019-08-08 08:59:45 -05:00
Paul Romano
21fd9a8a13
Merge pull request #1287 from drewejohnson/integrator-class
Class-based time integration for depletion
2019-08-07 13:18:14 -05:00
Andrew Johnson
0bc7800a92
Move openmc.deplete.integrator into openmc.deplete
Much of the previous API is intact, with the major change
being CRAM functions are imported from openmc.deplete.cram
in the test_deplete_cram.

The integrator abstract classes are placed in
openmc/deplete/abc.py with all concrete classes going in to
openmc/deplete/integrators.py

Documentation updated accordingly
2019-08-07 11:04:37 -05:00
Andrew Johnson
5adc3b5816
Document special and abstract methods for Integrators 2019-08-07 09:13:14 -05:00
Andrew Johnson
18c4d5f432
Document init parameters and attributes for Integrators 2019-08-07 09:01:43 -05:00
Andrew Johnson
1bd663daf6
Rename integrator classes to be PEP8 complaint
Changes:
- EPC_RK4_Integrator -> EPCRK4Integrator
- SI_Integrator -> SIIntegrator
- SI_CELI_Integrator -> SICELIIntegrator
- SI_LEQI_Integrator -> SICELIIntegrator
2019-08-07 08:55:40 -05:00
zxkjack123
f0727c654a fix a typo 2019-08-05 11:22:16 -05:00
Andrew Johnson
b9683dbdba
Merge branch 'develop' into integrator-class
Need new travis.yml to pass CI
2019-07-30 15:58:49 -05:00
Paul Romano
38a5f4a24f
Merge pull request #1302 from drewejohnson/reaction-rate-bug
Fix bug when reaction rate nuclides change through depletion
2019-07-30 09:09:33 -05:00
Andrew Johnson
62865b3a55
Documentation fixes for pin func, depletion helpers 2019-07-29 15:57:29 -05:00
Andrew Johnson
1f3e7fdac1
Remove si_leqi in favor of SI_LEQI_Integrator
The depletion function openmc.deplete.si_leqi has been
removed in favor of the SI_LEQI_Integrator class. The same
depletion scheme can be obtained with the following commands:

   >>> leqi = openmc.deplete.SI_LEQI_Integrator(operator, dt, power)
   >>> leqi.integrate()

The expression can be onlined for compactness.

The si_celi_inner function has been removed completely now,
as the SI_CELI iteration is performed by directly calling
SI_CELI_Integrator.__call__ through the SI_LEQI_Integrator.
This is similar to how the LEQIIntegrator handles the initial steps.

Tests have been updated to use this class, and the class has been
added to the documentation. No pure-function integration
schemes exist anymore.
2019-07-29 10:34:59 -05:00