Skip to content

Commit

Permalink
Merge pull request idaholab#334 from dschwen/moveout_m_Z_333
Browse files Browse the repository at this point in the history
Remove mass and Z from average data, refactor ionTag()
  • Loading branch information
snschune authored Aug 13, 2018
2 parents 85dd169 + d791a47 commit 5097a53
Show file tree
Hide file tree
Showing 17 changed files with 320 additions and 185 deletions.
32 changes: 25 additions & 7 deletions include/userobjects/MyTRIMRasterizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include "ElementUserObject.h"

#include <map>
#include <array>
#include <vector>

#include "mytrim/ion.h"
Expand Down Expand Up @@ -57,17 +58,31 @@ class MyTRIMRasterizer : public ElementUserObject
/// element averaged data
struct AveragedData
{
AveragedData(unsigned int nvars = 0)
: _elements(nvars, 0.0), _Z(nvars, 0.0), _M(nvars, 0.0), _site_volume(0.0)
{
}
AveragedData(unsigned int nvars = 0) : _elements(nvars, 0.0), _site_volume(0.0) {}

std::vector<Real> _elements;
std::vector<Real> _Z;
std::vector<Real> _M;
Real _site_volume;
};

struct PKAParameters
{
/// masses charges (m_i, Z_i) of the matrix elements
std::vector<std::pair<Real, Real>> _mass_charge_pair;

/// how many isotopes to we have for each element and which index contains the
/// first Z match? (only support up to Z=119!)
std::array<std::pair<unsigned int, std::size_t>, 120> _index_Z;

/// time interval over which the PKAs are added
Real _dt;

/// recoil rate scaling
Real _recoil_rate_scaling;

/// current element volume
Real _volume;
};

enum TRIMModuleEnum
{
MYTRIM_CORE = 0,
Expand Down Expand Up @@ -141,6 +156,9 @@ class MyTRIMRasterizer : public ElementUserObject
/// Simulation parameters
TrimParameters _trim_parameters;

/// Global (non-spatial dependent) parameters required for PKA generation
PKAParameters _pka_parameters;

/// coupled variable values
std::vector<const VariableValue *> _var;

Expand All @@ -152,7 +170,7 @@ class MyTRIMRasterizer : public ElementUserObject
std::vector<const PKAGeneratorBase *> _pka_generators;
/// @}

/// @{ material map for the TRIM simulation
/// @{ material map for the TRIM simulation (spatial dependent)
typedef std::map<dof_id_type, AveragedData> MaterialMap;
MaterialMap _material_map;
/// @}
Expand Down
8 changes: 3 additions & 5 deletions include/userobjects/PKAEmpiricalBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,9 @@ class PKAEmpiricalBase : public PKAGeneratorBase
public:
PKAEmpiricalBase(const InputParameters & parameters);

virtual void appendPKAs(std::vector<MyTRIM_NS::IonBase> & ion_list,
Real dt,
Real vol,
Real recoil_rate_scaling,
const MyTRIMRasterizer::AveragedData & averaged_data) const;
virtual void appendPKAs(std::vector<MyTRIM_NS::IonBase> &,
const MyTRIMRasterizer::PKAParameters &,
const MyTRIMRasterizer::AveragedData &) const;

protected:
/// Fission rate (per unit volume)
Expand Down
8 changes: 3 additions & 5 deletions include/userobjects/PKAFissionFragmentEmpirical.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,9 @@ class PKAFissionFragmentEmpirical : public PKAGeneratorBase
public:
PKAFissionFragmentEmpirical(const InputParameters & parameters);

virtual void appendPKAs(std::vector<MyTRIM_NS::IonBase> & ion_list,
Real dt,
Real vol,
Real recoil_rate_scaling,
const MyTRIMRasterizer::AveragedData & averaged_data) const;
virtual void appendPKAs(std::vector<MyTRIM_NS::IonBase> &,
const MyTRIMRasterizer::PKAParameters &,
const MyTRIMRasterizer::AveragedData &) const;

protected:
/// Fission rate (per unit volume) assuming pure fully dense UO2
Expand Down
6 changes: 2 additions & 4 deletions include/userobjects/PKAFissionFragmentNeutronics.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,8 @@ class PKAFissionFragmentNeutronics : public PKAGeneratorNeutronicsBase
public:
PKAFissionFragmentNeutronics(const InputParameters & parameters);

virtual void appendPKAs(std::vector<MyTRIM_NS::IonBase> & ion_list,
Real dt,
Real vol,
Real recoil_rate_scaling,
virtual void appendPKAs(std::vector<MyTRIM_NS::IonBase> &,
const MyTRIMRasterizer::PKAParameters &,
const MyTRIMRasterizer::AveragedData &) const;

virtual void setPDF(const std::vector<unsigned int> & ZAID,
Expand Down
8 changes: 3 additions & 5 deletions include/userobjects/PKAFixedPointGenerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,9 @@ class PKAFixedPointGenerator : public PKAGeneratorBase
public:
PKAFixedPointGenerator(const InputParameters & parameters);

virtual void appendPKAs(std::vector<MyTRIM_NS::IonBase> & ion_list,
Real dt,
Real vol,
Real recoil_rate_scaling,
const MyTRIMRasterizer::AveragedData & averaged_data) const;
virtual void appendPKAs(std::vector<MyTRIM_NS::IonBase> &,
const MyTRIMRasterizer::PKAParameters &,
const MyTRIMRasterizer::AveragedData &) const;
virtual void meshChanged() { updateCachedElementID(); }

protected:
Expand Down
6 changes: 2 additions & 4 deletions include/userobjects/PKAGeneratorAlphaDecay.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,8 @@ class PKAGeneratorAlphaDecay : public PKAGeneratorBase
public:
PKAGeneratorAlphaDecay(const InputParameters & parameters);

virtual void appendPKAs(std::vector<MyTRIM_NS::IonBase> & ion_list,
Real dt,
Real vol,
Real recoil_rate_scaling,
virtual void appendPKAs(std::vector<MyTRIM_NS::IonBase> &,
const MyTRIMRasterizer::PKAParameters &,
const MyTRIMRasterizer::AveragedData &) const override;

/// this stores the decay information for a single alpha decaying nuclide
Expand Down
11 changes: 3 additions & 8 deletions include/userobjects/PKAGeneratorBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,8 @@ class PKAGeneratorBase : public DiscreteElementUserObject
* Append the ions for the current element and time window dt.
* The element volume is passed in as it is computed in the MyTRIMRasterizer anyways.
*/
virtual void appendPKAs(std::vector<MyTRIM_NS::IonBase> & ion_list,
Real dt,
Real vol,
Real recoil_rate_scaling,
virtual void appendPKAs(std::vector<MyTRIM_NS::IonBase> &,
const MyTRIMRasterizer::PKAParameters &,
const MyTRIMRasterizer::AveragedData &) const = 0;

virtual void initialize() {}
Expand All @@ -54,10 +52,7 @@ class PKAGeneratorBase : public DiscreteElementUserObject
}

/// finds the right ion tag; -1 means that the nuclide is not tracked, otherwise the index in the rasterizer nuclide vector must be retrieved
int ionTag(const std::vector<Real> & rasterizer_Z,
const std::vector<Real> & rasterizer_m,
Real Z,
Real m) const;
int ionTag(const MyTRIMRasterizer::PKAParameters &, Real Z, Real m) const;
};

#endif // PKAGENERATORBASE_H
6 changes: 2 additions & 4 deletions include/userobjects/PKAGeneratorRecoil.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,8 @@ class PKAGeneratorRecoil : public PKAGeneratorNeutronicsBase
public:
PKAGeneratorRecoil(const InputParameters & parameters);

virtual void appendPKAs(std::vector<MyTRIM_NS::IonBase> & ion_list,
Real dt,
Real vol,
Real recoil_rate_scaling,
virtual void appendPKAs(std::vector<MyTRIM_NS::IonBase> &,
const MyTRIMRasterizer::PKAParameters &,
const MyTRIMRasterizer::AveragedData &) const;

virtual void setPDF(const std::vector<unsigned int> & ZAID,
Expand Down
Loading

0 comments on commit 5097a53

Please sign in to comment.