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

Last change on this file since 21243 was 18930, checked in by seroussi, 10 years ago

CHG: minor ordering

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 DrainWaterfraction(Element* element, IssmDouble* pdrainrate_element);
39 static void DrainWaterfractionIcecolumn(Element* element);
40 static IssmDouble EnthalpyDiffusionParameter(Element* element,IssmDouble enthalpy,IssmDouble pressure);
41 static IssmDouble EnthalpyDiffusionParameterVolume(Element* element,int enthalpy_enum);
42 void GetBAdvec(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
43 void GetBAdvecprime(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
44 static void GetBasalConstraints(Vector<IssmDouble>* vec_spc,Element* element);
45 static void GetBasalConstraintsSteadystate(Vector<IssmDouble>* vec_spc,Element* element);
46 static void GetBasalConstraintsTransient(Vector<IssmDouble>* vec_spc,Element* element);
47 void GetBConduct(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss);
48 void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element);
49 static int GetThermalBasalCondition(Element* element, IssmDouble enthalpy, IssmDouble enthalpy_up, IssmDouble pressure, IssmDouble pressure_up, IssmDouble watercolumn, IssmDouble meltingrate);
50 static IssmDouble GetWetIceConductivity(Element* element, IssmDouble enthalpy, IssmDouble pressure);
51 void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index);
52 void InputUpdateFromSolution(IssmDouble* solution,Element* element);
53 static void PostProcessing(FemModel* femmodel);
54 static IssmDouble PureIceEnthalpy(Element* element,IssmDouble pressure);
55 static IssmDouble TMeltingPoint(Element* element,IssmDouble pressure);
56 static void UpdateBasalConstraints(FemModel* femmodel);
57 void UpdateConstraints(FemModel* femmodel);
58};
59#endif
Note: See TracBrowser for help on using the repository browser.