/*!\file: TriaRef.h * \brief abstract class for handling Tria oriented routines, like nodal functions, * strain rate generation, etc ... */ #ifndef _TRIAREF_H_ #define _TRIAREF_H_ class GaussTria; class TriaRef{ public: int* element_type_list; //P1CG, P1DG, MINI, P2... int element_type; TriaRef(); TriaRef(const int nummodels); ~TriaRef(); /*Management*/ void SetElementType(int type,int type_counter); /*Numerics*/ void GetBMacAyeal(IssmDouble* B, IssmDouble* xyz_list, GaussTria* gauss); void GetBMacAyealStokes(IssmDouble* B , IssmDouble* xyz_list, GaussTria* gauss); void GetBprimeMacAyeal(IssmDouble* Bprime, IssmDouble* xyz_list, GaussTria* gauss); void GetBprimeMacAyealStokes(IssmDouble* Bprime, IssmDouble* xyz_list, GaussTria* gauss); void GetBprimePrognostic(IssmDouble* Bprime_prog, IssmDouble* xyz_list, GaussTria* gauss); void GetBPrognostic(IssmDouble* B_prog, IssmDouble* xyz_list, GaussTria* gauss); void GetL(IssmDouble* L, IssmDouble* xyz_list,GaussTria* gauss,int numdof); void GetJacobian(IssmDouble* J, IssmDouble* xyz_list,GaussTria* gauss); void GetSegmentJacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,GaussTria* gauss); void GetJacobianDeterminant2d(IssmDouble* Jdet, IssmDouble* xyz_list,GaussTria* gauss); void GetJacobianDeterminant3d(IssmDouble* Jdet, IssmDouble* xyz_list,GaussTria* gauss); void GetJacobianInvert(IssmDouble* Jinv, IssmDouble* xyz_list,GaussTria* gauss); void GetNodalFunctions(IssmDouble* l1l2l3,GaussTria* gauss); void GetSegmentNodalFunctions(IssmDouble* l1l2l3,GaussTria* gauss, int index1,int index2); void GetSegmentBFlux(IssmDouble* B,GaussTria* gauss, int index1,int index2); void GetSegmentBprimeFlux(IssmDouble* Bprime,GaussTria* gauss, int index1,int index2); void GetNodalFunctionsDerivatives(IssmDouble* l1l2l3,IssmDouble* xyz_list, GaussTria* gauss); void GetNodalFunctionsDerivativesReference(IssmDouble* dl1dl3,GaussTria* gauss); void GetInputValue(IssmDouble* pp, IssmDouble* plist, GaussTria* gauss); void GetInputDerivativeValue(IssmDouble* pp, IssmDouble* plist,IssmDouble* xyz_list, GaussTria* gauss); }; #endif