Line data Source code
1 : /**********************************************************************/ 2 : /* DO NOT MODIFY THIS HEADER */ 3 : /* MAGPIE - Mesoscale Atomistic Glue Program for Integrated Execution */ 4 : /* */ 5 : /* Copyright 2017 Battelle Energy Alliance, LLC */ 6 : /* ALL RIGHTS RESERVED */ 7 : /**********************************************************************/ 8 : #ifdef GSL_ENABLED 9 : 10 : #include "ParkinCoulterDPAUserObject.h" 11 : #include "PolyatomicRecoil.h" 12 : #include "PolyatomicDisplacementFunction.h" 13 : #include "PolyatomicDamageEnergyFunction.h" 14 : #include "PolyatomicDisplacementDerivativeFunction.h" 15 : #include "MooseMesh.h" 16 : 17 : // various other includes 18 : #include <mytrim/element.h> 19 : #include <limits> 20 : 21 : registerMooseObject("MagpieApp", ParkinCoulterDPAUserObject); 22 : 23 : InputParameters 24 8 : ParkinCoulterDPAUserObject::validParams() 25 : { 26 8 : InputParameters params = DPAUserObjectBase::validParams(); 27 8 : params += ParkinCoulterInterface::validParams(); 28 8 : params.addClassDescription( 29 : "Computes the dose in dpa from composition, cross section, damage type, and neutron flux for " 30 : "polyatomic materials using Parkin-Coulter's method."); 31 8 : return params; 32 0 : } 33 : 34 4 : ParkinCoulterDPAUserObject::ParkinCoulterDPAUserObject(const InputParameters & parameters) 35 4 : : DPAUserObjectBase(parameters), ParkinCoulterInterface(this) 36 : { 37 4 : } 38 : 39 : void 40 4 : ParkinCoulterDPAUserObject::initialSetup() 41 : { 42 4 : prepare(); 43 4 : } 44 : 45 : std::vector<unsigned int> 46 4 : ParkinCoulterDPAUserObject::atomicNumbers() const 47 : { 48 4 : return getAtomicNumbers(); 49 : } 50 : 51 : std::vector<Real> 52 4 : ParkinCoulterDPAUserObject::massNumbers() const 53 : { 54 4 : return getMassNumbers(); 55 : } 56 : 57 : std::vector<Real> 58 4 : ParkinCoulterDPAUserObject::numberFractions() const 59 : { 60 4 : return getNumberFractions(); 61 : } 62 : 63 : void 64 4 : ParkinCoulterDPAUserObject::initDamageFunctions() 65 : { 66 4 : _padf = std::make_unique<PolyatomicDisplacementFunction>(polyMat(), NET, _Ecap); 67 4 : } 68 : 69 : void 70 4 : ParkinCoulterDPAUserObject::execute() 71 : { 72 4 : accumulateDamage(); 73 4 : } 74 : 75 : void 76 4 : ParkinCoulterDPAUserObject::onCompositionChanged() 77 : { 78 4 : computeDamageFunctions(); 79 4 : _padf->computeDisplacementFunctionIntegral(); 80 4 : } 81 : 82 : Real 83 29760 : ParkinCoulterDPAUserObject::integralDamageFunction(Real T, unsigned int i, unsigned int j) const 84 : { 85 29760 : return _padf->linearInterpolationIntegralDamageFunction(T, i, j); 86 : } 87 : 88 : void 89 4 : ParkinCoulterDPAUserObject::finalize() 90 : { 91 4 : } 92 : 93 : #endif