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 : #include "ComplexTypes.h" 10 : #include "MooseError.h" 11 : #include "MooseUtils.h" 12 : 13 : namespace MooseUtils 14 : { 15 : 16 : template <> 17 : bool 18 0 : absoluteFuzzyEqual(const std::complex<Real> & var1, 19 : const std::complex<Real> & var2, 20 : const std::complex<Real> & tol) 21 : { 22 0 : return (std::abs(var1 - var2) <= std::abs(tol)); 23 : } 24 : 25 : template <> 26 : bool 27 0 : absoluteFuzzyEqual(const std::complex<Real> & var1, 28 : const Real & var2, 29 : const std::complex<Real> & tol) 30 : { 31 0 : return (std::abs(var1 - var2) <= std::abs(tol)); 32 : } 33 : 34 : } // namespace MooseUtils 35 : 36 : #include "RankTwoTensorImplementation.h" 37 : #include "RankThreeTensorImplementation.h" 38 : #include "RankFourTensorImplementation.h" 39 : 40 : namespace libMesh 41 : { 42 : template class VectorValue<Complex>; 43 : } 44 : 45 : // This instantiation for complex variable simplifies logic and skips 46 : // checks on user's input validity. 47 : template <> 48 : void 49 0 : RankFourTensorTempl<Complex>::fillGeneralOrthotropicFromInputVector( 50 : const std::vector<Complex> & /*input*/) 51 : { 52 0 : mooseError("RankFourTensorTempl<>::fillGeneralOrthotropicFromInputVector is only to be " 53 : "used to fill elasticity tensors with real numbers"); 54 : } 55 : 56 : template class RankTwoTensorTempl<Complex>; 57 : template class RankThreeTensorTempl<Complex>; 58 : template class RankFourTensorTempl<Complex>; 59 : template RankTwoTensorTempl<Complex> 60 : RankFourTensorTempl<Complex>::operator*(const RankTwoTensorTempl<Complex> & a) const;