source: issm/branches/trunk-larour-NatGeoScience2016/src/c/analyses/EnthalpyAnalysis.h@ 21759

Last change on this file since 21759 was 21759, checked in by Eric.Larour, 8 years ago

CHG: merged branch back to trunk-jpl 21754.

File size: 3.4 KB
Line 
1/*! \file EnthalpyAnalysis.h
2 * \brief: header file for generic external result object
3 */
4
5#ifndef _EnthalpyAnalysis_
6#define _EnthalpyAnalysis_
7
8/*Headers*/
9#include "./Analysis.h"
10#include "../classes/classes.h"
11
12class 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);
19 int DofsPerNode(int** doflist,int domaintype,int approximation);
20 void UpdateElements(Elements* elements,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);
25 static void ComputeBasalMeltingrate(FemModel* femmodel);
26 static void ComputeBasalMeltingrate(Element* element);
27 void Core(FemModel* femmodel);
28 ElementVector* CreateDVector(Element* element);
29 ElementMatrix* CreateJacobianMatrix(Element* element);
30 ElementMatrix* CreateKMatrix(Element* element);
31 ElementMatrix* CreateKMatrixVolume(Element* element);
32 ElementMatrix* CreateKMatrixShelf(Element* element);
33 ElementVector* CreatePVector(Element* element);
34 ElementVector* CreatePVectorVolume(Element* element);
35 ElementVector* CreatePVectorSheet(Element* element);
36 ElementVector* CreatePVectorShelf(Element* element);
37 static void DrainWaterfraction(FemModel* femmodel);
38 static void ComputeWaterfractionDrainage(FemModel* femmodel);
39 static void DrainageUpdateWatercolumn(FemModel* femmodel);
40 static void DrainageUpdateEnthalpy(FemModel* femmodel);
41 static IssmDouble EnthalpyDiffusionParameter(Element* element,IssmDouble enthalpy,IssmDouble pressure);
42 static IssmDouble EnthalpyDiffusionParameterVolume(Element* element,int enthalpy_enum);
43 void GetBAdvec(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
44 void GetBAdvecprime(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
45 static void GetBasalConstraints(Vector<IssmDouble>* vec_spc,Element* element);
46 static void GetBasalConstraintsSteadystate(Vector<IssmDouble>* vec_spc,Element* element);
47 static void GetBasalConstraintsTransient(Vector<IssmDouble>* vec_spc,Element* element);
48 void GetBConduct(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
49 void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
50 static int GetThermalBasalCondition(Element* element, IssmDouble enthalpy, IssmDouble enthalpy_up, IssmDouble pressure, IssmDouble pressure_up, IssmDouble watercolumn, IssmDouble meltingrate);
51 static IssmDouble GetWetIceConductivity(Element* element, IssmDouble enthalpy, IssmDouble pressure);
52 void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
53 void InputUpdateFromSolution(IssmDouble* solution,Element* element);
54 static void PostProcessing(FemModel* femmodel);
55 static IssmDouble PureIceEnthalpy(Element* element,IssmDouble pressure);
56 static IssmDouble TMeltingPoint(Element* element,IssmDouble pressure);
57 static void UpdateBasalConstraints(FemModel* femmodel);
58 void UpdateConstraints(FemModel* femmodel);
59};
60#endif
Note: See TracBrowser for help on using the repository browser.