Ice Sheet System Model  4.18
Code documentation
Tria.h
Go to the documentation of this file.
1 
5 #ifndef _TRIA_H_
6 #define _TRIA_H_
7 
8 /*Headers:*/
9 /*{{{*/
10 #include "./Element.h"
11 #include "./ElementHook.h"
12 #include "./TriaRef.h"
13 class Parameters;
14 class Inputs;
15 class IoModel;
16 class Results;
17 class Node;
18 class Material;
19 class Seg;
20 class ElementMatrix;
21 class ElementVector;
22 class Vertex;
23 class GaussTria;
24 
25 #include "../../shared/Exceptions/exceptions.h"
26 #include "../../shared/Enum/Enum.h"
27 /*}}}*/
28 
29 class Tria: public Element,public ElementHook,public TriaRef{
30 
31  public:
33 
34  /*Tria constructors, destructors {{{*/
35  Tria(){};
36  Tria(int tria_id,int tria_sid,int tria_lid,IoModel* iomodel,int nummodels);
37  ~Tria();
38  /*}}}*/
39  /*Object virtual functions definitions:{{{ */
40  Object *copy();
41  void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
42  int ObjectEnum();
43  /*}}}*/
44  /*Update virtual functions resolution: {{{*/
45  #ifdef _HAVE_DAKOTA_
46  void InputUpdateFromMatrixDakota(IssmDouble* matrix, int nows, int ncols, int name, int type);
47  void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
48  #endif
49  void InputUpdateFromIoModel(int index, IoModel* iomodel);
50  void InputUpdateFromVector(IssmDouble* vector, int name, int type);
51  /*}}}*/
52  /*Element virtual functions definitions: {{{*/
53  void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part);
54  void CalvingRateVonmises();
55  void CalvingCrevasseDepth();
56  void CalvingRateLevermann();
57  void CalvingFluxLevelset();
60  void ComputeBasalStress(void);
63  void ComputeSigmaNN();
64  void ComputeStressTensor();
66  void Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters,Inputs2* inputs2in);
67  void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index,int offset,int N, int M);
68  void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index);
69  void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum);
70  void CreateDistanceInputFromSegmentlist(IssmDouble* distances,int distanceenum);
71  int EdgeOnBaseIndex();
72  void EdgeOnBaseIndices(int* pindex1,int* pindex);
73  int EdgeOnSurfaceIndex();
74  void EdgeOnSurfaceIndices(int* pindex1,int* pindex);
75  void ElementResponse(IssmDouble* presponse,int response_enum);
76  void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz);
77  int FiniteElement(void);
78  IssmDouble FloatingArea(bool scaled);
79  void FSContactMigration(Vector<IssmDouble>* vertex_sigmann,Vector<IssmDouble>* vertex_waterpressure);
80  Element* GetBasalElement(void){_error_("not implemented yet");};
81  void GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues);
82  void GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating);
85  void GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum);
86  void GetInputListOnVertices(IssmDouble* pvalue,Input2* input,IssmDouble default_value);
87  void GetInputListOnNodes(IssmDouble* pvalue,Input2* input,IssmDouble default_value);
88  void GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level);
89  int GetVertexIndex(Vertex* vertex);
90  int GetNumberOfNodes(void);
91  int GetNumberOfNodes(int enum_type);
92  int GetNumberOfVertices(void);
93  void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,int offset);
94  void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data);
95  void GetVerticesCoordinatesBase(IssmDouble** pxyz_list);
96  void GetVerticesCoordinatesTop(IssmDouble** pxyz_list);
97  IssmDouble GroundedArea(bool scaled);
98  bool HasEdgeOnBase();
99  bool HasEdgeOnSurface();
100  IssmDouble IceVolume(bool scaled);
102  IssmDouble IcefrontMassFlux(bool scaled);
104  IssmDouble GroundinglineMassFlux(bool scaled);
105  void InputDepthAverageAtBase(int enum_type,int average_enum_type);
106  void InputExtrude(int enum_type,int start){_error_("not implemented"); /*For penta only*/};
107  void ControlInputExtrude(int enum_type,int start){/*For penta only*/};
108  bool IsFaceOnBoundary(void);
109  bool IsIcefront(void);
110  bool IsNodeOnShelfFromFlags(IssmDouble* flags);
111  bool IsZeroLevelset(int levelset_enum);
112  IssmDouble Masscon(IssmDouble* levelset);
113  IssmDouble MassFlux(IssmDouble* segment);
114  IssmDouble MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id);
115  void MaterialUpdateFromTemperature(void){_error_("not implemented yet");};
116  IssmDouble Misfit(int modelenum,int observationenum,int weightsenum);
117  IssmDouble MisfitArea(int weightsenum);
118  int NodalValue(IssmDouble* pvalue, int index, int natureofdataenum);
119  int NumberofNodesPressure(void);
120  int NumberofNodesVelocity(void);
121  void PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding);
122  int PressureInterpolation();
125  void ResetHooks();
126  void ResetLevelsetFromSegmentlist(IssmDouble* segments,int numsegments);
128  void SetElementInput(int enum_in,IssmDouble values);
129  void SetElementInput(Inputs2* inputs2,int enum_in,IssmDouble values);
130  void SetElementInput(Inputs2* inputs2,int numindices,int* indices,IssmDouble* values,int enum_in);
131  void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index,int offset,int N,int M);
132  void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index);
133  void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters);
134  Element* SpawnBasalElement(void);
135  Element* SpawnTopElement(void);
136  void StrainRateparallel();
138  void StressIntensityFactor(void){_error_("not implemented yet");};
139  IssmDouble SurfaceArea(void);
140  int TensorInterpolation();
144  IssmDouble TotalFloatingBmb(bool scaled);
145  IssmDouble TotalGroundedBmb(bool scaled);
146  IssmDouble TotalSmb(bool scaled);
147  void Update(Inputs2* inputs2,int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
148  int UpdatePotentialUngrounding(IssmDouble* vertices_potentially_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf);
149  void ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss);
150  void ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss);
151  int VelocityInterpolation();
152  int VertexConnectivity(int vertexindex);
153  void VerticalSegmentIndices(int** pindices,int* pnumseg){_error_("not implemented yet");};
154  void VerticalSegmentIndicesBase(int** pindices,int* pnumseg){_error_("not implemented yet");};
155  void WriteFieldIsovalueSegment(DataSet* segments,int fieldenum,IssmDouble fieldvalue);
156 
157  #ifdef _HAVE_GIA_
158  void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y);
159  #endif
160  #ifdef _HAVE_ESA_
162  void EsaGeodetic3D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz);
163  #endif
164  #ifdef _HAVE_SEALEVELRISE_
165  IssmDouble OceanAverage(IssmDouble* Sg, SealevelMasks* masks);
166  void SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,SealevelMasks* masks);
167  void SetSealevelMasks(SealevelMasks* masks);
168  void SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz);
169  void SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic,SealevelMasks* masks, IssmDouble oceanarea);
170  void SealevelriseEustaticIce(IssmDouble* Sgi, IssmDouble* peustatic,SealevelMasks* masks, IssmDouble oceanarea);
171  void SealevelriseEustaticHydro(IssmDouble* Sgi, IssmDouble* peustatic,SealevelMasks* masks, IssmDouble oceanarea);
172  void SealevelriseBottomPressure(IssmDouble* Sgi,SealevelMasks* masks);
173  void SealevelriseNonEustatic(IssmDouble* Sgo,IssmDouble* Sg_old,SealevelMasks* masks);
174  void SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg,SealevelMasks* masks);
175  #endif
176  /*}}}*/
177  /*Tria specific routines:{{{*/
178  void AddBasalInput2(int input_enum, IssmDouble* values, int interpolation_enum);
179  void AddInput2(int input_enum, IssmDouble* values, int interpolation_enum);
180  void AddControlInput(int input_enum,Inputs2* inputs2,IoModel* iomodel,IssmDouble* values,IssmDouble* values_min,IssmDouble* values_max, int interpolation_enum,int id);
181  void DatasetInputCreate(IssmDouble* array,int M,int N,int* individual_enums,int num_inputs,Inputs2* inputs2,IoModel* iomodel,int input_enum);
182  void CreateInputTimeAverage(int transientinput_enum,int averagedinput_enum,IssmDouble init_time,IssmDouble end_time,int averaging_method);
183  void GetInputAveragesUpToCurrentTime(int input_enum,IssmDouble** pvalues, IssmDouble** ptimes, int* pnumtimes, IssmDouble currenttime);
184  IssmDouble GetArea(void);
186  IssmDouble GetArea3D(void);
187  IssmDouble GetAreaIce(void);
189  void GetAreaCoordinates(IssmDouble *area_coordinates,IssmDouble* xyz_zero,IssmDouble* xyz_list,int numpoints);
190  int GetElementType(void);
191  Input2* GetInput2(int enumtype);
192  Input2* GetInput2(int enumtype,IssmDouble time);
193  Input2* GetInput2(int inputenum,IssmDouble start_time,IssmDouble end_time,int averaging_method);
194  DatasetInput2* GetDatasetInput2(int inputenum);
195  void GetInputValue(IssmDouble* pvalue,Node* node,int enumtype);
196  void GetInputValue(IssmDouble* pvalue,Vertex* vertex,int enumtype);
197  void GetLevelsetIntersection(int** pindices, int* pnumiceverts, IssmDouble* fraction, int levelset_enum, IssmDouble level);
198  void GetMaterialInputValue(IssmDouble* pvalue,Node* node,int enumtype);
199  void InputUpdateFromSolutionOneDof(IssmDouble* solution,int enum_type);
200  void InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solution,int enum_type){_error_("not implemented yet");};
201  void JacobianDeterminant(IssmDouble* pJdet, IssmDouble* xyz_list,Gauss* gauss);
202  void JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
203  void JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
204  void JacobianDeterminantSurface(IssmDouble* pJdet, IssmDouble* xyz_list,Gauss* gauss);
205  void JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
206  IssmDouble MinEdgeLength(IssmDouble* xyz_list){_error_("not implemented yet");};
207  Gauss* NewGauss(void);
208  Gauss* NewGauss(int order);
209  Gauss* NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order);
210  Gauss* NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order);
211  Gauss* NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,int order);
212  Gauss* NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert);
213  Gauss* NewGaussBase(int order);
214  Gauss* NewGaussLine(int vertex1,int vertex2,int order){_error_("not implemented yet");};
215  Gauss* NewGaussTop(int order);
216  void NodalFunctions(IssmDouble* basis,Gauss* gauss);
217  void NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
218  void NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
219  void NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
220  void NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss);
221  void NodalFunctionsP1(IssmDouble* basis,Gauss* gauss);
222  void NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
223  void NodalFunctionsP2(IssmDouble* basis,Gauss* gauss);
224  void NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss);
225  void NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss);
226  void NormalBase(IssmDouble* normal,IssmDouble* xyz_list);
227  void NormalSection(IssmDouble* normal,IssmDouble* xyz_list);
228  void NormalTop(IssmDouble* normal,IssmDouble* xyz_list);
229  void SetTemporaryElementType(int element_type_in){_error_("not implemented yet");};
230  void InputServe(Input2* input_in);
231  Seg* SpawnSeg(int index1,int index2);
232  IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){_error_("not implemented yet");};
233  void StabilizationParameterAnisotropic(IssmDouble* tau_parameter_ansiotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy, IssmDouble hz, IssmDouble kappa){_error_("not implemented yet");};
236  /*}}}*/
237 
238 };
239 #endif /* _TRIA_H */
Tria::iscollapsed
int iscollapsed
Definition: Tria.h:32
Tria::GetInputListOnNodes
void GetInputListOnNodes(IssmDouble *pvalue, Input2 *input, IssmDouble default_value)
Definition: Tria.cpp:1952
Vertices
Declaration of Vertices class.
Definition: Vertices.h:15
Tria::StrainRateparallel
void StrainRateparallel()
Definition: Tria.cpp:4100
Tria::Update
void Update(Inputs2 *inputs2, int index, IoModel *iomodel, int analysis_counter, int analysis_type, int finitelement)
Definition: Tria.cpp:4656
Tria::ComputeSurfaceNormalVelocity
void ComputeSurfaceNormalVelocity()
IssmDouble
double IssmDouble
Definition: types.h:37
Tria::GetNumberOfVertices
int GetNumberOfVertices(void)
Definition: Tria.cpp:2386
Nodes
Declaration of Nodes class.
Definition: Nodes.h:19
Tria::GetHorizontalSurfaceArea
IssmDouble GetHorizontalSurfaceArea(void)
Definition: Tria.cpp:1438
Tria::NodalFunctionsDerivativesVelocity
void NodalFunctionsDerivativesVelocity(IssmDouble *dbasis, IssmDouble *xyz_list, Gauss *gauss)
Definition: Tria.cpp:3575
DatasetInput2
Definition: DatasetInput2.h:14
Tria::EdgeOnSurfaceIndices
void EdgeOnSurfaceIndices(int *pindex1, int *pindex)
Definition: Tria.cpp:1252
Tria::ComputeDeviatoricStressTensor
void ComputeDeviatoricStressTensor()
Definition: Tria.cpp:841
Tria::ValueP1OnGauss
void ValueP1OnGauss(IssmDouble *pvalue, IssmDouble *values, Gauss *gauss)
Definition: Tria.cpp:4872
Tria::ElementSizes
void ElementSizes(IssmDouble *hx, IssmDouble *hy, IssmDouble *hz)
Definition: Tria.cpp:1295
Tria::AddBasalInput2
void AddBasalInput2(int input_enum, IssmDouble *values, int interpolation_enum)
Definition: Tria.cpp:165
Tria::SetControlInputsFromVector
void SetControlInputsFromVector(IssmDouble *vector, int control_enum, int control_index, int offset, int N, int M)
Definition: Tria.cpp:3909
Tria::GroundinglineMassFlux
IssmDouble GroundinglineMassFlux(bool scaled)
Definition: Tria.cpp:2779
Tria::~Tria
~Tria()
Definition: Tria.cpp:82
Tria::JacobianDeterminantBase
void JacobianDeterminantBase(IssmDouble *pJdet, IssmDouble *xyz_list_base, Gauss *gauss)
Definition: Tria.cpp:3298
Parameters
Declaration of Parameters class.
Definition: Parameters.h:18
TriaRef.h
abstract class for handling Tria oriented routines, like nodal functions, strain rate generation,...
Tria::GetLevelCoordinates
void GetLevelCoordinates(IssmDouble **pxyz_front, IssmDouble *xyz_list, int levelsetenum, IssmDouble level)
Definition: Tria.cpp:2200
Tria::ControlToVectors
void ControlToVectors(Vector< IssmPDouble > *vector_control, Vector< IssmPDouble > *vector_gradient, int control_enum)
Definition: Tria.cpp:1136
Tria::RignotMeltParameterization
void RignotMeltParameterization()
Definition: Tria.cpp:3852
Tria::SetCurrentConfiguration
void SetCurrentConfiguration(Elements *elements, Loads *loads, Nodes *nodes, Materials *materials, Parameters *parameters)
Definition: Tria.cpp:3996
Tria::EdgeOnBaseIndex
int EdgeOnBaseIndex()
Definition: Tria.cpp:1196
Elements
Declaration of Elements class.
Definition: Elements.h:17
Tria::SpawnBasalElement
Element * SpawnBasalElement(void)
Definition: Tria.cpp:4032
Tria::ControlInputExtrude
void ControlInputExtrude(int enum_type, int start)
Definition: Tria.h:107
Tria::AverageOntoPartition
void AverageOntoPartition(Vector< IssmDouble > *partition_contributions, Vector< IssmDouble > *partition_areas, IssmDouble *vertex_response, IssmDouble *qmu_part)
Definition: Tria.cpp:259
Tria::TimeAdapt
IssmDouble TimeAdapt()
Definition: Tria.cpp:4223
Tria::EdgeOnBaseIndices
void EdgeOnBaseIndices(int *pindex1, int *pindex)
Definition: Tria.cpp:1214
Tria::ComputeSigmaNN
void ComputeSigmaNN()
Definition: Tria.cpp:958
Tria::TotalCalvingMeltingFluxLevelset
IssmDouble TotalCalvingMeltingFluxLevelset(bool scaled)
Definition: Tria.cpp:4390
Tria::WriteFieldIsovalueSegment
void WriteFieldIsovalueSegment(DataSet *segments, int fieldenum, IssmDouble fieldvalue)
Definition: Tria.cpp:4885
Material
Definition: Material.h:21
Tria::ResetLevelsetFromSegmentlist
void ResetLevelsetFromSegmentlist(IssmDouble *segments, int numsegments)
Tria::InputUpdateFromSolutionOneDof
void InputUpdateFromSolutionOneDof(IssmDouble *solution, int enum_type)
Definition: Tria.cpp:3092
Tria::PressureInterpolation
int PressureInterpolation()
Definition: Tria.cpp:3745
Tria::CreateDistanceInputFromSegmentlist
void CreateDistanceInputFromSegmentlist(IssmDouble *distances, int distanceenum)
Definition: Tria.cpp:1170
Tria::ComputeEsaStrainAndVorticity
void ComputeEsaStrainAndVorticity()
Definition: Tria.cpp:916
Tria::NodalFunctionsTensor
void NodalFunctionsTensor(IssmDouble *basis, Gauss *gauss)
Definition: Tria.cpp:3610
Tria::IceVolume
IssmDouble IceVolume(bool scaled)
Definition: Tria.cpp:2906
Tria::NumberofNodesPressure
int NumberofNodesPressure(void)
Definition: Tria.cpp:3710
Tria::MassFlux
IssmDouble MassFlux(IssmDouble *segment)
Definition: Tria.cpp:3433
ElementHook
Definition: ElementHook.h:11
Tria::ElementResponse
void ElementResponse(IssmDouble *presponse, int response_enum)
Definition: Tria.cpp:1272
Tria::HasEdgeOnSurface
bool HasEdgeOnSurface()
Definition: Tria.cpp:2573
Tria::InputUpdateFromSolutionOneDofCollapsed
void InputUpdateFromSolutionOneDofCollapsed(IssmDouble *solution, int enum_type)
Definition: Tria.h:200
Tria::StressIntensityFactor
void StressIntensityFactor(void)
Definition: Tria.h:138
Tria::SpawnSeg
Seg * SpawnSeg(int index1, int index2)
Definition: Tria.cpp:4050
Tria::StrainRateperpendicular
void StrainRateperpendicular()
Definition: Tria.cpp:4146
Tria::GetVerticesCoordinatesTop
void GetVerticesCoordinatesTop(IssmDouble **pxyz_list)
Definition: Tria.cpp:2508
Tria::CreateInputTimeAverage
void CreateInputTimeAverage(int transientinput_enum, int averagedinput_enum, IssmDouble init_time, IssmDouble end_time, int averaging_method)
Definition: Tria.cpp:2116
Tria::ControlInputSetGradient
void ControlInputSetGradient(IssmDouble *gradient, int enum_type, int control_index, int offset, int N, int M)
Definition: Tria.cpp:1099
Tria::NodalFunctionsPressure
void NodalFunctionsPressure(IssmDouble *basis, Gauss *gauss)
Definition: Tria.cpp:3582
Tria::GetLevelsetPositivePart
void GetLevelsetPositivePart(int *point1, IssmDouble *fraction1, IssmDouble *fraction2, bool *mainlynegative, IssmDouble *levelsetvalues)
Definition: Tria.cpp:2315
Element::nodes
Node ** nodes
Definition: Element.h:48
Element
Definition: Element.h:41
Tria::NodalFunctionsDerivatives
void NodalFunctionsDerivatives(IssmDouble *dbasis, IssmDouble *xyz_list, Gauss *gauss)
Definition: Tria.cpp:3568
Tria::VelocityInterpolation
int VelocityInterpolation()
Definition: Tria.cpp:4876
Tria::CalvingMeltingFluxLevelset
void CalvingMeltingFluxLevelset()
Definition: Tria.cpp:683
Tria::IcefrontMassFlux
IssmDouble IcefrontMassFlux(bool scaled)
Definition: Tria.cpp:2594
Tria::CalvingCrevasseDepth
void CalvingCrevasseDepth()
Definition: Tria.cpp:392
Tria::ComputeBasalStress
void ComputeBasalStress(void)
Definition: Tria.cpp:837
Tria::JacobianDeterminantLine
void JacobianDeterminantLine(IssmDouble *Jdet, IssmDouble *xyz_list, Gauss *gauss)
Definition: Tria.h:203
GaussTria
Definition: GaussTria.h:12
Element.h
abstract class for Element object This class is a place holder for the Tria and the Penta elements....
Tria::InputServe
void InputServe(Input2 *input_in)
Definition: Tria.cpp:1974
Tria::NormalTop
void NormalTop(IssmDouble *normal, IssmDouble *xyz_list)
Definition: Tria.cpp:3686
Tria::GetVectorFromControlInputs
void GetVectorFromControlInputs(Vector< IssmDouble > *gradient, int control_enum, int control_index, const char *data, int offset)
Definition: Tria.cpp:2434
Object
Definition: Object.h:13
Tria::NormalBase
void NormalBase(IssmDouble *normal, IssmDouble *xyz_list)
Definition: Tria.cpp:3655
Tria::GetLevelsetIntersection
void GetLevelsetIntersection(int **pindices, int *pnumiceverts, IssmDouble *fraction, int levelset_enum, IssmDouble level)
Definition: Tria.cpp:2239
Tria::ComputeStressTensor
void ComputeStressTensor()
Definition: Tria.cpp:1018
Element::inputs2
Inputs2 * inputs2
Definition: Element.h:47
Materials
Declaration of Materials class.
Definition: Materials.h:16
Tria::CalvingRateVonmises
void CalvingRateVonmises()
Definition: Tria.cpp:297
Tria::ObjectEnum
int ObjectEnum()
Definition: Tria.cpp:3704
Tria::GetArea3D
IssmDouble GetArea3D(void)
Definition: Tria.cpp:1443
Tria::ReduceMatrices
void ReduceMatrices(ElementMatrix *Ke, ElementVector *pe)
Definition: Tria.cpp:3749
Tria::GetInputAveragesUpToCurrentTime
void GetInputAveragesUpToCurrentTime(int input_enum, IssmDouble **pvalues, IssmDouble **ptimes, int *pnumtimes, IssmDouble currenttime)
Definition: Tria.cpp:2129
Tria::JacobianDeterminantSurface
void JacobianDeterminantSurface(IssmDouble *pJdet, IssmDouble *xyz_list, Gauss *gauss)
Definition: Tria.cpp:3305
Tria::Masscon
IssmDouble Masscon(IssmDouble *levelset)
Definition: Tria.cpp:3319
Tria::Configure
void Configure(Elements *elements, Loads *loads, Nodes *nodesin, Vertices *verticesin, Materials *materials, Parameters *parameters, Inputs2 *inputs2in)
Definition: Tria.cpp:1070
Tria::CharacteristicLength
IssmDouble CharacteristicLength(void)
Definition: Tria.cpp:832
Tria::UpdateConstraintsExtrudeFromTop
void UpdateConstraintsExtrudeFromTop(void)
Definition: Tria.cpp:4826
Tria::GetMaterialInputValue
void GetMaterialInputValue(IssmDouble *pvalue, Node *node, int enumtype)
Tria::FloatingArea
IssmDouble FloatingArea(bool scaled)
Definition: Tria.cpp:1322
Tria::GetNumberOfNodes
int GetNumberOfNodes(void)
Definition: Tria.cpp:2377
Tria::GetAreaCoordinates
void GetAreaCoordinates(IssmDouble *area_coordinates, IssmDouble *xyz_zero, IssmDouble *xyz_list, int numpoints)
Definition: Tria.cpp:1523
Tria::NewGaussLine
Gauss * NewGaussLine(int vertex1, int vertex2, int order)
Definition: Tria.h:214
Tria::InputExtrude
void InputExtrude(int enum_type, int start)
Definition: Tria.h:106
Tria::NormalSection
void NormalSection(IssmDouble *normal, IssmDouble *xyz_list)
Definition: Tria.cpp:3671
Tria::NodalFunctionsMINIDerivatives
void NodalFunctionsMINIDerivatives(IssmDouble *dbasis, IssmDouble *xyz_list, Gauss *gauss)
Definition: Tria.h:219
Tria::VerticalSegmentIndicesBase
void VerticalSegmentIndicesBase(int **pindices, int *pnumseg)
Definition: Tria.h:154
Tria::TotalGroundedBmb
IssmDouble TotalGroundedBmb(bool scaled)
Definition: Tria.cpp:4576
Tria::NodalFunctions
void NodalFunctions(IssmDouble *basis, Gauss *gauss)
Definition: Tria.cpp:3561
Tria::IsNodeOnShelfFromFlags
bool IsNodeOnShelfFromFlags(IssmDouble *flags)
Definition: Tria.cpp:3258
Tria::Tria
Tria()
Definition: Tria.h:35
Tria::NewGaussBase
Gauss * NewGaussBase(int order)
Definition: Tria.cpp:3547
Tria::GetBasalElement
Element * GetBasalElement(void)
Definition: Tria.h:80
Tria::StabilizationParameterAnisotropic
void StabilizationParameterAnisotropic(IssmDouble *tau_parameter_ansiotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy, IssmDouble hz, IssmDouble kappa)
Definition: Tria.h:233
Inputs2
Declaration of Inputs class.
Definition: Inputs2.h:23
Tria::IcefrontMassFluxLevelset
IssmDouble IcefrontMassFluxLevelset(bool scaled)
Definition: Tria.cpp:2650
Tria::FiniteElement
int FiniteElement(void)
Definition: Tria.cpp:1318
Tria::GetDatasetInput2
DatasetInput2 * GetDatasetInput2(int inputenum)
Definition: Tria.cpp:2044
Tria::Misfit
IssmDouble Misfit(int modelenum, int observationenum, int weightsenum)
Definition: Tria.cpp:3437
Tria::copy
Object * copy()
Definition: Tria.cpp:86
Input2
Definition: Input2.h:18
Seg
Definition: Seg.h:27
Tria::GetIcefrontCoordinates
void GetIcefrontCoordinates(IssmDouble **pxyz_front, IssmDouble *xyz_list, int levelsetenum)
Definition: Tria.cpp:1844
Tria::MisfitArea
IssmDouble MisfitArea(int weightsenum)
Definition: Tria.cpp:3478
Tria::GetAreaSpherical
IssmDouble GetAreaSpherical(void)
Definition: Tria.cpp:1495
Tria::GetInputValue
void GetInputValue(IssmDouble *pvalue, Node *node, int enumtype)
Definition: Tria.cpp:2172
Tria::NodalFunctionsP2
void NodalFunctionsP2(IssmDouble *basis, Gauss *gauss)
Definition: Tria.cpp:3603
Loads
Declaration of Loads class.
Definition: Loads.h:16
Node
Definition: Node.h:23
Tria::GetGroundedPortion
IssmDouble GetGroundedPortion(IssmDouble *xyz_list)
Definition: Tria.cpp:1619
Tria::SurfaceArea
IssmDouble SurfaceArea(void)
Definition: Tria.cpp:4192
Tria::MaterialUpdateFromTemperature
void MaterialUpdateFromTemperature(void)
Definition: Tria.h:115
_error_
#define _error_(StreamArgs)
Definition: exceptions.h:49
Tria
Definition: Tria.h:29
Tria::GetAreaIce
IssmDouble GetAreaIce(void)
Definition: Tria.cpp:1462
Element::parameters
Parameters * parameters
Definition: Element.h:51
Tria::NodalFunctionsP1Derivatives
void NodalFunctionsP1Derivatives(IssmDouble *dbasis, IssmDouble *xyz_list, Gauss *gauss)
Definition: Tria.cpp:3596
Tria::GroundedArea
IssmDouble GroundedArea(bool scaled)
Definition: Tria.cpp:2525
Tria::IceVolumeAboveFloatation
IssmDouble IceVolumeAboveFloatation(bool scaled)
Definition: Tria.cpp:3010
Tria::JacobianDeterminant
void JacobianDeterminant(IssmDouble *pJdet, IssmDouble *xyz_list, Gauss *gauss)
Definition: Tria.cpp:3291
Tria::FSContactMigration
void FSContactMigration(Vector< IssmDouble > *vertex_sigmann, Vector< IssmDouble > *vertex_waterpressure)
Definition: Tria.cpp:1349
Tria::AddControlInput
void AddControlInput(int input_enum, Inputs2 *inputs2, IoModel *iomodel, IssmDouble *values, IssmDouble *values_min, IssmDouble *values_max, int interpolation_enum, int id)
Definition: Tria.cpp:211
Tria::JacobianDeterminantTop
void JacobianDeterminantTop(IssmDouble *pJdet, IssmDouble *xyz_list_base, Gauss *gauss)
Definition: Tria.cpp:3312
Tria::GetArea
IssmDouble GetArea(void)
Definition: Tria.cpp:1423
Tria::ValueP1DerivativesOnGauss
void ValueP1DerivativesOnGauss(IssmDouble *dvalue, IssmDouble *values, IssmDouble *xyz_list, Gauss *gauss)
Definition: Tria.cpp:4868
Tria::DatasetInputCreate
void DatasetInputCreate(IssmDouble *array, int M, int N, int *individual_enums, int num_inputs, Inputs2 *inputs2, IoModel *iomodel, int input_enum)
Definition: Tria.cpp:233
Tria::IsIcefront
bool IsIcefront(void)
Definition: Tria.cpp:3239
Tria::EdgeOnSurfaceIndex
int EdgeOnSurfaceIndex()
Definition: Tria.cpp:1234
Tria::ResetHooks
void ResetHooks()
Definition: Tria.cpp:3836
TriaRef
Definition: TriaRef.h:11
Tria::UpdatePotentialUngrounding
int UpdatePotentialUngrounding(IssmDouble *vertices_potentially_ungrounding, Vector< IssmDouble > *vec_nodes_on_iceshelf, IssmDouble *nodes_on_iceshelf)
Definition: Tria.cpp:4849
Tria::SpawnTopElement
Element * SpawnTopElement(void)
Definition: Tria.cpp:4082
Tria::SetTemporaryElementType
void SetTemporaryElementType(int element_type_in)
Definition: Tria.h:229
Tria::IsFaceOnBoundary
bool IsFaceOnBoundary(void)
Definition: Tria.cpp:3219
Tria::Marshall
void Marshall(char **pmarshalled_data, int *pmarshalled_data_size, int marshall_direction)
Definition: Tria.cpp:146
Tria::NodalValue
int NodalValue(IssmDouble *pvalue, int index, int natureofdataenum)
Definition: Tria.cpp:3624
Tria::CalvingRateLevermann
void CalvingRateLevermann()
Definition: Tria.cpp:490
Tria::PotentialUngrounding
void PotentialUngrounding(Vector< IssmDouble > *potential_sheet_ungrounding)
Definition: Tria.cpp:3718
Tria::NodalFunctionsP1
void NodalFunctionsP1(IssmDouble *basis, Gauss *gauss)
Definition: Tria.cpp:3589
ElementVector
Definition: ElementVector.h:20
Tria::AddInput2
void AddInput2(int input_enum, IssmDouble *values, int interpolation_enum)
Definition: Tria.cpp:185
Tria::IsZeroLevelset
bool IsZeroLevelset(int levelset_enum)
Definition: Tria.cpp:3272
Tria::InputUpdateFromIoModel
void InputUpdateFromIoModel(int index, IoModel *iomodel)
Definition: Tria.cpp:3064
Vertex
Definition: Vertex.h:19
Tria::SetElementInput
void SetElementInput(int enum_in, IssmDouble values)
Definition: Tria.cpp:4012
IoModel
Definition: IoModel.h:48
Tria::InputDepthAverageAtBase
void InputDepthAverageAtBase(int enum_type, int average_enum_type)
Definition: Tria.cpp:3046
Tria::TotalSmb
IssmDouble TotalSmb(bool scaled)
Definition: Tria.cpp:4621
Tria::MinEdgeLength
IssmDouble MinEdgeLength(IssmDouble *xyz_list)
Definition: Tria.h:206
Tria::TotalCalvingFluxLevelset
IssmDouble TotalCalvingFluxLevelset(bool scaled)
Definition: Tria.cpp:4261
DataSet
Declaration of DataSet class.
Definition: DataSet.h:14
Tria::VertexConnectivity
int VertexConnectivity(int vertexindex)
Definition: Tria.cpp:4880
Tria::UpdateConstraintsExtrudeFromBase
void UpdateConstraintsExtrudeFromBase(void)
Definition: Tria.cpp:4802
Tria::NewGauss
Gauss * NewGauss(void)
Definition: Tria.cpp:3515
Tria::VerticalSegmentIndices
void VerticalSegmentIndices(int **pindices, int *pnumseg)
Definition: Tria.h:153
Tria::GetGroundedPart
void GetGroundedPart(int *point1, IssmDouble *fraction1, IssmDouble *fraction2, bool *mainlyfloating)
Definition: Tria.cpp:1565
ElementMatrix
Definition: ElementMatrix.h:19
Vector< IssmDouble >
Tria::NewGaussTop
Gauss * NewGaussTop(int order)
Definition: Tria.cpp:3554
Tria::NumberofNodesVelocity
int NumberofNodesVelocity(void)
Definition: Tria.cpp:3714
Results
Declaration of Results class.
Definition: Results.h:14
ElementHook.h
prototypes for ElementHook.h
Tria::CalvingFluxLevelset
void CalvingFluxLevelset()
Definition: Tria.cpp:547
Tria::GetIcefrontArea
IssmDouble GetIcefrontArea()
Definition: Tria.cpp:1744
Tria::GetInputListOnVertices
void GetInputListOnVertices(IssmDouble *pvalue, Input2 *input, IssmDouble default_value)
Definition: Tria.cpp:1934
Gauss
Definition: Gauss.h:8
Tria::StabilizationParameter
IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa)
Definition: Tria.h:232
Tria::GetInput2
Input2 * GetInput2(int enumtype)
Definition: Tria.cpp:1880
Tria::InputUpdateFromVector
void InputUpdateFromVector(IssmDouble *vector, int name, int type)
Definition: Tria.cpp:3119
Tria::GetVertexIndex
int GetVertexIndex(Vertex *vertex)
Definition: Tria.cpp:2368
Tria::GetElementType
int GetElementType(void)
Definition: Tria.cpp:1558
Tria::TotalFloatingBmb
IssmDouble TotalFloatingBmb(bool scaled)
Definition: Tria.cpp:4531
Tria::ResetFSBasalBoundaryCondition
void ResetFSBasalBoundaryCondition(void)
Definition: Tria.cpp:3786
SealevelMasks
Definition: SealevelMasks.h:10
Tria::HasEdgeOnBase
bool HasEdgeOnBase()
Definition: Tria.cpp:2552
Tria::NodalFunctionsVelocity
void NodalFunctionsVelocity(IssmDouble *basis, Gauss *gauss)
Definition: Tria.cpp:3617
Tria::GetVerticesCoordinatesBase
void GetVerticesCoordinatesBase(IssmDouble **pxyz_list)
Definition: Tria.cpp:2491
Tria::TensorInterpolation
int TensorInterpolation()
Definition: Tria.cpp:4219