Index: ../trunk-jpl/src/c/classes/Elements/Element.h =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Element.h (revision 18282) +++ ../trunk-jpl/src/c/classes/Elements/Element.h (revision 18283) @@ -171,6 +171,7 @@ virtual IssmDouble MinEdgeLength(IssmDouble* xyz_list)=0; virtual void NodalFunctions(IssmDouble* basis,Gauss* gauss)=0; virtual void NodalFunctionsP1(IssmDouble* basis,Gauss* gauss)=0; + virtual void NodalFunctionsP2(IssmDouble* basis,Gauss* gauss)=0; virtual void NodalFunctionsVelocity(IssmDouble* basis, Gauss* gauss)=0; virtual void NodalFunctionsPressure(IssmDouble* basis, Gauss* gauss)=0; virtual void NodalFunctionsTensor(IssmDouble* basis, Gauss* gauss)=0; @@ -193,6 +194,7 @@ virtual void GetSolutionFromInputsOneDof(Vector* solution,int solutionenum)=0; virtual int GetNodeIndex(Node* node)=0; virtual int GetNumberOfNodes(void)=0; + virtual int GetNumberOfNodes(int enum_type)=0; virtual int GetNumberOfVertices(void)=0; virtual bool IsNodeOnShelfFromFlags(IssmDouble* flags)=0; Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 18282) +++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 18283) @@ -886,6 +886,10 @@ else return 0; } /*}}}*/ +int Tria::GetNumberOfNodes(int enum_type){/*{{{*/ + return this->NumberofNodes(enum_type); +} +/*}}}*/ int Tria::GetNumberOfVertices(void){/*{{{*/ return NUMVERTICES; } @@ -1446,6 +1450,13 @@ } /*}}}*/ +void Tria::NodalFunctionsP2(IssmDouble* basis, Gauss* gauss){/*{{{*/ + + _assert_(gauss->Enum()==GaussTriaEnum); + this->GetNodalFunctions(basis,(GaussTria*)gauss,P2Enum); + +} +/*}}}*/ void Tria::NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/ _assert_(gauss->Enum()==GaussTriaEnum); Index: ../trunk-jpl/src/c/classes/Elements/Tria.h =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Tria.h (revision 18282) +++ ../trunk-jpl/src/c/classes/Elements/Tria.h (revision 18283) @@ -68,6 +68,7 @@ IssmDouble GetGroundedPortion(IssmDouble* xyz_list); int GetNodeIndex(Node* node); int GetNumberOfNodes(void); + int GetNumberOfNodes(int enum_type); int GetNumberOfVertices(void); bool IsOnBase(); bool IsOnSurface(); @@ -164,6 +165,7 @@ Gauss* NewGaussTop(int order); void NodalFunctions(IssmDouble* basis,Gauss* gauss); void NodalFunctionsP1(IssmDouble* basis,Gauss* gauss); + void NodalFunctionsP2(IssmDouble* basis,Gauss* gauss); void NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); void NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); void NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");}; Index: ../trunk-jpl/src/c/classes/Elements/Penta.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Penta.cpp (revision 18282) +++ ../trunk-jpl/src/c/classes/Elements/Penta.cpp (revision 18283) @@ -853,6 +853,10 @@ return this->NumberofNodes(this->element_type); } /*}}}*/ +int Penta::GetNumberOfNodes(int enum_type){/*{{{*/ + return this->NumberofNodes(enum_type); +} +/*}}}*/ int Penta::GetNumberOfVertices(void){/*{{{*/ return NUMVERTICES; } @@ -1627,6 +1631,13 @@ } /*}}}*/ +void Penta::NodalFunctionsP2(IssmDouble* basis, Gauss* gauss){/*{{{*/ + + _assert_(gauss->Enum()==GaussPentaEnum); + this->GetNodalFunctions(basis,(GaussPenta*)gauss,P2Enum); + +} +/*}}}*/ void Penta::NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/ _assert_(gauss->Enum()==GaussPentaEnum); Index: ../trunk-jpl/src/c/classes/Elements/Penta.h =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Penta.h (revision 18282) +++ ../trunk-jpl/src/c/classes/Elements/Penta.h (revision 18283) @@ -73,6 +73,7 @@ IssmDouble GetGroundedPortion(IssmDouble* xyz_list); int GetNodeIndex(Node* node); int GetNumberOfNodes(void); + int GetNumberOfNodes(int enum_type); int GetNumberOfVertices(void); void GetSolutionFromInputsOneDof(Vector* solution,int enum_type); void GetVerticesCoordinatesBase(IssmDouble** pxyz_list); @@ -162,6 +163,7 @@ Gauss* NewGaussTop(int order); void NodalFunctions(IssmDouble* basis,Gauss* gauss); void NodalFunctionsP1(IssmDouble* basis,Gauss* gauss); + void NodalFunctionsP2(IssmDouble* basis,Gauss* gauss); void NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); void NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); void NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); Index: ../trunk-jpl/src/c/classes/Elements/Seg.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Seg.cpp (revision 18282) +++ ../trunk-jpl/src/c/classes/Elements/Seg.cpp (revision 18283) @@ -108,6 +108,13 @@ } /*}}}*/ +void Seg::NodalFunctionsP2(IssmDouble* basis, Gauss* gauss){/*{{{*/ + + _assert_(gauss->Enum()==GaussSegEnum); + this->GetNodalFunctions(basis,(GaussSeg*)gauss,P2Enum); + +} +/*}}}*/ int Seg::GetNumberOfNodes(void){/*{{{*/ return this->NumberofNodes(this->element_type); } Index: ../trunk-jpl/src/c/classes/Elements/Seg.h =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Seg.h (revision 18282) +++ ../trunk-jpl/src/c/classes/Elements/Seg.h (revision 18283) @@ -67,6 +67,7 @@ Element* GetBasalElement(void){_error_("not implemented yet");}; int GetNodeIndex(Node* node){_error_("not implemented yet");}; int GetNumberOfNodes(void); + int GetNumberOfNodes(int enum_type){_error_("not implemented yet");}; int GetNumberOfVertices(void); void GetVerticesCoordinates(IssmDouble** pxyz_list); void GetVerticesCoordinatesBase(IssmDouble** pxyz_list){_error_("not implemented yet");}; @@ -82,6 +83,7 @@ IssmDouble MinEdgeLength(IssmDouble* xyz_list){_error_("not implemented yet");}; void NodalFunctions(IssmDouble* basis,Gauss* gauss); void NodalFunctionsP1(IssmDouble* basis,Gauss* gauss); + void NodalFunctionsP2(IssmDouble* basis,Gauss* gauss); void NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");}; void NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");}; void NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");}; Index: ../trunk-jpl/src/c/classes/Elements/Tetra.h =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Tetra.h (revision 18282) +++ ../trunk-jpl/src/c/classes/Elements/Tetra.h (revision 18283) @@ -70,6 +70,7 @@ Element* GetBasalElement(void){_error_("not implemented yet");}; int GetNodeIndex(Node* node); int GetNumberOfNodes(void); + int GetNumberOfNodes(int enum_type){_error_("not implemented yet");}; int GetNumberOfVertices(void); void GetVerticesCoordinatesBase(IssmDouble** pxyz_list); void GetVerticesCoordinatesTop(IssmDouble** pxyz_list); @@ -86,6 +87,7 @@ IssmDouble MinEdgeLength(IssmDouble* xyz_list){_error_("not implemented yet");}; void NodalFunctions(IssmDouble* basis,Gauss* gauss); void NodalFunctionsP1(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");}; + void NodalFunctionsP2(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");}; void NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss); void NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss); void NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss);