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 : 9 : #ifdef GSL_ENABLED 10 : 11 : #pragma once 12 : 13 : #include "DPAUserObjectBase.h" 14 : #include "LinearInterpolation.h" 15 : 16 : class FunctionDPAUserObject : public DPAUserObjectBase 17 : { 18 : public: 19 : static InputParameters validParams(); 20 : 21 : FunctionDPAUserObject(const InputParameters & parameters); 22 : void finalize() override; 23 : void execute() override; 24 : void initialSetup() override; 25 12 : void initialize() override {} 26 : 27 : protected: 28 : virtual Real integralDamageFunction(Real T, unsigned int i, unsigned int j) const override; 29 : virtual void onCompositionChanged() override; 30 : 31 : /// the maximum energy step size used for interpolation and integration of integral damage function 32 : Real _max_delta_E; 33 : 34 : /// the damage functions are provided by MOOSE functions 35 : std::vector<std::vector<const Function *>> _damage_functions; 36 : 37 : /// stores the integral damage functions computed from input as LinearInterpolation objects 38 : std::vector<std::vector<LinearInterpolation>> _integral_damage_functions; 39 : }; 40 : 41 : #endif