Cardinal
OpenMCVolumeCalculation.h
Go to the documentation of this file.
1 /********************************************************************/
2 /* SOFTWARE COPYRIGHT NOTIFICATION */
3 /* Cardinal */
4 /* */
5 /* (c) 2021 UChicago Argonne, LLC */
6 /* ALL RIGHTS RESERVED */
7 /* */
8 /* Prepared by UChicago Argonne, LLC */
9 /* Under Contract No. DE-AC02-06CH11357 */
10 /* With the U. S. Department of Energy */
11 /* */
12 /* Prepared by Battelle Energy Alliance, LLC */
13 /* Under Contract No. DE-AC07-05ID14517 */
14 /* With the U. S. Department of Energy */
15 /* */
16 /* See LICENSE for full restrictions */
17 /********************************************************************/
18 
19 #pragma once
20 
21 #include "GeneralUserObject.h"
22 
23 #include "OpenMCBase.h"
24 #include "openmc/volume_calc.h"
25 
30 class OpenMCVolumeCalculation : public GeneralUserObject, public OpenMCBase
31 {
32 public:
33  static InputParameters validParams();
34 
35  OpenMCVolumeCalculation(const InputParameters & parameters);
36 
37  virtual void initialize() {}
38  virtual void finalize() {}
39  virtual void execute() {}
40 
42  virtual void initializeVolumeCalculation();
43 
45  virtual void computeVolumes();
46 
48  virtual void resetVolumeCalculation();
49 
55  openmc::Position position(const Point & pt) const;
56 
63  void cellVolume(const unsigned int & index, Real & vol, Real & std_dev) const;
64 
65 protected:
67  const unsigned int & _n_samples;
68 
70  const MooseEnum _trigger;
71 
74 
76  Real _scaling;
77 
79  Point _lower_left;
80 
82  Point _upper_right;
83 
85  std::unique_ptr<openmc::VolumeCalculation> _volume_calc;
86 
88  std::vector<openmc::VolumeCalculation::Result> _results;
89 
91  std::map<int, int> _index_to_calc_index;
92 
94  unsigned int _calc_index;
95 };
std::vector< openmc::VolumeCalculation::Result > _results
Results of the volume calculation.
Definition: OpenMCVolumeCalculation.h:88
Real _trigger_threshold
Threshold for terminating the trigger.
Definition: OpenMCVolumeCalculation.h:73
Real _scaling
Length multiplier applied to [Mesh] to get into OpenMC centimeters.
Definition: OpenMCVolumeCalculation.h:76
const MooseEnum _trigger
Trigger for deciding when to terminate the stochastic volume calculation.
Definition: OpenMCVolumeCalculation.h:70
Definition: OpenMCBase.h:30
virtual void resetVolumeCalculation()
Erase previously-added volume calculation.
const unsigned int & _n_samples
Number of stochastic samples for calculation.
Definition: OpenMCVolumeCalculation.h:67
unsigned int _calc_index
Index of volume calculation we add in OpenMC.
Definition: OpenMCVolumeCalculation.h:94
Definition: CardinalEnums.h:192
openmc::Position position(const Point &pt) const
static InputParameters validParams()
OpenMCVolumeCalculation(const InputParameters &parameters)
Definition: OpenMCVolumeCalculation.h:30
virtual void initialize()
Definition: OpenMCVolumeCalculation.h:37
Point _upper_right
Upper right of the box within which to compute OpenMC volumes.
Definition: OpenMCVolumeCalculation.h:82
virtual void execute()
Definition: OpenMCVolumeCalculation.h:39
std::unique_ptr< openmc::VolumeCalculation > _volume_calc
Volume calculation object.
Definition: OpenMCVolumeCalculation.h:85
virtual void initializeVolumeCalculation()
Initialize the volume calculation (not in initialize() because we want to control this from the Probl...
virtual void computeVolumes()
Compute the cell volumes.
Point _lower_left
Lower left of the box within which to compute OpenMC volumes.
Definition: OpenMCVolumeCalculation.h:79
virtual void finalize()
Definition: OpenMCVolumeCalculation.h:38
void cellVolume(const unsigned int &index, Real &vol, Real &std_dev) const
std::map< int, int > _index_to_calc_index
Map from cell index to its volume calculation result.
Definition: OpenMCVolumeCalculation.h:91