From 9c94b32a6e262c88473dd84cea727449de52e83e Mon Sep 17 00:00:00 2001 From: Sebastian Schunert Date: Thu, 9 Aug 2018 10:37:08 -0600 Subject: [PATCH] mass number matching (#300) --- include/userobjects/PKAGeneratorBase.h | 3 + src/userobjects/PKAFissionFragmentEmpirical.C | 1 + src/userobjects/PKAGeneratorBase.C | 40 +++---- .../gold/tagging_all_Xe_out.e | Bin 0 -> 36624 bytes tests/polyatomic_cascade/gold/tagging_out.e | Bin 0 -> 36532 bytes tests/polyatomic_cascade/tagging.i | 103 ++++++++++++++++++ tests/polyatomic_cascade/tests | 15 +++ 7 files changed, 142 insertions(+), 20 deletions(-) create mode 100644 tests/polyatomic_cascade/gold/tagging_all_Xe_out.e create mode 100644 tests/polyatomic_cascade/gold/tagging_out.e create mode 100644 tests/polyatomic_cascade/tagging.i diff --git a/include/userobjects/PKAGeneratorBase.h b/include/userobjects/PKAGeneratorBase.h index f1e156a0..5a2885a2 100644 --- a/include/userobjects/PKAGeneratorBase.h +++ b/include/userobjects/PKAGeneratorBase.h @@ -58,6 +58,9 @@ class PKAGeneratorBase : public DiscreteElementUserObject const std::vector & rasterizer_m, Real Z, Real m) const; + + /// tolerance for mass number matching during tagging + const Real _mass_number_tolerance; }; #endif // PKAGENERATORBASE_H diff --git a/src/userobjects/PKAFissionFragmentEmpirical.C b/src/userobjects/PKAFissionFragmentEmpirical.C index 456ac784..50a768bb 100644 --- a/src/userobjects/PKAFissionFragmentEmpirical.C +++ b/src/userobjects/PKAFissionFragmentEmpirical.C @@ -78,5 +78,6 @@ PKAFissionFragmentEmpirical::appendPKAs(std::vector & ion_li // add PKAs to list ion_list.push_back(ion1); ion_list.push_back(ion2); +std::cout << ion1._Z << " " << ion1._m << " " << ion1._tag << " : " << ion2._Z << " " << ion2._m << " " << ion2._tag << std::endl; } } diff --git a/src/userobjects/PKAGeneratorBase.C b/src/userobjects/PKAGeneratorBase.C index 0841e27d..45adceec 100644 --- a/src/userobjects/PKAGeneratorBase.C +++ b/src/userobjects/PKAGeneratorBase.C @@ -10,16 +10,22 @@ #include "MagpieUtils.h" #include -template<> -InputParameters validParams() +template <> +InputParameters +validParams() { InputParameters params = validParams(); - params.addClassDescription("PKA generator user object base class.\n Takes pdf and samples PKAs due to various interactions."); + params.addParam("mass_number_tolerance", + 0.5, + "Tolerance for matching mass numbers of recoils with rasterizer isotopes."); + params.addClassDescription("PKA generator user object base class.\n Takes pdf and samples PKAs " + "due to various interactions."); return params; } -PKAGeneratorBase::PKAGeneratorBase(const InputParameters & parameters) : - DiscreteElementUserObject(parameters) +PKAGeneratorBase::PKAGeneratorBase(const InputParameters & parameters) + : DiscreteElementUserObject(parameters), + _mass_number_tolerance(getParam("mass_number_tolerance")) { setRandomResetFrequency(EXEC_TIMESTEP_END); } @@ -31,22 +37,16 @@ PKAGeneratorBase::setPosition(MyTRIM_NS::IonBase & ion) const } int -PKAGeneratorBase::ionTag(const std::vector & rasterizer_Z, const std::vector & rasterizer_m, Real Z, Real m) const +PKAGeneratorBase::ionTag(const std::vector & rasterizer_Z, + const std::vector & rasterizer_m, + Real Z, + Real m) const { - // this function relies on the exact representation of whole numbers in IEEE floating point numbers - // up to a reasonable upper limit [Z < m < 300] - unsigned int count = std::count(rasterizer_Z.begin(), rasterizer_Z.end(), Z); - if (count == 1) - { - const auto & it = std::find(rasterizer_Z.begin(), rasterizer_Z.end(), Z); - mooseAssert(it != rasterizer_Z.end(), "Z position in rasterizer_Z was unexpectedly not found"); - unsigned int index = std::distance(rasterizer_Z.begin(), it); - return index; - } - else if (count > 1) - for (unsigned int j = 0; j < rasterizer_Z.size(); ++j) - if (rasterizer_Z[j] == Z && rasterizer_m[j] == m) - return j; + // this function relies on the exact representation of whole numbers in IEEE floating point + // numbers up to a reasonable upper limit [Z < m < 300] + for (unsigned int j = 0; j < rasterizer_Z.size(); ++j) + if (rasterizer_Z[j] == Z && std::abs(rasterizer_m[j] - m) < _mass_number_tolerance) + return j; return -1; } diff --git a/tests/polyatomic_cascade/gold/tagging_all_Xe_out.e b/tests/polyatomic_cascade/gold/tagging_all_Xe_out.e new file mode 100644 index 0000000000000000000000000000000000000000..177c0e008948ce0643adbd5d0fb2e1d1b4fa8207 GIT binary patch literal 36624 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 literal 0 HcmV?d00001 diff --git a/tests/polyatomic_cascade/gold/tagging_out.e b/tests/polyatomic_cascade/gold/tagging_out.e new file mode 100644 index 0000000000000000000000000000000000000000..67410076761924791ef4f4814728840734c917b9 GIT binary patch literal 36532 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