Ice Sheet System Model  4.18
Code documentation
EnthalpyAnalysis.h
Go to the documentation of this file.
1 
5 #ifndef _EnthalpyAnalysis_
6 #define _EnthalpyAnalysis_
7 
8 /*Headers*/
9 #include "./Analysis.h"
10 #include "../classes/classes.h"
11 
12 class EnthalpyAnalysis: public Analysis{
13 
14  public:
15  /*Model processing*/
16  void CreateConstraints(Constraints* constraints,IoModel* iomodel);
17  void CreateLoads(Loads* loads, IoModel* iomodel);
18  void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
19  int DofsPerNode(int** doflist,int domaintype,int approximation);
20  void UpdateElements(Elements* elements,Inputs2* inputs2,IoModel* iomodel,int analysis_counter,int analysis_type);
21  void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
22 
23  /*Finite element Analysis*/
24  static void ApplyBasalConstraints(IssmDouble* serial_spc,Element* element);
26  static void ComputeBasalMeltingrate(Element* element);
27  void Core(FemModel* femmodel);
37  static void DrainWaterfraction(FemModel* femmodel);
41  static IssmDouble EnthalpyDiffusionParameter(Element* element,IssmDouble enthalpy,IssmDouble pressure);
42  static IssmDouble EnthalpyDiffusionParameterVolume(Element* element,int enthalpy_enum);
43  static void GetBasalConstraints(Vector<IssmDouble>* vec_spc,Element* element);
44  static void GetBasalConstraintsSteadystate(Vector<IssmDouble>* vec_spc,Element* element);
45  static void GetBasalConstraintsTransient(Vector<IssmDouble>* vec_spc,Element* element);
46  void GetBConduct(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
47  void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
48  static int GetThermalBasalCondition(Element* element, IssmDouble enthalpy, IssmDouble enthalpy_up, IssmDouble pressure, IssmDouble pressure_up, IssmDouble watercolumn, IssmDouble meltingrate);
49  static IssmDouble GetWetIceConductivity(Element* element, IssmDouble enthalpy, IssmDouble pressure);
50  void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
51  void InputUpdateFromSolution(IssmDouble* solution,Element* element);
52  static void PostProcessing(FemModel* femmodel);
53  static IssmDouble PureIceEnthalpy(Element* element,IssmDouble pressure);
54  static IssmDouble TMeltingPoint(Element* element,IssmDouble pressure);
57 };
58 #endif
EnthalpyAnalysis::CreateNodes
void CreateNodes(Nodes *nodes, IoModel *iomodel, bool isamr=false)
Definition: EnthalpyAnalysis.cpp:89
EnthalpyAnalysis::DrainageUpdateWatercolumn
static void DrainageUpdateWatercolumn(FemModel *femmodel)
Definition: EnthalpyAnalysis.cpp:1105
IssmDouble
double IssmDouble
Definition: types.h:37
Nodes
Declaration of Nodes class.
Definition: Nodes.h:19
EnthalpyAnalysis::CreateLoads
void CreateLoads(Loads *loads, IoModel *iomodel)
Definition: EnthalpyAnalysis.cpp:85
EnthalpyAnalysis::UpdateBasalConstraints
static void UpdateBasalConstraints(FemModel *femmodel)
Definition: EnthalpyAnalysis.cpp:1670
EnthalpyAnalysis::GetBConduct
void GetBConduct(IssmDouble *B, Element *element, IssmDouble *xyz_list, Gauss *gauss)
Definition: EnthalpyAnalysis.cpp:1452
Parameters
Declaration of Parameters class.
Definition: Parameters.h:18
Constraints
Declaration of Constraints class.
Definition: Constraints.h:13
EnthalpyAnalysis::CreateJacobianMatrix
ElementMatrix * CreateJacobianMatrix(Element *element)
Definition: EnthalpyAnalysis.cpp:554
Elements
Declaration of Elements class.
Definition: Elements.h:17
EnthalpyAnalysis::ComputeBasalMeltingrate
static void ComputeBasalMeltingrate(FemModel *femmodel)
Definition: EnthalpyAnalysis.cpp:355
EnthalpyAnalysis
Definition: EnthalpyAnalysis.h:12
EnthalpyAnalysis::CreateKMatrixVolume
ElementMatrix * CreateKMatrixVolume(Element *element)
Definition: EnthalpyAnalysis.cpp:572
EnthalpyAnalysis::GradientJ
void GradientJ(Vector< IssmDouble > *gradient, Element *element, int control_type, int control_index)
Definition: EnthalpyAnalysis.cpp:1523
EnthalpyAnalysis::GetThermalBasalCondition
static int GetThermalBasalCondition(Element *element, IssmDouble enthalpy, IssmDouble enthalpy_up, IssmDouble pressure, IssmDouble pressure_up, IssmDouble watercolumn, IssmDouble meltingrate)
Definition: EnthalpyAnalysis.cpp:1484
EnthalpyAnalysis::PostProcessing
static void PostProcessing(FemModel *femmodel)
Definition: EnthalpyAnalysis.cpp:1638
EnthalpyAnalysis::UpdateConstraints
void UpdateConstraints(FemModel *femmodel)
Definition: EnthalpyAnalysis.cpp:1699
EnthalpyAnalysis::CreatePVectorShelf
ElementVector * CreatePVectorShelf(Element *element)
Definition: EnthalpyAnalysis.cpp:1022
EnthalpyAnalysis::CreatePVectorVolume
ElementVector * CreatePVectorVolume(Element *element)
Definition: EnthalpyAnalysis.cpp:788
EnthalpyAnalysis::CreatePVectorSheet
ElementVector * CreatePVectorSheet(Element *element)
Definition: EnthalpyAnalysis.cpp:919
Element
Definition: Element.h:41
EnthalpyAnalysis::GetWetIceConductivity
static IssmDouble GetWetIceConductivity(Element *element, IssmDouble enthalpy, IssmDouble pressure)
Definition: EnthalpyAnalysis.cpp:1514
Analysis.h
abstract class for Analysis objects
EnthalpyAnalysis::DrainWaterfraction
static void DrainWaterfraction(FemModel *femmodel)
Definition: EnthalpyAnalysis.cpp:1074
EnthalpyAnalysis::InputUpdateFromSolution
void InputUpdateFromSolution(IssmDouble *solution, Element *element)
Definition: EnthalpyAnalysis.cpp:1526
EnthalpyAnalysis::GetBasalConstraints
static void GetBasalConstraints(Vector< IssmDouble > *vec_spc, Element *element)
Definition: EnthalpyAnalysis.cpp:1289
EnthalpyAnalysis::CreateConstraints
void CreateConstraints(Constraints *constraints, IoModel *iomodel)
Definition: EnthalpyAnalysis.cpp:10
EnthalpyAnalysis::TMeltingPoint
static IssmDouble TMeltingPoint(Element *element, IssmDouble pressure)
Definition: EnthalpyAnalysis.cpp:1663
EnthalpyAnalysis::DofsPerNode
int DofsPerNode(int **doflist, int domaintype, int approximation)
Definition: EnthalpyAnalysis.cpp:98
EnthalpyAnalysis::CreatePVector
ElementVector * CreatePVector(Element *element)
Definition: EnthalpyAnalysis.cpp:771
EnthalpyAnalysis::CreateDVector
ElementVector * CreateDVector(Element *element)
Definition: EnthalpyAnalysis.cpp:550
EnthalpyAnalysis::CreateKMatrixShelf
ElementMatrix * CreateKMatrixShelf(Element *element)
Definition: EnthalpyAnalysis.cpp:723
EnthalpyAnalysis::ComputeWaterfractionDrainage
static void ComputeWaterfractionDrainage(FemModel *femmodel)
Definition: EnthalpyAnalysis.cpp:1080
Inputs2
Declaration of Inputs class.
Definition: Inputs2.h:23
EnthalpyAnalysis::GetBasalConstraintsSteadystate
static void GetBasalConstraintsSteadystate(Vector< IssmDouble > *vec_spc, Element *element)
Definition: EnthalpyAnalysis.cpp:1307
EnthalpyAnalysis::DrainageUpdateEnthalpy
static void DrainageUpdateEnthalpy(FemModel *femmodel)
Definition: EnthalpyAnalysis.cpp:1164
EnthalpyAnalysis::EnthalpyDiffusionParameter
static IssmDouble EnthalpyDiffusionParameter(Element *element, IssmDouble enthalpy, IssmDouble pressure)
Definition: EnthalpyAnalysis.cpp:1204
EnthalpyAnalysis::CreateKMatrix
ElementMatrix * CreateKMatrix(Element *element)
Definition: EnthalpyAnalysis.cpp:557
FemModel
Definition: FemModel.h:31
EnthalpyAnalysis::Core
void Core(FemModel *femmodel)
Definition: EnthalpyAnalysis.cpp:531
EnthalpyAnalysis::UpdateElements
void UpdateElements(Elements *elements, Inputs2 *inputs2, IoModel *iomodel, int analysis_counter, int analysis_type)
Definition: EnthalpyAnalysis.cpp:101
Loads
Declaration of Loads class.
Definition: Loads.h:16
EnthalpyAnalysis::PureIceEnthalpy
static IssmDouble PureIceEnthalpy(Element *element, IssmDouble pressure)
Definition: EnthalpyAnalysis.cpp:1656
EnthalpyAnalysis::GetBasalConstraintsTransient
static void GetBasalConstraintsTransient(Vector< IssmDouble > *vec_spc, Element *element)
Definition: EnthalpyAnalysis.cpp:1378
ElementVector
Definition: ElementVector.h:20
EnthalpyAnalysis::EnthalpyDiffusionParameterVolume
static IssmDouble EnthalpyDiffusionParameterVolume(Element *element, int enthalpy_enum)
Definition: EnthalpyAnalysis.cpp:1215
IoModel
Definition: IoModel.h:48
EnthalpyAnalysis::UpdateParameters
void UpdateParameters(Parameters *parameters, IoModel *iomodel, int solution_enum, int analysis_enum)
Definition: EnthalpyAnalysis.cpp:267
ElementMatrix
Definition: ElementMatrix.h:19
Vector< IssmDouble >
EnthalpyAnalysis::ApplyBasalConstraints
static void ApplyBasalConstraints(IssmDouble *serial_spc, Element *element)
Definition: EnthalpyAnalysis.cpp:309
Gauss
Definition: Gauss.h:8
Analysis
Definition: Analysis.h:30
EnthalpyAnalysis::GetSolutionFromInputs
void GetSolutionFromInputs(Vector< IssmDouble > *solution, Element *element)
Definition: EnthalpyAnalysis.cpp:1481
femmodel
FemModel * femmodel
Definition: esmfbinders.cpp:16