Ice Sheet System Model  4.18
Code documentation
Public Member Functions
GiaAnalysis Class Reference

#include <GiaAnalysis.h>

Inheritance diagram for GiaAnalysis:
Analysis

Public Member Functions

void CreateConstraints (Constraints *constraints, IoModel *iomodel)
 
void CreateLoads (Loads *loads, IoModel *iomodel)
 
void CreateNodes (Nodes *nodes, IoModel *iomodel, bool isamr=false)
 
int DofsPerNode (int **doflist, int domaintype, int approximation)
 
void UpdateElements (Elements *elements, Inputs2 *inputs2, IoModel *iomodel, int analysis_counter, int analysis_type)
 
void UpdateParameters (Parameters *parameters, IoModel *iomodel, int solution_enum, int analysis_enum)
 
void Core (FemModel *femmodel)
 
ElementVectorCreateDVector (Element *element)
 
ElementMatrixCreateJacobianMatrix (Element *element)
 
ElementMatrixCreateKMatrix (Element *element)
 
ElementVectorCreatePVector (Element *element)
 
void GetSolutionFromInputs (Vector< IssmDouble > *solution, Element *element)
 
void GradientJ (Vector< IssmDouble > *gradient, Element *element, int control_type, int control_index)
 
void InputUpdateFromSolution (IssmDouble *solution, Element *element)
 
void UpdateConstraints (FemModel *femmodel)
 
- Public Member Functions inherited from Analysis
virtual ~Analysis ()
 

Detailed Description

Definition at line 11 of file GiaAnalysis.h.

Member Function Documentation

◆ CreateConstraints()

void GiaAnalysis::CreateConstraints ( Constraints constraints,
IoModel iomodel 
)
virtual

Implements Analysis.

Definition at line 8 of file GiaAnalysis.cpp.

8  {/*{{{*/
9  /*No constraints*/
10 }/*}}}*/

◆ CreateLoads()

void GiaAnalysis::CreateLoads ( Loads loads,
IoModel iomodel 
)
virtual

Implements Analysis.

Definition at line 11 of file GiaAnalysis.cpp.

11  {/*{{{*/
12  /*No loads*/
13 }/*}}}*/

◆ CreateNodes()

void GiaAnalysis::CreateNodes ( Nodes nodes,
IoModel iomodel,
bool  isamr = false 
)
virtual

Implements Analysis.

Definition at line 14 of file GiaAnalysis.cpp.

14  {/*{{{*/
15  ::CreateNodes(nodes,iomodel,GiaAnalysisEnum,P1Enum);
16 }/*}}}*/

◆ DofsPerNode()

int GiaAnalysis::DofsPerNode ( int **  doflist,
int  domaintype,
int  approximation 
)
virtual

Implements Analysis.

Definition at line 17 of file GiaAnalysis.cpp.

17  {/*{{{*/
18  return 1;
19 }/*}}}*/

◆ UpdateElements()

void GiaAnalysis::UpdateElements ( Elements elements,
Inputs2 inputs2,
IoModel iomodel,
int  analysis_counter,
int  analysis_type 
)
virtual

Implements Analysis.

Definition at line 20 of file GiaAnalysis.cpp.

20  {/*{{{*/
21 
22  int giamodel=0;
23  int nummodels=0;
24 
25  /*Update elements: */
26  int counter=0;
27  for(int i=0;i<iomodel->numberofelements;i++){
28  if(iomodel->my_elements[i]){
29  Element* element=(Element*)elements->GetObjectByOffset(counter);
30  element->Update(inputs2,i,iomodel,analysis_counter,analysis_type,P1Enum);
31  counter++;
32  }
33  }
34 
35  /*fetch gia model type: */
36  iomodel->FetchData(&giamodel,"md.gia.model");
37  if(giamodel==1){ //GiaIvins
38  iomodel->FetchDataToInput(inputs2,elements,"md.geometry.thickness",ThicknessEnum);
39  iomodel->FetchDataToInput(inputs2,elements,"md.gia.mantle_viscosity",GiaMantleViscosityEnum);
40  iomodel->FetchDataToInput(inputs2,elements,"md.gia.lithosphere_thickness",GiaLithosphereThicknessEnum);
41  iomodel->FetchDataToInput(inputs2,elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
42  }
43  else if(giamodel==2){ //GiaCaron: not implemneted yet
44  }
45  else if(giamodel==3){
46  /*take Ngia and Ugia from the offline models and plug into the element inputs:*/
47  iomodel->FetchDataToDatasetInput(inputs2,elements,"md.gia.Ngia",GiaMmeNgiaEnum);
48  iomodel->FetchDataToDatasetInput(inputs2,elements,"md.gia.Ugia",GiaMmeUgiaEnum);
49  }
50 }/*}}}*/

◆ UpdateParameters()

void GiaAnalysis::UpdateParameters ( Parameters parameters,
IoModel iomodel,
int  solution_enum,
int  analysis_enum 
)
virtual

Implements Analysis.

Definition at line 51 of file GiaAnalysis.cpp.

51  {/*{{{*/
52 
53  int giamodel;
54  IssmDouble modelid;
55  int nummodels;
56 
57  /*find gia model type: */
58  parameters->AddObject(iomodel->CopyConstantObject("md.gia.model",GiaModelEnum));
59  parameters->FindParam(&giamodel,GiaModelEnum);
60 
61  if(giamodel==1){ //GiaIvins
62  parameters->AddObject(iomodel->CopyConstantObject("md.gia.cross_section_shape",GiaCrossSectionShapeEnum));
63  parameters->AddObject(iomodel->CopyConstantObject("md.materials.lithosphere_shear_modulus",MaterialsLithosphereShearModulusEnum));
64  parameters->AddObject(iomodel->CopyConstantObject("md.materials.lithosphere_density",MaterialsLithosphereDensityEnum));
65  parameters->AddObject(iomodel->CopyConstantObject("md.materials.mantle_shear_modulus",MaterialsMantleShearModulusEnum));
66  parameters->AddObject(iomodel->CopyConstantObject("md.materials.mantle_density",MaterialsMantleDensityEnum));
67  }
68  else if(giamodel==2){ //GiaCaron
69  }
70  else if(giamodel==3){ //GiaMme
71 
72  parameters->AddObject(iomodel->CopyConstantObject("md.gia.nummodels",GiaNummodelsEnum));
73  parameters->FindParam(&nummodels,GiaNummodelsEnum);
74 
75  /*create double param, not int param, because Dakota will be updating it as
76  * a double potentially: */
77  iomodel->FetchData(&modelid,"md.gia.modelid");
78  parameters->AddObject(new DoubleParam(GiaModelidEnum,modelid));
79 
80  /*quick checks: */
81  if(nummodels<=0)_error_("giamme object in md.gia field should contain at least 1 ensemble model!");
82  if(modelid<=0 || modelid>nummodels)_error_("modelid field in giamme object of md.gia field should be between 1 and the number of ensemble runs!");
83  }
84 
85 
86 }/*}}}*/

◆ Core()

void GiaAnalysis::Core ( FemModel femmodel)
virtual

Implements Analysis.

Definition at line 89 of file GiaAnalysis.cpp.

89  {/*{{{*/
90  _error_("not implemented");
91 }/*}}}*/

◆ CreateDVector()

ElementVector * GiaAnalysis::CreateDVector ( Element element)
virtual

Implements Analysis.

Definition at line 92 of file GiaAnalysis.cpp.

92  {/*{{{*/
93  /*Default, return NULL*/
94  return NULL;
95 }/*}}}*/

◆ CreateJacobianMatrix()

ElementMatrix * GiaAnalysis::CreateJacobianMatrix ( Element element)
virtual

Implements Analysis.

Definition at line 96 of file GiaAnalysis.cpp.

96  {/*{{{*/
97 _error_("Not implemented");
98 }/*}}}*/

◆ CreateKMatrix()

ElementMatrix * GiaAnalysis::CreateKMatrix ( Element element)
virtual

Implements Analysis.

Definition at line 99 of file GiaAnalysis.cpp.

99  {/*{{{*/
100  _error_("not implemented yet");
101 }/*}}}*/

◆ CreatePVector()

ElementVector * GiaAnalysis::CreatePVector ( Element element)
virtual

Implements Analysis.

Definition at line 102 of file GiaAnalysis.cpp.

102  {/*{{{*/
103 _error_("not implemented yet");
104 }/*}}}*/

◆ GetSolutionFromInputs()

void GiaAnalysis::GetSolutionFromInputs ( Vector< IssmDouble > *  solution,
Element element 
)
virtual

Implements Analysis.

Definition at line 105 of file GiaAnalysis.cpp.

105  {/*{{{*/
106  _error_("not implemented yet");
107 }/*}}}*/

◆ GradientJ()

void GiaAnalysis::GradientJ ( Vector< IssmDouble > *  gradient,
Element element,
int  control_type,
int  control_index 
)
virtual

Implements Analysis.

Definition at line 108 of file GiaAnalysis.cpp.

108  {/*{{{*/
109  _error_("Not implemented yet");
110 }/*}}}*/

◆ InputUpdateFromSolution()

void GiaAnalysis::InputUpdateFromSolution ( IssmDouble solution,
Element element 
)
virtual

Implements Analysis.

Definition at line 111 of file GiaAnalysis.cpp.

111  {/*{{{*/
112  _error_("not implemented yet");
113 }/*}}}*/

◆ UpdateConstraints()

void GiaAnalysis::UpdateConstraints ( FemModel femmodel)
virtual

Implements Analysis.

Definition at line 114 of file GiaAnalysis.cpp.

114  {/*{{{*/
115  /*Default, do nothing*/
116  return;
117 }/*}}}*/

The documentation for this class was generated from the following files:
IssmDouble
double IssmDouble
Definition: types.h:37
MaskIceLevelsetEnum
@ MaskIceLevelsetEnum
Definition: EnumDefinitions.h:641
GiaModelEnum
@ GiaModelEnum
Definition: EnumDefinitions.h:155
IoModel::my_elements
bool * my_elements
Definition: IoModel.h:66
MaterialsMantleShearModulusEnum
@ MaterialsMantleShearModulusEnum
Definition: EnumDefinitions.h:258
Parameters::AddObject
void AddObject(Param *newparam)
Definition: Parameters.cpp:67
GiaAnalysis::CreateNodes
void CreateNodes(Nodes *nodes, IoModel *iomodel, bool isamr=false)
Definition: GiaAnalysis.cpp:14
Element
Definition: Element.h:41
P1Enum
@ P1Enum
Definition: EnumDefinitions.h:662
MaterialsLithosphereShearModulusEnum
@ MaterialsLithosphereShearModulusEnum
Definition: EnumDefinitions.h:256
IoModel::numberofelements
int numberofelements
Definition: IoModel.h:96
DoubleParam
Definition: DoubleParam.h:20
GiaMantleViscosityEnum
@ GiaMantleViscosityEnum
Definition: EnumDefinitions.h:590
IoModel::CopyConstantObject
Param * CopyConstantObject(const char *constant_name, int param_enum)
Definition: IoModel.cpp:418
GiaAnalysisEnum
@ GiaAnalysisEnum
Definition: EnumDefinitions.h:1084
IoModel::FetchData
void FetchData(bool *pboolean, const char *data_name)
Definition: IoModel.cpp:933
GiaLithosphereThicknessEnum
@ GiaLithosphereThicknessEnum
Definition: EnumDefinitions.h:589
MaterialsLithosphereDensityEnum
@ MaterialsLithosphereDensityEnum
Definition: EnumDefinitions.h:255
GiaMmeUgiaEnum
@ GiaMmeUgiaEnum
Definition: EnumDefinitions.h:546
GiaMmeNgiaEnum
@ GiaMmeNgiaEnum
Definition: EnumDefinitions.h:545
_error_
#define _error_(StreamArgs)
Definition: exceptions.h:49
DataSet::GetObjectByOffset
Object * GetObjectByOffset(int offset)
Definition: DataSet.cpp:334
Element::Update
virtual void Update(Inputs2 *inputs2, int index, IoModel *iomodel, int analysis_counter, int analysis_type, int finite_element)=0
Parameters::FindParam
void FindParam(bool *pinteger, int enum_type)
Definition: Parameters.cpp:262
MaterialsMantleDensityEnum
@ MaterialsMantleDensityEnum
Definition: EnumDefinitions.h:257
ThicknessEnum
@ ThicknessEnum
Definition: EnumDefinitions.h:840
IoModel::FetchDataToInput
void FetchDataToInput(Inputs2 *inputs2, Elements *elements, const char *vector_name, int input_enum)
Definition: IoModel.cpp:1651
IoModel::FetchDataToDatasetInput
void FetchDataToDatasetInput(Inputs2 *inputs2, Elements *elements, const char *vector_name, int input_enum)
Definition: IoModel.cpp:1735
GiaModelidEnum
@ GiaModelidEnum
Definition: EnumDefinitions.h:156
GiaCrossSectionShapeEnum
@ GiaCrossSectionShapeEnum
Definition: EnumDefinitions.h:158
GiaNummodelsEnum
@ GiaNummodelsEnum
Definition: EnumDefinitions.h:157