Ice Sheet System Model  4.18
Code documentation
Tetra.h
Go to the documentation of this file.
1 
5 #ifndef _TETRA_H_
6 #define _TETRA_H_
7 
8 /*Headers:*/
9 /*{{{*/
10 #include "./Element.h"
11 #include "./ElementHook.h"
12 #include "./TetraRef.h"
13 class Parameters;
14 class Inputs;
15 class IoModel;
16 class Results;
17 class Node;
18 class Material;
19 class ElementMatrix;
20 class ElementVector;
21 class Vertex;
22 
23 #include "../../shared/Exceptions/exceptions.h"
24 #include "../../shared/Enum/Enum.h"
25 /*}}}*/
26 
27 class Tetra: public Element,public ElementHook,public TetraRef{
28 
29  public:
30 
31  /*Tetra constructors, destructors {{{*/
32  Tetra(){};
33  Tetra(int tet_id,int tet_sid,int tet_lid,IoModel* iomodel,int nummodels);
34  ~Tetra();
35  /*}}}*/
36  /*Object virtual functions definitions:{{{ */
37  Object *copy();
38  void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
39  int ObjectEnum();
40  /*}}}*/
41  /*Element virtual functions definitions: {{{*/
42  void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part){_error_("not implemented yet");};
43  void CalvingRateLevermann(void){_error_("not implemented yet");};
44  IssmDouble CharacteristicLength(void){_error_("not implemented yet");};
45  void ComputeSigmaNN(){_error_("not implemented yet");};
46  void ComputeStressTensor(){_error_("not implemented yet");};
47  void ComputeDeviatoricStressTensor(){_error_("not implemented yet");};
48  void ComputeEsaStrainAndVorticity(){_error_("not implemented yet!");};
49  void Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters,Inputs2* inputs2in);
50  void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index,int offset,int N,int M){_error_("not implemented yet");};
51  void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){_error_("not implemented yet");};
52  void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum){_error_("not implemented yet");};
53  IssmDouble DragCoefficientAbsGradient(void){_error_("not implemented yet");};
54  void ElementResponse(IssmDouble* presponse,int response_enum){_error_("not implemented yet");};
55  void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz);
56  void FaceOnBaseIndices(int* pindex1,int* pindex2,int* pindex3);
57  void FaceOnFrontIndices(int* pindex1,int* pindex2,int* pindex3);
58  void FaceOnSurfaceIndices(int* pindex1,int* pindex2,int* pindex3);
59  int FiniteElement(void);
60  IssmDouble FloatingArea(bool scaled){_error_("not implemented yet");};
61  void FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){_error_("not implemented yet");};
62  IssmDouble GetArea3D(void){_error_("not implemented yet!");};
63  IssmDouble GetAreaSpherical(void){_error_("not implemented yet!");};
64  Element* GetBasalElement(void){_error_("not implemented yet");};
65  int GetElementType(void);
66  void GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating){_error_("not implemented yet");};
67  IssmDouble GetGroundedPortion(IssmDouble* xyz_list){_error_("not implemented yet");};
68  void GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented yet");};
69  Input2* GetInput2(int enumtype);
70  Input2* GetInput2(int enumtype,IssmDouble time);
71  Input2* GetInput2(int inputenum,IssmDouble start_time,IssmDouble end_time,int averaging_method){_error_("not implemented yet!");};
72  void GetInputListOnVertices(IssmDouble* pvalue,Input2* input,IssmDouble default_value);
73  void GetInputListOnNodes(IssmDouble* pvalue,Input2* input,IssmDouble default_value);
74  void GetInputValue(IssmDouble* pvalue,Node* node,int enumtype);
75  void GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level){_error_("not implemented yet");};
76  void GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues){_error_("not implemented yet");};
77  int GetNumberOfNodes(void);
78  int GetNumberOfNodes(int enum_type){_error_("not implemented yet");};
79  int GetNumberOfVertices(void);
80  void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,int offset){_error_("not implemented yet");};
81  void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data){_error_("not implemented yet");};
82  void GetVerticesCoordinatesBase(IssmDouble** pxyz_list);
83  void GetVerticesCoordinatesTop(IssmDouble** pxyz_list);
84  void GradientIndexing(int* indexing,int control_index){_error_("not implemented yet");};
85  IssmDouble GroundedArea(bool scaled){_error_("not implemented yet");};
86  bool HasFaceOnBase();
87  bool HasFaceOnSurface();
88  IssmDouble IceVolume(bool scaled){_error_("not implemented yet");};
89  IssmDouble IceVolumeAboveFloatation(bool scaled){_error_("not implemented yet");};
90  bool IsFaceOnBoundary(void){_error_("not implemented yet");};
91  bool IsIcefront(void);
92  bool IsNodeOnShelfFromFlags(IssmDouble* flags){_error_("not implemented yet");};
93  bool IsZeroLevelset(int levelset_enum){_error_("not implemented");};
94  void InputDepthAverageAtBase(int enum_type,int average_enum_type){_error_("not implemented yet");};
95  void InputExtrude(int enum_type,int start){_error_("not implemented"); /*For penta only*/};
96  void InputUpdateFromIoModel(int index, IoModel* iomodel);
97  void InputUpdateFromSolutionOneDof(IssmDouble* solution,int inputenum);
98  void InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solution,int inputenum){_error_("not implemented yet");};
99  void InputUpdateFromVector(IssmDouble* vector, int name, int type){_error_("not implemented yet");};
100  void JacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss);
101  void JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
102  void JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
103  void JacobianDeterminantSurface(IssmDouble* pJdet, IssmDouble* xyz_list,Gauss* gauss);
104  void JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
105  IssmDouble Masscon(IssmDouble* levelset){_error_("not implemented yet");};
106  IssmDouble MassFlux(IssmDouble* segment){_error_("not implemented yet");};
107  IssmDouble MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id){_error_("not implemented yet");}
108  void MaterialUpdateFromTemperature(void){_error_("not implemented yet");};
109  IssmDouble MinEdgeLength(IssmDouble* xyz_list){_error_("not implemented yet");};
110  IssmDouble Misfit(int modelenum,int observationenum,int weightsenum){_error_("not implemented yet");};
111  IssmDouble MisfitArea(int weightsenum){_error_("not implemented yet");};
112  Gauss* NewGauss(void);
113  Gauss* NewGauss(int order);
114  Gauss* NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order){_error_("not implemented yet");};
115  Gauss* NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert);
116  Gauss* NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order){_error_("not implemented yet");};
117  Gauss* NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,int order){_error_("not implemented yet");};
118  Gauss* NewGaussBase(int order);
119  Gauss* NewGaussLine(int vertex1,int vertex2,int order){_error_("not implemented yet");};
120  Gauss* NewGaussTop(int order);
121  void NodalFunctions(IssmDouble* basis,Gauss* gauss);
122  void NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
123  void NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
124  void NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
125  void NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss);
126  void NodalFunctionsP1(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
127  void NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
128  void NodalFunctionsP2(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");};
129  void NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss);
130  void NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss);
131  int NodalValue(IssmDouble* pvalue, int index, int natureofdataenum){_error_("not implemented yet");};
132  void NormalBase(IssmDouble* normal,IssmDouble* xyz_list);
133  void NormalSection(IssmDouble* normal,IssmDouble* xyz_list);
134  void NormalTop(IssmDouble* normal,IssmDouble* xyz_list);
135  int NumberofNodesPressure(void);
136  int NumberofNodesVelocity(void);
137  void PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding){_error_("not implemented yet");};
138  int PressureInterpolation(void);
140  void ResetHooks();
142  void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index,int offset,int N, int M){_error_("not implemented yet");};
143  void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index){_error_("not implemented yet");};
144  void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters);
145  void SetTemporaryElementType(int element_type_in){_error_("not implemented yet");};
146  Element* SpawnBasalElement(void);
147  Element* SpawnTopElement(void);
148  Tria* SpawnTria(int index1,int index2,int index3);
149  IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){_error_("not implemented yet");};
150  void StabilizationParameterAnisotropic(IssmDouble* tau_parameter_anisotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy, IssmDouble hz, IssmDouble kappa){_error_("not implemented yet");};
151  void StrainRateparallel(void){_error_("not implemented yet");};
152  void StrainRateperpendicular(void){_error_("not implemented yet");};
153  void StressIntensityFactor(void){_error_("not implemented yet");};
154  IssmDouble SurfaceArea(void){_error_("not implemented yet");};
155  int TensorInterpolation(void);
156  IssmDouble TimeAdapt(){_error_("not implemented yet");};
157  IssmDouble TotalFloatingBmb(bool scaled){_error_("not implemented yet");};
158  IssmDouble TotalGroundedBmb(bool scaled){_error_("not implemented yet");};
159  IssmDouble TotalSmb(bool scaled){_error_("not implemented yet");};
160  void Update(Inputs2* inputs2,int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
161  void UpdateConstraintsExtrudeFromBase(){_error_("not implemented");};
162  void UpdateConstraintsExtrudeFromTop(){_error_("not implemented");};
163  int UpdatePotentialUngrounding(IssmDouble* vertices_potentially_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf){_error_("not implemented yet");};
164  void ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
165  void ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss);
166  int VelocityInterpolation(void);
167  int VertexConnectivity(int vertexindex){_error_("not implemented yet");};
168  void VerticalSegmentIndices(int** pindices,int* pnumseg){_error_("not implemented yet");};
169  void VerticalSegmentIndicesBase(int** pindices,int* pnumseg){_error_("not implemented yet");};
170  void ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input2* vx_input,Input2* vy_input,Input2* vz_input);
171 
172 #ifdef _HAVE_GIA_
173  void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){_error_("not implemented yet");};
174 #endif
175 #ifdef _HAVE_ESA_
176  void EsaGeodetic2D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,Vector<IssmDouble>* pX,Vector<IssmDouble>* pY,IssmDouble* xx,IssmDouble* yy){_error_("not implemented yet!");};
177  void EsaGeodetic3D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz){_error_("not implemented yet!");};
178 #endif
179 #ifdef _HAVE_SEALEVELRISE_
180  void SetSealevelMasks(SealevelMasks* masks){_error_("not implemented yet!");};
181  void SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};
182  void SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");};
183  void SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks,IssmDouble oceanarea){_error_("not implemented yet!");};
184  void SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};
185  void SealevelriseGeodetic(IssmDouble* Up ,IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");};
186  IssmDouble OceanAverage(IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");};
187 #endif
188 
189 #ifdef _HAVE_DAKOTA_
190  void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){_error_("not implemented yet");};
191  void InputUpdateFromMatrixDakota(IssmDouble* matrix, int nows, int ncols, int name, int type){_error_("not implemented yet");};
192 #endif
193  /*}}}*/
194 };
195 #endif /* _TETRA_H_*/
Tetra::HasFaceOnBase
bool HasFaceOnBase()
Definition: Tetra.cpp:359
Tetra::TotalFloatingBmb
IssmDouble TotalFloatingBmb(bool scaled)
Definition: Tetra.h:157
Tetra::SpawnTria
Tria * SpawnTria(int index1, int index2, int index3)
Definition: Tetra.cpp:787
Vertices
Declaration of Vertices class.
Definition: Vertices.h:15
Tetra::GetGroundedPortion
IssmDouble GetGroundedPortion(IssmDouble *xyz_list)
Definition: Tetra.h:67
Tetra::HasFaceOnSurface
bool HasFaceOnSurface()
Definition: Tetra.cpp:378
IssmDouble
double IssmDouble
Definition: types.h:37
Nodes
Declaration of Nodes class.
Definition: Nodes.h:19
Tetra::PressureInterpolation
int PressureInterpolation(void)
Definition: Tetra.cpp:643
Tetra::ElementResponse
void ElementResponse(IssmDouble *presponse, int response_enum)
Definition: Tetra.h:54
Tetra::NewGauss
Gauss * NewGauss(int point1, IssmDouble fraction1, IssmDouble fraction2, bool mainlyfloating, int order)
Definition: Tetra.h:116
Tetra::ComputeStressTensor
void ComputeStressTensor()
Definition: Tetra.h:46
Tetra::StabilizationParameterAnisotropic
void StabilizationParameterAnisotropic(IssmDouble *tau_parameter_anisotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy, IssmDouble hz, IssmDouble kappa)
Definition: Tetra.h:150
Tetra::Tetra
Tetra()
Definition: Tetra.h:32
Tetra::NodalFunctions
void NodalFunctions(IssmDouble *basis, Gauss *gauss)
Definition: Tetra.cpp:522
TetraRef.h
abstract class for handling Tetra oriented routines, like nodal functions, strain rate generation,...
Parameters
Declaration of Parameters class.
Definition: Parameters.h:18
Tetra::JacobianDeterminantBase
void JacobianDeterminantBase(IssmDouble *pJdet, IssmDouble *xyz_list_base, Gauss *gauss)
Definition: Tetra.cpp:472
Tetra::MaterialUpdateFromTemperature
void MaterialUpdateFromTemperature(void)
Definition: Tetra.h:108
Tetra::IsZeroLevelset
bool IsZeroLevelset(int levelset_enum)
Definition: Tetra.h:93
Tetra::ResetFSBasalBoundaryCondition
void ResetFSBasalBoundaryCondition(void)
Definition: Tetra.cpp:682
Tetra::GetArea3D
IssmDouble GetArea3D(void)
Definition: Tetra.h:62
Tetra::NodalFunctionsDerivatives
void NodalFunctionsDerivatives(IssmDouble *dbasis, IssmDouble *xyz_list, Gauss *gauss)
Definition: Tetra.cpp:529
TetraRef
Definition: TetraRef.h:12
Elements
Declaration of Elements class.
Definition: Elements.h:17
Tetra::VertexConnectivity
int VertexConnectivity(int vertexindex)
Definition: Tetra.h:167
Tetra::NodalFunctionsP1
void NodalFunctionsP1(IssmDouble *basis, Gauss *gauss)
Definition: Tetra.h:126
Tetra::PotentialUngrounding
void PotentialUngrounding(Vector< IssmDouble > *potential_sheet_ungrounding)
Definition: Tetra.h:137
Tetra::NewGauss
Gauss * NewGauss(IssmDouble *xyz_list, IssmDouble *xyz_list_front, int order)
Definition: Tetra.h:114
Material
Definition: Material.h:21
Tetra::VerticalSegmentIndicesBase
void VerticalSegmentIndicesBase(int **pindices, int *pnumseg)
Definition: Tetra.h:169
Tetra::IceVolume
IssmDouble IceVolume(bool scaled)
Definition: Tetra.h:88
Tetra::InputUpdateFromSolutionOneDof
void InputUpdateFromSolutionOneDof(IssmDouble *solution, int inputenum)
Definition: Tetra.cpp:424
Tetra::NumberofNodesPressure
int NumberofNodesPressure(void)
Definition: Tetra.cpp:630
Tetra::ComputeSigmaNN
void ComputeSigmaNN()
Definition: Tetra.h:45
Tetra::JacobianDeterminant
void JacobianDeterminant(IssmDouble *Jdet, IssmDouble *xyz_list, Gauss *gauss)
Definition: Tetra.cpp:465
Tetra::Masscon
IssmDouble Masscon(IssmDouble *levelset)
Definition: Tetra.h:105
Tetra::NodalFunctionsTensor
void NodalFunctionsTensor(IssmDouble *basis, Gauss *gauss)
Definition: Tetra.cpp:550
Tetra::InputUpdateFromSolutionOneDofCollapsed
void InputUpdateFromSolutionOneDofCollapsed(IssmDouble *solution, int inputenum)
Definition: Tetra.h:98
Tetra::JacobianDeterminantLine
void JacobianDeterminantLine(IssmDouble *Jdet, IssmDouble *xyz_list, Gauss *gauss)
Definition: Tetra.h:102
Tetra::Marshall
void Marshall(char **pmarshalled_data, int *pmarshalled_data_size, int marshall_direction)
Definition: Tetra.cpp:120
Tetra::GetInput2
Input2 * GetInput2(int enumtype)
Definition: Tetra.cpp:259
Tetra::IsFaceOnBoundary
bool IsFaceOnBoundary(void)
Definition: Tetra.h:90
ElementHook
Definition: ElementHook.h:11
Tetra::StabilizationParameter
IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa)
Definition: Tetra.h:149
Tetra::FiniteElement
int FiniteElement(void)
Definition: Tetra.cpp:250
Tetra::GetInputListOnVertices
void GetInputListOnVertices(IssmDouble *pvalue, Input2 *input, IssmDouble default_value)
Definition: Tetra.cpp:265
Tetra::StrainRateparallel
void StrainRateparallel(void)
Definition: Tetra.h:151
Tetra::NewGauss
Gauss * NewGauss(void)
Definition: Tetra.cpp:493
Tetra::InputUpdateFromVector
void InputUpdateFromVector(IssmDouble *vector, int name, int type)
Definition: Tetra.h:99
Tetra::InputUpdateFromIoModel
void InputUpdateFromIoModel(int index, IoModel *iomodel)
Definition: Tetra.cpp:397
Tetra::GetNumberOfNodes
int GetNumberOfNodes(void)
Definition: Tetra.cpp:317
Tetra::SetControlInputsFromVector
void SetControlInputsFromVector(IssmDouble *vector, int control_enum, int control_index, int offset, int N, int M)
Definition: Tetra.h:142
Element::nodes
Node ** nodes
Definition: Element.h:48
Element
Definition: Element.h:41
Tetra::NormalSection
void NormalSection(IssmDouble *normal, IssmDouble *xyz_list)
Definition: Tetra.cpp:588
Tetra::ControlInputSetGradient
void ControlInputSetGradient(IssmDouble *gradient, int enum_type, int control_index)
Definition: Tetra.h:51
Element.h
abstract class for Element object This class is a place holder for the Tria and the Penta elements....
Tetra::NodalValue
int NodalValue(IssmDouble *pvalue, int index, int natureofdataenum)
Definition: Tetra.h:131
Tetra::DragCoefficientAbsGradient
IssmDouble DragCoefficientAbsGradient(void)
Definition: Tetra.h:53
Object
Definition: Object.h:13
Tetra
Definition: Tetra.h:27
Tetra::NewGaussLine
Gauss * NewGaussLine(int vertex1, int vertex2, int order)
Definition: Tetra.h:119
Element::inputs2
Inputs2 * inputs2
Definition: Element.h:47
Materials
Declaration of Materials class.
Definition: Materials.h:16
Tetra::IceVolumeAboveFloatation
IssmDouble IceVolumeAboveFloatation(bool scaled)
Definition: Tetra.h:89
Tetra::ComputeEsaStrainAndVorticity
void ComputeEsaStrainAndVorticity()
Definition: Tetra.h:48
Tetra::NewGauss
Gauss * NewGauss(int point1, IssmDouble fraction1, IssmDouble fraction2, int order)
Definition: Tetra.h:117
Tetra::NewGaussBase
Gauss * NewGaussBase(int order)
Definition: Tetra.cpp:508
Tetra::IsIcefront
bool IsIcefront(void)
Definition: Tetra.cpp:451
Tetra::FSContactMigration
void FSContactMigration(Vector< IssmDouble > *vertexgrounded, Vector< IssmDouble > *vertexfloating)
Definition: Tetra.h:61
Tetra::MinEdgeLength
IssmDouble MinEdgeLength(IssmDouble *xyz_list)
Definition: Tetra.h:109
Tetra::ReduceMatrices
void ReduceMatrices(ElementMatrix *Ke, ElementVector *pe)
Definition: Tetra.cpp:647
Tetra::TotalSmb
IssmDouble TotalSmb(bool scaled)
Definition: Tetra.h:159
Tetra::TimeAdapt
IssmDouble TimeAdapt()
Definition: Tetra.h:156
Tetra::NewGaussTop
Gauss * NewGaussTop(int order)
Definition: Tetra.cpp:515
Tetra::GetInputValue
void GetInputValue(IssmDouble *pvalue, Node *node, int enumtype)
Definition: Tetra.cpp:305
Tetra::GetVectorFromControlInputs
void GetVectorFromControlInputs(Vector< IssmDouble > *gradient, int control_enum, int control_index, const char *data, int offset)
Definition: Tetra.h:80
Tetra::NormalBase
void NormalBase(IssmDouble *normal, IssmDouble *xyz_list)
Definition: Tetra.cpp:564
Tetra::SurfaceArea
IssmDouble SurfaceArea(void)
Definition: Tetra.h:154
Tetra::GetNumberOfVertices
int GetNumberOfVertices(void)
Definition: Tetra.cpp:321
Tetra::GetVerticesCoordinatesTop
void GetVerticesCoordinatesTop(IssmDouble **pxyz_list)
Definition: Tetra.cpp:342
Tetra::GradientIndexing
void GradientIndexing(int *indexing, int control_index)
Definition: Tetra.h:84
Inputs2
Declaration of Inputs class.
Definition: Inputs2.h:23
Tetra::copy
Object * copy()
Definition: Tetra.cpp:65
Tetra::GetLevelCoordinates
void GetLevelCoordinates(IssmDouble **pxyz_front, IssmDouble *xyz_list, int levelsetenum, IssmDouble level)
Definition: Tetra.h:75
Tetra::MassFlux
IssmDouble MassFlux(IssmDouble *segment)
Definition: Tetra.h:106
Tetra::~Tetra
~Tetra()
Definition: Tetra.cpp:61
Tetra::SetControlInputsFromVector
void SetControlInputsFromVector(IssmDouble *vector, int control_enum, int control_index)
Definition: Tetra.h:143
Tetra::GetBasalElement
Element * GetBasalElement(void)
Definition: Tetra.h:64
Tetra::SetTemporaryElementType
void SetTemporaryElementType(int element_type_in)
Definition: Tetra.h:145
Tetra::ElementSizes
void ElementSizes(IssmDouble *hx, IssmDouble *hy, IssmDouble *hz)
Definition: Tetra.cpp:164
Tetra::ComputeDeviatoricStressTensor
void ComputeDeviatoricStressTensor()
Definition: Tetra.h:47
Input2
Definition: Input2.h:18
Tetra::Update
void Update(Inputs2 *inputs2, int index, IoModel *iomodel, int analysis_counter, int analysis_type, int finitelement)
Definition: Tetra.cpp:816
Tetra::NodalFunctionsP1Derivatives
void NodalFunctionsP1Derivatives(IssmDouble *dbasis, IssmDouble *xyz_list, Gauss *gauss)
Definition: Tetra.h:127
Tetra::GetNumberOfNodes
int GetNumberOfNodes(int enum_type)
Definition: Tetra.h:78
Tetra::InputDepthAverageAtBase
void InputDepthAverageAtBase(int enum_type, int average_enum_type)
Definition: Tetra.h:94
Tetra::CharacteristicLength
IssmDouble CharacteristicLength(void)
Definition: Tetra.h:44
Tetra::StressIntensityFactor
void StressIntensityFactor(void)
Definition: Tetra.h:153
Tetra::VelocityInterpolation
int VelocityInterpolation(void)
Definition: Tetra.cpp:940
Tetra::NodalFunctionsDerivativesVelocity
void NodalFunctionsDerivativesVelocity(IssmDouble *dbasis, IssmDouble *xyz_list, Gauss *gauss)
Definition: Tetra.cpp:536
Tetra::SetCurrentConfiguration
void SetCurrentConfiguration(Elements *elements, Loads *loads, Nodes *nodes, Materials *materials, Parameters *parameters)
Definition: Tetra.cpp:756
Tetra::GetGroundedPart
void GetGroundedPart(int *point1, IssmDouble *fraction1, IssmDouble *fraction2, bool *mainlyfloating)
Definition: Tetra.h:66
Tetra::VerticalSegmentIndices
void VerticalSegmentIndices(int **pindices, int *pnumseg)
Definition: Tetra.h:168
Loads
Declaration of Loads class.
Definition: Loads.h:16
Tetra::ControlToVectors
void ControlToVectors(Vector< IssmPDouble > *vector_control, Vector< IssmPDouble > *vector_gradient, int control_enum)
Definition: Tetra.h:52
Node
Definition: Node.h:23
Tetra::NodalFunctionsVelocity
void NodalFunctionsVelocity(IssmDouble *basis, Gauss *gauss)
Definition: Tetra.cpp:557
Tetra::NodalFunctionsP2
void NodalFunctionsP2(IssmDouble *basis, Gauss *gauss)
Definition: Tetra.h:128
_error_
#define _error_(StreamArgs)
Definition: exceptions.h:49
Tria
Definition: Tria.h:29
Element::parameters
Parameters * parameters
Definition: Element.h:51
Tetra::UpdatePotentialUngrounding
int UpdatePotentialUngrounding(IssmDouble *vertices_potentially_ungrounding, Vector< IssmDouble > *vec_nodes_on_iceshelf, IssmDouble *nodes_on_iceshelf)
Definition: Tetra.h:163
Tetra::UpdateConstraintsExtrudeFromBase
void UpdateConstraintsExtrudeFromBase()
Definition: Tetra.h:161
Tetra::GetVectorFromControlInputs
void GetVectorFromControlInputs(Vector< IssmDouble > *gradient, int control_enum, int control_index, const char *data)
Definition: Tetra.h:81
Tetra::GetAreaSpherical
IssmDouble GetAreaSpherical(void)
Definition: Tetra.h:63
Tetra::GetVerticesCoordinatesBase
void GetVerticesCoordinatesBase(IssmDouble **pxyz_list)
Definition: Tetra.cpp:325
Tetra::NodalFunctionsPressure
void NodalFunctionsPressure(IssmDouble *basis, Gauss *gauss)
Definition: Tetra.cpp:543
Tetra::GetElementType
int GetElementType(void)
Definition: Tetra.cpp:253
Tetra::ViscousHeating
void ViscousHeating(IssmDouble *pphi, IssmDouble *xyz_list, Gauss *gauss, Input2 *vx_input, Input2 *vy_input, Input2 *vz_input)
Definition: Tetra.cpp:944
Tetra::MassFlux
IssmDouble MassFlux(IssmDouble x1, IssmDouble y1, IssmDouble x2, IssmDouble y2, int segment_id)
Definition: Tetra.h:107
Tetra::ObjectEnum
int ObjectEnum()
Definition: Tetra.cpp:638
Tetra::ControlInputSetGradient
void ControlInputSetGradient(IssmDouble *gradient, int enum_type, int control_index, int offset, int N, int M)
Definition: Tetra.h:50
Tetra::AverageOntoPartition
void AverageOntoPartition(Vector< IssmDouble > *partition_contributions, Vector< IssmDouble > *partition_areas, IssmDouble *vertex_response, IssmDouble *qmu_part)
Definition: Tetra.h:42
Tetra::MisfitArea
IssmDouble MisfitArea(int weightsenum)
Definition: Tetra.h:111
Tetra::InputExtrude
void InputExtrude(int enum_type, int start)
Definition: Tetra.h:95
Tetra::FaceOnBaseIndices
void FaceOnBaseIndices(int *pindex1, int *pindex2, int *pindex3)
Definition: Tetra.cpp:190
Tetra::GetInput2
Input2 * GetInput2(int inputenum, IssmDouble start_time, IssmDouble end_time, int averaging_method)
Definition: Tetra.h:71
Tetra::NodalFunctionsMINIDerivatives
void NodalFunctionsMINIDerivatives(IssmDouble *dbasis, IssmDouble *xyz_list, Gauss *gauss)
Definition: Tetra.h:124
Tetra::FloatingArea
IssmDouble FloatingArea(bool scaled)
Definition: Tetra.h:60
Tetra::ValueP1DerivativesOnGauss
void ValueP1DerivativesOnGauss(IssmDouble *dvalue, IssmDouble *values, IssmDouble *xyz_list, Gauss *gauss)
Definition: Tetra.h:164
Tetra::CalvingRateLevermann
void CalvingRateLevermann(void)
Definition: Tetra.h:43
Tetra::GroundedArea
IssmDouble GroundedArea(bool scaled)
Definition: Tetra.h:85
ElementVector
Definition: ElementVector.h:20
Vertex
Definition: Vertex.h:19
Tetra::ValueP1OnGauss
void ValueP1OnGauss(IssmDouble *pvalue, IssmDouble *values, Gauss *gauss)
Definition: Tetra.cpp:936
IoModel
Definition: IoModel.h:48
Tetra::NormalTop
void NormalTop(IssmDouble *normal, IssmDouble *xyz_list)
Definition: Tetra.cpp:608
Tetra::FaceOnSurfaceIndices
void FaceOnSurfaceIndices(int *pindex1, int *pindex2, int *pindex3)
Definition: Tetra.cpp:230
Tetra::Configure
void Configure(Elements *elements, Loads *loads, Nodes *nodesin, Vertices *verticesin, Materials *materials, Parameters *parameters, Inputs2 *inputs2in)
Definition: Tetra.cpp:137
Tetra::FaceOnFrontIndices
void FaceOnFrontIndices(int *pindex1, int *pindex2, int *pindex3)
Definition: Tetra.cpp:210
Tetra::GetIcefrontCoordinates
void GetIcefrontCoordinates(IssmDouble **pxyz_front, IssmDouble *xyz_list, int levelsetenum)
Definition: Tetra.h:68
Tetra::TensorInterpolation
int TensorInterpolation(void)
Definition: Tetra.cpp:812
Tetra::IsNodeOnShelfFromFlags
bool IsNodeOnShelfFromFlags(IssmDouble *flags)
Definition: Tetra.h:92
Tetra::Misfit
IssmDouble Misfit(int modelenum, int observationenum, int weightsenum)
Definition: Tetra.h:110
ElementMatrix
Definition: ElementMatrix.h:19
Tetra::TotalGroundedBmb
IssmDouble TotalGroundedBmb(bool scaled)
Definition: Tetra.h:158
Tetra::SpawnTopElement
Element * SpawnTopElement(void)
Definition: Tetra.cpp:779
Tetra::GetInputListOnNodes
void GetInputListOnNodes(IssmDouble *pvalue, Input2 *input, IssmDouble default_value)
Definition: Tetra.cpp:283
Vector< IssmDouble >
Results
Declaration of Results class.
Definition: Results.h:14
ElementHook.h
prototypes for ElementHook.h
Tetra::StrainRateperpendicular
void StrainRateperpendicular(void)
Definition: Tetra.h:152
Gauss
Definition: Gauss.h:8
Tetra::GetLevelsetPositivePart
void GetLevelsetPositivePart(int *point1, IssmDouble *fraction1, IssmDouble *fraction2, bool *mainlynegative, IssmDouble *levelsetvalues)
Definition: Tetra.h:76
Tetra::JacobianDeterminantSurface
void JacobianDeterminantSurface(IssmDouble *pJdet, IssmDouble *xyz_list, Gauss *gauss)
Definition: Tetra.cpp:479
Tetra::SpawnBasalElement
Element * SpawnBasalElement(void)
Definition: Tetra.cpp:771
SealevelMasks
Definition: SealevelMasks.h:10
Tetra::UpdateConstraintsExtrudeFromTop
void UpdateConstraintsExtrudeFromTop()
Definition: Tetra.h:162
Tetra::NumberofNodesVelocity
int NumberofNodesVelocity(void)
Definition: Tetra.cpp:634
Tetra::ResetHooks
void ResetHooks()
Definition: Tetra.cpp:741
Tetra::JacobianDeterminantTop
void JacobianDeterminantTop(IssmDouble *pJdet, IssmDouble *xyz_list_base, Gauss *gauss)
Definition: Tetra.cpp:486