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 : #pragma once 11 : 12 : #include "PolyatomicDisplacementFunctionBase.h" 13 : 14 : /** 15 : * Implements the computation of polyatomic displacement functions using Parkin & Coulter's 16 : * method, compare JNM 101, 1981. 17 : */ 18 1 : class PolyatomicDisplacementFunction : public PolyatomicDisplacementFunctionBase 19 : { 20 : public: 21 : /// default constructor 22 : PolyatomicDisplacementFunction(std::vector<MyTRIM_NS::Element> polyatomic_material, 23 : nrt_type damage_function_type, 24 : std::vector<std::vector<Real>> Ecap = {{}}); 25 : 26 : virtual std::vector<Real> getRHS(Real energy) override; 27 : 28 : /// computes term 1 in Parkin-Coulter expression nu_k(T - Eb) 29 : Real integralTypeI(Real energy, unsigned int i, unsigned int j, unsigned int k) const; 30 : 31 : /// computes terms 2 & 3 in Parkin-Coulter expression (nu_i(E-T) & nu_i(E) terms) 32 : Real integralTypeII(Real energy, unsigned int i, unsigned int j, unsigned int k) const; 33 : 34 : protected: 35 : /// is the total damage function computed 36 : bool _total_displacement_function; 37 : }; 38 : 39 : #endif // GSL_ENABLED