Changeset 18930 for issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.h
- Timestamp:
- 12/04/14 10:34:36 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.h
r18659 r18930 14 14 public: 15 15 /*Model processing*/ 16 int DofsPerNode(int** doflist,int domaintype,int approximation);17 void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);18 void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);19 void CreateNodes(Nodes* nodes,IoModel* iomodel);20 16 void CreateConstraints(Constraints* constraints,IoModel* iomodel); 21 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 22 23 23 /*Finite element Analysis*/ 24 void Core(FemModel* femmodel); 25 ElementVector* CreateDVector(Element* element); 26 ElementMatrix* CreateJacobianMatrix(Element* element); 27 ElementMatrix* CreateKMatrix(Element* element); 28 ElementMatrix* CreateKMatrixVolume(Element* element); 29 ElementMatrix* CreateKMatrixShelf(Element* element); 30 ElementVector* CreatePVector(Element* element); 31 ElementVector* CreatePVectorVolume(Element* element); 32 ElementVector* CreatePVectorSheet(Element* element); 33 ElementVector* CreatePVectorShelf(Element* element); 34 void GetBConduct(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss); 35 void GetBAdvec(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss); 36 void GetBAdvecprime(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss); 37 void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element); 38 void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index); 39 void InputUpdateFromSolution(IssmDouble* solution,Element* element); 40 void UpdateConstraints(FemModel* femmodel); 41 42 /*Modules*/ 43 static void PostProcessing(FemModel* femmodel); 44 static void ComputeBasalMeltingrate(FemModel* femmodel); 45 static void ComputeBasalMeltingrate(Element* element); 46 static void DrainWaterfraction(FemModel* femmodel); 47 static void DrainWaterfractionIcecolumn(Element* element); 48 static void DrainWaterfraction(Element* element, IssmDouble* pdrainrate_element); 49 static void UpdateBasalConstraints(FemModel* femmodel); 50 static void ApplyBasalConstraints(IssmDouble* serial_spc,Element* element); 51 static void GetBasalConstraints(Vector<IssmDouble>* vec_spc,Element* element); 52 static void GetBasalConstraintsTransient(Vector<IssmDouble>* vec_spc,Element* element); 53 static void GetBasalConstraintsSteadystate(Vector<IssmDouble>* vec_spc,Element* element); 54 static int GetThermalBasalCondition(Element* element, IssmDouble enthalpy, IssmDouble enthalpy_up, IssmDouble pressure, IssmDouble pressure_up, IssmDouble watercolumn, IssmDouble meltingrate); 55 static IssmDouble GetWetIceConductivity(Element* element, IssmDouble enthalpy, IssmDouble pressure); 56 57 58 /*Intermediaries*/ 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); 59 40 static IssmDouble EnthalpyDiffusionParameter(Element* element,IssmDouble enthalpy,IssmDouble pressure); 60 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); 61 54 static IssmDouble PureIceEnthalpy(Element* element,IssmDouble pressure); 62 55 static IssmDouble TMeltingPoint(Element* element,IssmDouble pressure); 56 static void UpdateBasalConstraints(FemModel* femmodel); 57 void UpdateConstraints(FemModel* femmodel); 63 58 }; 64 59 #endif
Note:
See TracChangeset
for help on using the changeset viewer.