Ice Sheet System Model  4.18
Code documentation
Penta.h
Go to the documentation of this file.
1 
5 #ifndef _PENTA_H_
6 #define _PENTA_H_
7 
8 /*Headers:*/
9 /*{{{*/
10 #include "./Element.h"
11 #include "./ElementHook.h"
12 #include "./PentaRef.h"
13 class Object;
14 class Parameters;
15 class Results;
16 class Inputs;
17 class Input;
18 class IoModel;
19 class Node;
20 class Material;
21 class Tria;
22 class ElementMatrix;
23 class ElementVector;
24 class GaussPenta;
25 #include "../../shared/Exceptions/exceptions.h"
26 #include "../../shared/Enum/Enum.h"
27 /*}}}*/
28 
29 class Penta: public Element,public ElementHook,public PentaRef{
30 
31  public:
32 
33  Penta **verticalneighbors; // 2 neighbors: first one under, second one above
34 
35  /*Penta constructors and destructor: {{{*/
36  Penta(){};
37  Penta(int penta_id,int penta_sid,int penta_lid,IoModel* iomodel,int nummodels);
38  ~Penta();
39  /*}}}*/
40  /*Object virtual functions definitions: {{{*/
41  Object *copy();
42  void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
43  int ObjectEnum();
44  /*}}}*/
45  /*Penta routines:{{{*/
46  void AddBasalInput2(int input_enum, IssmDouble* values, int interpolation_enum);
47  void AddInput2(int input_enum, IssmDouble* values, int interpolation_enum);
48  void AddControlInput(int input_enum,Inputs2* inputs2,IoModel* iomodel,IssmDouble* values,IssmDouble* values_min,IssmDouble* values_max, int interpolation_enum,int id);
49  void ControlInputExtrude(int enum_type,int start);
50  void DatasetInputExtrude(int enum_type,int start);
51  void DatasetInputCreate(IssmDouble* array,int M,int N,int* individual_enums,int num_inputs,Inputs2* inputs2,IoModel* iomodel,int input_enum);
52  void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part);
53  void BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement);
54  void CalvingRateVonmises();
55  void CalvingRateLevermann();
56  void CalvingFluxLevelset();
58  IssmDouble CharacteristicLength(void){_error_("not implemented yet");};
59  void ComputeBasalStress(void);
61  void ComputeEsaStrainAndVorticity(){_error_("not implemented yet!");};
62  void ComputeSigmaNN(){_error_("not implemented yet");};
63  void ComputeStressTensor();
64  void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters,Inputs2* inputs2in);
65  void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index,int offset,int N,int M);
66  void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index);
67  void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum);
68  void CreateDistanceInputFromSegmentlist(IssmDouble* distances,int distanceenum);
70  void CreateInputTimeAverage(int transientinput_enum,int averagedinput_enum,IssmDouble start_time,IssmDouble end_time,int averaging_method);
71  void ElementResponse(IssmDouble* presponse,int response_enum);
72  void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz);
73  int FiniteElement(void);
74  IssmDouble FloatingArea(bool scaled);
75  void FSContactMigration(Vector<IssmDouble>* vertex_sigmann,Vector<IssmDouble>* vertex_waterpressure);
76  IssmDouble GetArea3D(void){_error_("not implemented yet!");};
77  IssmDouble GetAreaSpherical(void){_error_("not implemented yet!");};
78  void GetAreaCoordinates(IssmDouble *area_coordinates,IssmDouble* xyz_zero,IssmDouble* xyz_list,int numpoints);
79  Element* GetBasalElement(void);
80  Penta* GetBasalPenta(void);
81  int GetElementType(void);
82  void GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating);
85  void GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum);
86  Input2* GetInput2(int enumtype);
87  Input2* GetInput2(int enumtype,IssmDouble time);
88  Input2* GetInput2(int inputenum,IssmDouble start_time,IssmDouble end_time,int averaging_method){_error_("not implemented yet!");};
89  void GetInputListOnVertices(IssmDouble* pvalue,Input2* input,IssmDouble default_value);
90  void GetInputListOnNodes(IssmDouble* pvalue,Input2* input,IssmDouble default_value);
91  DatasetInput2* GetDatasetInput2(int inputenum);
92  void GetInputValue(IssmDouble* pvalue,Vertex* vertex,int enumtype);
93  void GetInputValue(IssmDouble* pvalue,Node* node,int enumtype);
94  void GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level){_error_("not implemented yet");};
95  void GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues){_error_("not implemented yet");};
96  void GetLevelsetIntersectionBase(int** pindices, int* pnumiceverts, IssmDouble* fraction, int levelset_enum, IssmDouble level);
97  int GetNumberOfNodes(void);
98  int GetNumberOfNodes(int enum_type);
99  int GetNumberOfVertices(void);
100  Penta* GetLowerPenta(void);
101  Penta* GetUpperPenta(void);
102  void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data);
103  void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,int offset);
104  int GetVertexIndex(Vertex* vertex);
105  void GetVerticesCoordinatesBase(IssmDouble** pxyz_list);
106  void GetVerticesCoordinatesTop(IssmDouble** pxyz_list);
107  IssmDouble GroundedArea(bool scaled);
108  IssmDouble GroundinglineMassFlux(bool scaled);
110  IssmDouble IceVolume(bool scaled);
112  void InputDepthAverageAtBase(int enum_type,int average_enum_type);
113  void InputExtrude(int enum_type,int start);
114  void InputUpdateFromIoModel(int index, IoModel* iomodel);
115  void InputUpdateFromSolutionOneDof(IssmDouble* solutiong,int enum_type);
116  void InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solutiong,int enum_type);
117  void InputUpdateFromVector(IssmDouble* vector, int name, int type);
118  bool IsFaceOnBoundary(void){_error_("not implemented yet");};
119  bool IsIcefront(void);
120  bool IsNodeOnShelfFromFlags(IssmDouble* flags);
121  bool IsZeroLevelset(int levelset_enum);
122  void JacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss);
123  void JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
124  void JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss);
125  void JacobianDeterminantSurface(IssmDouble* pJdet, IssmDouble* xyz_list,Gauss* gauss);
126  void JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
127  IssmDouble Masscon(IssmDouble* levelset){_error_("not implemented yet");};
128  IssmDouble MassFlux(IssmDouble* segment);
129  IssmDouble MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id);
131  IssmDouble Misfit(int modelenum,int observationenum,int weightsenum){_error_("not implemented yet");};
132  IssmDouble MisfitArea(int weightsenum){_error_("not implemented yet");};
133  Gauss* NewGauss(void);
134  Gauss* NewGauss(int order);
135  Gauss* NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order){_error_("not implemented yet");};
136  Gauss* NewGauss(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz,int order_vert);
137  Gauss* NewGaussBase(IssmDouble* xyz_list, IssmDouble* xyz_list_front,int order_horiz);
138  Gauss* NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,bool mainlyfloating,int order);
139  Gauss* NewGauss(int point1,IssmDouble fraction1,IssmDouble fraction2,int order){_error_("not implemented yet");};
140  Gauss* NewGaussBase(int order);
141  Gauss* NewGaussLine(int vertex1,int vertex2,int order);
142  Gauss* NewGaussTop(int order);
143  void NodalFunctions(IssmDouble* basis,Gauss* gauss);
144  void NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
145  void NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
146  void NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
147  void NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss);
148  void NodalFunctionsP1(IssmDouble* basis,Gauss* gauss);
149  void NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss);
150  void NodalFunctionsP2(IssmDouble* basis,Gauss* gauss);
151  void NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss);
152  void NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss);
153  void NormalBase(IssmDouble* bed_normal, IssmDouble* xyz_list);
154  void NormalSection(IssmDouble* normal,IssmDouble* xyz_list);
155  void NormalSectionBase(IssmDouble* normal,IssmDouble* xyz_list);
156  void NormalTop(IssmDouble* bed_normal, IssmDouble* xyz_list);
157  int NodalValue(IssmDouble* pvalue, int index, int natureofdataenum);
158  int NumberofNodesPressure(void);
159  int NumberofNodesVelocity(void);
160  void PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding);
161  int PressureInterpolation();
164  void ResetHooks();
166  void SetElementInput(int enum_in,IssmDouble values);
167  void SetElementInput(Inputs2* inputs2,int enum_in,IssmDouble values);
168  void SetElementInput(Inputs2* inputs2,int numindices,int* indices,IssmDouble* values,int enum_in);
169  void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index,int offset, int N,int M);
170  void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index);
171  void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters);
172  void SetTemporaryElementType(int element_type_in);
173  Element* SpawnBasalElement(void);
174  Element* SpawnTopElement(void);
175  Tria* SpawnTria(int index1,int index2,int index3);
177  void StabilizationParameterAnisotropic(IssmDouble* tau_parameter_anisotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy, IssmDouble hz, IssmDouble kappa);
178  void StressIntensityFactor();
179  void StrainRateparallel();
181  IssmDouble SurfaceArea(void);
182  int TensorInterpolation(){_error_("not implemented yet");};
186  IssmDouble TotalFloatingBmb(bool scaled);
187  IssmDouble TotalGroundedBmb(bool scaled);
188  IssmDouble TotalSmb(bool scaled);
189  void Update(Inputs2* inputs,int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
192  int UpdatePotentialUngrounding(IssmDouble* potential_sheet_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf);
193  void ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss);
194  void ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss);
195  int VelocityInterpolation();
196  int VertexConnectivity(int vertexindex);
197  void VerticalSegmentIndices(int** pindices,int* pnumseg);
198  void VerticalSegmentIndicesBase(int** pindices,int* pnumseg);
199  void ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input2* vx_input,Input2* vy_input,Input2* vz_input);
200 
201  #ifdef _HAVE_DAKOTA_
202  void InputUpdateFromMatrixDakota(IssmDouble* matrix, int nows, int ncols, int name, int type);
203  void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
204  #endif
205 
206  #ifdef _HAVE_GIA_
207  void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y);
208  #endif
209  #ifdef _HAVE_ESA_
210  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!");};
211  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!");};
212  #endif
213  #ifdef _HAVE_SEALEVELRISE_
214  IssmDouble OceanAverage(IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");};
215  void SetSealevelMasks(SealevelMasks* masks){_error_("not implemented yet!");};
216  void SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};
217  void SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz){_error_("not implemented yet!");};
218  void SealevelriseEustatic(IssmDouble* Sgi, IssmDouble* peustatic, SealevelMasks* masks,IssmDouble oceanarea){_error_("not implemented yet!");};
219  void SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old, SealevelMasks* masks){_error_("not implemented yet!");};
220  void SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg, SealevelMasks* masks){_error_("not implemented yet!");};
221  #endif
222 
223  /*}}}*/
224 };
225 #endif /* _PENTA_H */
Penta::DatasetInputExtrude
void DatasetInputExtrude(int enum_type, int start)
Definition: Penta.cpp:2324
Penta::ComputeSigmaNN
void ComputeSigmaNN()
Definition: Penta.h:62
Penta::GetAreaCoordinates
void GetAreaCoordinates(IssmDouble *area_coordinates, IssmDouble *xyz_zero, IssmDouble *xyz_list, int numpoints)
Definition: Penta.cpp:1190
Penta::CalvingMeltingFluxLevelset
void CalvingMeltingFluxLevelset()
Definition: Penta.cpp:539
Penta::GetGroundedPart
void GetGroundedPart(int *point1, IssmDouble *fraction1, IssmDouble *fraction2, bool *mainlyfloating)
Definition: Penta.cpp:1258
Vertices
Declaration of Vertices class.
Definition: Vertices.h:15
Penta::PotentialUngrounding
void PotentialUngrounding(Vector< IssmDouble > *potential_sheet_ungrounding)
Definition: Penta.cpp:3058
Penta::NodalFunctionsTensor
void NodalFunctionsTensor(IssmDouble *basis, Gauss *gauss)
Definition: Penta.cpp:2928
Penta::SetTemporaryElementType
void SetTemporaryElementType(int element_type_in)
Definition: Penta.cpp:3419
IssmDouble
double IssmDouble
Definition: types.h:37
Penta::DatasetInputCreate
void DatasetInputCreate(IssmDouble *array, int M, int N, int *individual_enums, int num_inputs, Inputs2 *inputs2, IoModel *iomodel, int input_enum)
Definition: Penta.cpp:228
Nodes
Declaration of Nodes class.
Definition: Nodes.h:19
Penta::GetVerticesCoordinatesTop
void GetVerticesCoordinatesTop(IssmDouble **pxyz_list)
Definition: Penta.cpp:1909
DatasetInput2
Definition: DatasetInput2.h:14
Penta::MinEdgeLength
IssmDouble MinEdgeLength(IssmDouble *xyz_list)
Definition: Penta.cpp:2802
Penta::TotalFloatingBmb
IssmDouble TotalFloatingBmb(bool scaled)
Definition: Penta.cpp:4040
Penta::VerticalSegmentIndices
void VerticalSegmentIndices(int **pindices, int *pnumseg)
Definition: Penta.cpp:4671
Penta::MisfitArea
IssmDouble MisfitArea(int weightsenum)
Definition: Penta.h:132
Penta::NewGaussLine
Gauss * NewGaussLine(int vertex1, int vertex2, int order)
Definition: Penta.cpp:2857
Penta::GetDatasetInput2
DatasetInput2 * GetDatasetInput2(int inputenum)
Definition: Penta.cpp:1651
PentaRef.h
abstract class for handling Penta oriented routines, like nodal functions, strain rate generation,...
Penta::ObjectEnum
int ObjectEnum()
Definition: Penta.cpp:3052
Penta::GetVerticesCoordinatesBase
void GetVerticesCoordinatesBase(IssmDouble **pxyz_list)
Definition: Penta.cpp:1900
Penta::SpawnTria
Tria * SpawnTria(int index1, int index2, int index3)
Definition: Penta.cpp:3460
Penta::NodalFunctionsP1Derivatives
void NodalFunctionsP1Derivatives(IssmDouble *dbasis, IssmDouble *xyz_list, Gauss *gauss)
Definition: Penta.cpp:2907
Parameters
Declaration of Parameters class.
Definition: Parameters.h:18
Penta::NodalFunctionsDerivatives
void NodalFunctionsDerivatives(IssmDouble *dbasis, IssmDouble *xyz_list, Gauss *gauss)
Definition: Penta.cpp:2872
Penta::JacobianDeterminantTop
void JacobianDeterminantTop(IssmDouble *pJdet, IssmDouble *xyz_list_base, Gauss *gauss)
Definition: Penta.cpp:2757
Penta::NumberofNodesVelocity
int NumberofNodesVelocity(void)
Definition: Penta.cpp:3048
Penta::InputDepthAverageAtBase
void InputDepthAverageAtBase(int enum_type, int average_enum_type)
Definition: Penta.cpp:2254
Penta::NewGaussBase
Gauss * NewGaussBase(IssmDouble *xyz_list, IssmDouble *xyz_list_front, int order_horiz)
Definition: Penta.cpp:2848
Penta::FiniteElement
int FiniteElement(void)
Definition: Penta.cpp:1075
Penta::NodalFunctionsPressure
void NodalFunctionsPressure(IssmDouble *basis, Gauss *gauss)
Definition: Penta.cpp:2893
Penta::GetLevelsetPositivePart
void GetLevelsetPositivePart(int *point1, IssmDouble *fraction1, IssmDouble *fraction2, bool *mainlynegative, IssmDouble *levelsetvalues)
Definition: Penta.h:95
Penta::JacobianDeterminantSurface
void JacobianDeterminantSurface(IssmDouble *pJdet, IssmDouble *xyz_list, Gauss *gauss)
Definition: Penta.cpp:2750
Penta::IcefrontMassFluxLevelset
IssmDouble IcefrontMassFluxLevelset(bool scaled)
Definition: Penta.cpp:2068
Penta::CalvingRateLevermann
void CalvingRateLevermann()
Definition: Penta.cpp:363
Elements
Declaration of Elements class.
Definition: Elements.h:17
Penta::AverageOntoPartition
void AverageOntoPartition(Vector< IssmDouble > *partition_contributions, Vector< IssmDouble > *partition_areas, IssmDouble *vertex_response, IssmDouble *qmu_part)
Definition: Penta.cpp:260
Penta::ComputeStressTensor
void ComputeStressTensor()
Definition: Penta.cpp:819
Penta::SpawnBasalElement
Element * SpawnBasalElement(void)
Definition: Penta.cpp:3423
Penta::GetBasalElement
Element * GetBasalElement(void)
Definition: Penta.cpp:1225
Penta::ControlInputSetGradient
void ControlInputSetGradient(IssmDouble *gradient, int enum_type, int control_index, int offset, int N, int M)
Definition: Penta.cpp:901
Penta::MassFlux
IssmDouble MassFlux(IssmDouble *segment)
Definition: Penta.cpp:2764
Element::vertices
Vertex ** vertices
Definition: Element.h:49
Material
Definition: Material.h:21
Penta::InputUpdateFromSolutionOneDof
void InputUpdateFromSolutionOneDof(IssmDouble *solutiong, int enum_type)
Definition: Penta.cpp:2539
Penta::JacobianDeterminant
void JacobianDeterminant(IssmDouble *Jdet, IssmDouble *xyz_list, Gauss *gauss)
Definition: Penta.cpp:2729
Penta::UpdateConstraintsExtrudeFromBase
void UpdateConstraintsExtrudeFromBase(void)
Definition: Penta.cpp:4590
Penta::ElementSizes
void ElementSizes(IssmDouble *hx, IssmDouble *hy, IssmDouble *hz)
Definition: Penta.cpp:1049
Penta::GetUpperPenta
Penta * GetUpperPenta(void)
Definition: Penta.cpp:1813
Penta::GetLowerPenta
Penta * GetLowerPenta(void)
Definition: Penta.cpp:1707
Penta::ValueP1DerivativesOnGauss
void ValueP1DerivativesOnGauss(IssmDouble *dvalue, IssmDouble *values, IssmDouble *xyz_list, Gauss *gauss)
Definition: Penta.cpp:4654
Penta::IsIcefront
bool IsIcefront(void)
Definition: Penta.cpp:2678
Penta::BasalNodeIndices
void BasalNodeIndices(int *pnumindices, int **pindices, int finiteelement)
Definition: Penta.cpp:254
Penta::VertexConnectivity
int VertexConnectivity(int vertexindex)
Definition: Penta.cpp:4666
ElementHook
Definition: ElementHook.h:11
Penta
Definition: Penta.h:29
Penta::NewGauss
Gauss * NewGauss(IssmDouble *xyz_list, IssmDouble *xyz_list_front, int order)
Definition: Penta.h:135
Penta::NodalValue
int NodalValue(IssmDouble *pvalue, int index, int natureofdataenum)
Definition: Penta.cpp:2935
Penta::StabilizationParameterAnisotropic
void StabilizationParameterAnisotropic(IssmDouble *tau_parameter_anisotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy, IssmDouble hz, IssmDouble kappa)
Definition: Penta.cpp:3511
Penta::NumberofNodesPressure
int NumberofNodesPressure(void)
Definition: Penta.cpp:3044
Penta::Masscon
IssmDouble Masscon(IssmDouble *levelset)
Definition: Penta.h:127
Penta::CreateBasalMassMatrix
ElementMatrix * CreateBasalMassMatrix(void)
Element::nodes
Node ** nodes
Definition: Element.h:48
Element
Definition: Element.h:41
Penta::NewGaussTop
Gauss * NewGaussTop(int order)
Definition: Penta.cpp:2861
Penta::IceVolumeAboveFloatation
IssmDouble IceVolumeAboveFloatation(bool scaled)
Definition: Penta.cpp:2218
Penta::JacobianDeterminantBase
void JacobianDeterminantBase(IssmDouble *pJdet, IssmDouble *xyz_list_base, Gauss *gauss)
Definition: Penta.cpp:2736
Penta::~Penta
~Penta()
Definition: Penta.cpp:26
Penta::verticalneighbors
Penta ** verticalneighbors
Definition: Penta.h:33
Penta::Configure
void Configure(Elements *elements, Loads *loads, Nodes *nodes, Vertices *vertices, Materials *materials, Parameters *parameters, Inputs2 *inputs2in)
Definition: Penta.cpp:872
Element.h
abstract class for Element object This class is a place holder for the Tria and the Penta elements....
Penta::GetInput2
Input2 * GetInput2(int enumtype)
Definition: Penta.cpp:1557
Penta::Misfit
IssmDouble Misfit(int modelenum, int observationenum, int weightsenum)
Definition: Penta.h:131
Penta::UpdatePotentialUngrounding
int UpdatePotentialUngrounding(IssmDouble *potential_sheet_ungrounding, Vector< IssmDouble > *vec_nodes_on_iceshelf, IssmDouble *nodes_on_iceshelf)
Definition: Penta.cpp:4635
Penta::GroundedArea
IssmDouble GroundedArea(bool scaled)
Definition: Penta.cpp:1918
Object
Definition: Object.h:13
Penta::NewGauss
Gauss * NewGauss(int point1, IssmDouble fraction1, IssmDouble fraction2, int order)
Definition: Penta.h:139
Penta::ControlToVectors
void ControlToVectors(Vector< IssmPDouble > *vector_control, Vector< IssmPDouble > *vector_gradient, int control_enum)
Definition: Penta.cpp:948
Penta::GetInput2
Input2 * GetInput2(int inputenum, IssmDouble start_time, IssmDouble end_time, int averaging_method)
Definition: Penta.h:88
Element::inputs2
Inputs2 * inputs2
Definition: Element.h:47
Penta::CalvingFluxLevelset
void CalvingFluxLevelset()
Definition: Penta.cpp:417
Materials
Declaration of Materials class.
Definition: Materials.h:16
Penta::GetVectorFromControlInputs
void GetVectorFromControlInputs(Vector< IssmDouble > *gradient, int control_enum, int control_index, const char *data)
Definition: Penta.cpp:1822
Penta::InputExtrude
void InputExtrude(int enum_type, int start)
Definition: Penta.cpp:2463
Penta::StressIntensityFactor
void StressIntensityFactor()
Definition: Penta.cpp:3632
Penta::SetCurrentConfiguration
void SetCurrentConfiguration(Elements *elements, Loads *loads, Nodes *nodes, Materials *materials, Parameters *parameters)
Definition: Penta.cpp:3404
Penta::SpawnTopElement
Element * SpawnTopElement(void)
Definition: Penta.cpp:3451
Penta::NormalSection
void NormalSection(IssmDouble *normal, IssmDouble *xyz_list)
Definition: Penta.cpp:2987
Penta::GetNumberOfVertices
int GetNumberOfVertices(void)
Definition: Penta.cpp:1809
Penta::ElementResponse
void ElementResponse(IssmDouble *presponse, int response_enum)
Definition: Penta.cpp:1022
Penta::GetLevelCoordinates
void GetLevelCoordinates(IssmDouble **pxyz_front, IssmDouble *xyz_list, int levelsetenum, IssmDouble level)
Definition: Penta.h:94
Penta::NodalFunctionsVelocity
void NodalFunctionsVelocity(IssmDouble *basis, Gauss *gauss)
Definition: Penta.cpp:2921
Penta::ValueP1OnGauss
void ValueP1OnGauss(IssmDouble *pvalue, IssmDouble *values, Gauss *gauss)
Definition: Penta.cpp:4658
GaussPenta
Definition: GaussPenta.h:13
Penta::SurfaceArea
IssmDouble SurfaceArea(void)
Definition: Penta.cpp:3709
Penta::VelocityInterpolation
int VelocityInterpolation()
Definition: Penta.cpp:4662
Penta::TotalGroundedBmb
IssmDouble TotalGroundedBmb(bool scaled)
Definition: Penta.cpp:4085
Penta::TotalCalvingMeltingFluxLevelset
IssmDouble TotalCalvingMeltingFluxLevelset(bool scaled)
Definition: Penta.cpp:3907
Penta::ReduceMatrices
void ReduceMatrices(ElementMatrix *Ke, ElementVector *pe)
Definition: Penta.cpp:3089
Penta::SetElementInput
void SetElementInput(int enum_in, IssmDouble values)
Definition: Penta.cpp:3285
Penta::StabilizationParameter
IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa)
Definition: Penta.cpp:3495
Penta::GetInputListOnNodes
void GetInputListOnNodes(IssmDouble *pvalue, Input2 *input, IssmDouble default_value)
Definition: Penta.cpp:1629
Penta::GetBasalPenta
Penta * GetBasalPenta(void)
Definition: Penta.cpp:1232
Penta::copy
Object * copy()
Definition: Penta.cpp:82
Penta::ControlInputExtrude
void ControlInputExtrude(int enum_type, int start)
Definition: Penta.cpp:2382
Penta::IsZeroLevelset
bool IsZeroLevelset(int levelset_enum)
Definition: Penta.cpp:2711
Penta::TotalSmb
IssmDouble TotalSmb(bool scaled)
Definition: Penta.cpp:4130
Penta::ComputeEsaStrainAndVorticity
void ComputeEsaStrainAndVorticity()
Definition: Penta.h:61
Penta::Penta
Penta()
Definition: Penta.h:36
Inputs2
Declaration of Inputs class.
Definition: Inputs2.h:23
Penta::CreateInputTimeAverage
void CreateInputTimeAverage(int transientinput_enum, int averagedinput_enum, IssmDouble start_time, IssmDouble end_time, int averaging_method)
Definition: Penta.cpp:1010
Penta::Marshall
void Marshall(char **pmarshalled_data, int *pmarshalled_data_size, int marshall_direction)
Definition: Penta.cpp:143
Penta::IsNodeOnShelfFromFlags
bool IsNodeOnShelfFromFlags(IssmDouble *flags)
Definition: Penta.cpp:2697
Penta::GetLevelsetIntersectionBase
void GetLevelsetIntersectionBase(int **pindices, int *pnumiceverts, IssmDouble *fraction, int levelset_enum, IssmDouble level)
Definition: Penta.cpp:1716
Penta::NodalFunctionsP2
void NodalFunctionsP2(IssmDouble *basis, Gauss *gauss)
Definition: Penta.cpp:2914
Input2
Definition: Input2.h:18
Penta::ViscousHeating
void ViscousHeating(IssmDouble *pphi, IssmDouble *xyz_list, Gauss *gauss, Input2 *vx_input, Input2 *vy_input, Input2 *vz_input)
Definition: Penta.cpp:4691
Penta::GetNumberOfNodes
int GetNumberOfNodes(void)
Definition: Penta.cpp:1801
Penta::NormalTop
void NormalTop(IssmDouble *bed_normal, IssmDouble *xyz_list)
Definition: Penta.cpp:3022
Penta::ResetHooks
void ResetHooks()
Definition: Penta.cpp:3207
Penta::ComputeBasalStress
void ComputeBasalStress(void)
Definition: Penta.cpp:673
Penta::NormalBase
void NormalBase(IssmDouble *bed_normal, IssmDouble *xyz_list)
Definition: Penta.cpp:2965
Penta::NodalFunctionsP1
void NodalFunctionsP1(IssmDouble *basis, Gauss *gauss)
Definition: Penta.cpp:2900
Loads
Declaration of Loads class.
Definition: Loads.h:16
Penta::NodalFunctionsMINIDerivatives
void NodalFunctionsMINIDerivatives(IssmDouble *dbasis, IssmDouble *xyz_list, Gauss *gauss)
Definition: Penta.cpp:2886
Node
Definition: Node.h:23
Penta::ComputeDeviatoricStressTensor
void ComputeDeviatoricStressTensor()
Definition: Penta.cpp:761
Penta::ResetFSBasalBoundaryCondition
void ResetFSBasalBoundaryCondition(void)
Definition: Penta.cpp:3145
_error_
#define _error_(StreamArgs)
Definition: exceptions.h:49
Tria
Definition: Tria.h:29
Penta::SetControlInputsFromVector
void SetControlInputsFromVector(IssmDouble *vector, int control_enum, int control_index, int offset, int N, int M)
Definition: Penta.cpp:3305
Penta::FloatingArea
IssmDouble FloatingArea(bool scaled)
Definition: Penta.cpp:1079
Element::parameters
Parameters * parameters
Definition: Element.h:51
Penta::GetIcefrontCoordinates
void GetIcefrontCoordinates(IssmDouble **pxyz_front, IssmDouble *xyz_list, int levelsetenum)
Definition: Penta.cpp:1515
Penta::StrainRateparallel
void StrainRateparallel()
Definition: Penta.cpp:3538
Penta::TimeAdapt
IssmDouble TimeAdapt()
Definition: Penta.cpp:3745
Penta::InputUpdateFromVector
void InputUpdateFromVector(IssmDouble *vector, int name, int type)
Definition: Penta.cpp:2606
Penta::GetInputListOnVertices
void GetInputListOnVertices(IssmDouble *pvalue, Input2 *input, IssmDouble default_value)
Definition: Penta.cpp:1611
Penta::GetVertexIndex
int GetVertexIndex(Vertex *vertex)
Definition: Penta.cpp:1792
Penta::GetIcefrontArea
IssmDouble GetIcefrontArea()
Definition: Penta.cpp:1414
Penta::TensorInterpolation
int TensorInterpolation()
Definition: Penta.h:182
Penta::FSContactMigration
void FSContactMigration(Vector< IssmDouble > *vertex_sigmann, Vector< IssmDouble > *vertex_waterpressure)
Definition: Penta.cpp:1108
Penta::CharacteristicLength
IssmDouble CharacteristicLength(void)
Definition: Penta.h:58
Penta::NodalFunctions
void NodalFunctions(IssmDouble *basis, Gauss *gauss)
Definition: Penta.cpp:2865
Penta::NormalSectionBase
void NormalSectionBase(IssmDouble *normal, IssmDouble *xyz_list)
Definition: Penta.cpp:3007
Penta::CalvingRateVonmises
void CalvingRateVonmises()
Definition: Penta.cpp:264
Penta::StrainRateperpendicular
void StrainRateperpendicular()
Definition: Penta.cpp:3585
Penta::Update
void Update(Inputs2 *inputs, int index, IoModel *iomodel, int analysis_counter, int analysis_type, int finitelement)
Definition: Penta.cpp:4166
Penta::GetElementType
int GetElementType(void)
Definition: Penta.cpp:1252
Penta::RignotMeltParameterization
void RignotMeltParameterization()
Definition: Penta.cpp:3224
Penta::GroundinglineMassFlux
IssmDouble GroundinglineMassFlux(bool scaled)
Definition: Penta.cpp:1946
Penta::GetInputValue
void GetInputValue(IssmDouble *pvalue, Vertex *vertex, int enumtype)
Definition: Penta.cpp:1693
ElementVector
Definition: ElementVector.h:20
Vertex
Definition: Vertex.h:19
IoModel
Definition: IoModel.h:48
Penta::AddInput2
void AddInput2(int input_enum, IssmDouble *values, int interpolation_enum)
Definition: Penta.cpp:185
Penta::GetAreaSpherical
IssmDouble GetAreaSpherical(void)
Definition: Penta.h:77
Penta::NewGauss
Gauss * NewGauss(void)
Definition: Penta.cpp:2823
Penta::InputUpdateFromSolutionOneDofCollapsed
void InputUpdateFromSolutionOneDofCollapsed(IssmDouble *solutiong, int enum_type)
Definition: Penta.cpp:2566
Penta::UpdateConstraintsExtrudeFromTop
void UpdateConstraintsExtrudeFromTop(void)
Definition: Penta.cpp:4614
ElementMatrix
Definition: ElementMatrix.h:19
Penta::NodalFunctionsDerivativesVelocity
void NodalFunctionsDerivativesVelocity(IssmDouble *dbasis, IssmDouble *xyz_list, Gauss *gauss)
Definition: Penta.cpp:2879
Vector< IssmDouble >
Penta::TotalCalvingFluxLevelset
IssmDouble TotalCalvingFluxLevelset(bool scaled)
Definition: Penta.cpp:3789
Penta::InputUpdateFromIoModel
void InputUpdateFromIoModel(int index, IoModel *iomodel)
Definition: Penta.cpp:2512
Penta::IceVolume
IssmDouble IceVolume(bool scaled)
Definition: Penta.cpp:2190
Results
Declaration of Results class.
Definition: Results.h:14
Penta::VerticalSegmentIndicesBase
void VerticalSegmentIndicesBase(int **pindices, int *pnumseg)
Definition: Penta.cpp:4684
Penta::JacobianDeterminantLine
void JacobianDeterminantLine(IssmDouble *Jdet, IssmDouble *xyz_list, Gauss *gauss)
Definition: Penta.cpp:2743
PentaRef
Definition: PentaRef.h:10
ElementHook.h
prototypes for ElementHook.h
Penta::AddBasalInput2
void AddBasalInput2(int input_enum, IssmDouble *values, int interpolation_enum)
Definition: Penta.cpp:162
Gauss
Definition: Gauss.h:8
Penta::CreateDistanceInputFromSegmentlist
void CreateDistanceInputFromSegmentlist(IssmDouble *distances, int distanceenum)
Definition: Penta.cpp:984
Penta::PressureInterpolation
int PressureInterpolation()
Definition: Penta.cpp:3085
Penta::GetGroundedPortion
IssmDouble GetGroundedPortion(IssmDouble *xyz_list)
Definition: Penta.cpp:1312
Penta::IsFaceOnBoundary
bool IsFaceOnBoundary(void)
Definition: Penta.h:118
SealevelMasks
Definition: SealevelMasks.h:10
Penta::GetArea3D
IssmDouble GetArea3D(void)
Definition: Penta.h:76
Penta::AddControlInput
void AddControlInput(int input_enum, Inputs2 *inputs2, IoModel *iomodel, IssmDouble *values, IssmDouble *values_min, IssmDouble *values_max, int interpolation_enum, int id)
Definition: Penta.cpp:206