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

#include <ExtrudeFromBaseAnalysis.h>

Inheritance diagram for ExtrudeFromBaseAnalysis:
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 ExtrudeFromBaseAnalysis.h.

Member Function Documentation

◆ CreateConstraints()

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

Implements Analysis.

Definition at line 8 of file ExtrudeFromBaseAnalysis.cpp.

8  {/*{{{*/
9 }/*}}}*/

◆ CreateLoads()

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

Implements Analysis.

Definition at line 10 of file ExtrudeFromBaseAnalysis.cpp.

10  {/*{{{*/
11 }/*}}}*/

◆ CreateNodes()

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

Implements Analysis.

Definition at line 12 of file ExtrudeFromBaseAnalysis.cpp.

12  {/*{{{*/
13 
15 
16 }/*}}}*/

◆ DofsPerNode()

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

Implements Analysis.

Definition at line 17 of file ExtrudeFromBaseAnalysis.cpp.

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

◆ UpdateElements()

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

Implements Analysis.

Definition at line 20 of file ExtrudeFromBaseAnalysis.cpp.

20  {/*{{{*/
21 
22  int counter=0;
23  for(int i=0;i<iomodel->numberofelements;i++){
24  if(iomodel->my_elements[i]){
25  Element* element=(Element*)elements->GetObjectByOffset(counter);
26  element->Update(inputs2,i,iomodel,analysis_counter,analysis_type,P1Enum);
27  counter++;
28  }
29  }
30 
31  if(iomodel->domaintype==Domain2DverticalEnum){
32  iomodel->FetchDataToInput(inputs2,elements,"md.mesh.vertexonbase",MeshVertexonbaseEnum);
33  }
34 }/*}}}*/

◆ UpdateParameters()

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

Implements Analysis.

Definition at line 35 of file ExtrudeFromBaseAnalysis.cpp.

35  {/*{{{*/
36 }/*}}}*/

◆ Core()

void ExtrudeFromBaseAnalysis::Core ( FemModel femmodel)
virtual

Implements Analysis.

Definition at line 39 of file ExtrudeFromBaseAnalysis.cpp.

39  {/*{{{*/
40  _error_("not implemented");
41 }/*}}}*/

◆ CreateDVector()

ElementVector * ExtrudeFromBaseAnalysis::CreateDVector ( Element element)
virtual

Implements Analysis.

Definition at line 42 of file ExtrudeFromBaseAnalysis.cpp.

42  {/*{{{*/
43  /*Default, return NULL*/
44  return NULL;
45 }/*}}}*/

◆ CreateJacobianMatrix()

ElementMatrix * ExtrudeFromBaseAnalysis::CreateJacobianMatrix ( Element element)
virtual

Implements Analysis.

Definition at line 46 of file ExtrudeFromBaseAnalysis.cpp.

46  {/*{{{*/
47 _error_("Not implemented");
48 }/*}}}*/

◆ CreateKMatrix()

ElementMatrix * ExtrudeFromBaseAnalysis::CreateKMatrix ( Element element)
virtual

Implements Analysis.

Definition at line 49 of file ExtrudeFromBaseAnalysis.cpp.

49  {/*{{{*/
50 
51  /*Intermediaries */
52  IssmDouble Jdet,D;
53  IssmDouble *xyz_list = NULL;
54 
55  /*Get dimension*/
56  int dim;
57  element->FindParam(&dim,DomainDimensionEnum);
58 
59  /*Fetch number of nodes and dof for this finite element*/
60  int numnodes = element->GetNumberOfNodes();
61 
62  /*Initialize Element vector and other vectors*/
63  ElementMatrix* Ke = element->NewElementMatrix();
64  IssmDouble* dbasis = xNew<IssmDouble>(dim*numnodes);
65 
66  /*Retrieve all inputs and parameters*/
67  element->GetVerticesCoordinates(&xyz_list);
68 
69  /* Start looping on the number of gaussian points: */
70  Gauss* gauss=element->NewGauss(2);
71  for(int ig=gauss->begin();ig<gauss->end();ig++){
72  gauss->GaussPoint(ig);
73 
74  element->JacobianDeterminant(&Jdet,xyz_list,gauss);
75  D=gauss->weight*Jdet;
76  element->NodalFunctionsDerivatives(dbasis,xyz_list,gauss);
77 
78  for(int i=0;i<numnodes;i++){
79  for(int j=0;j<numnodes;j++){
80  Ke->values[i*numnodes+j] += gauss->weight*Jdet*(dbasis[(dim-1)*numnodes+i]*dbasis[(dim-1)*numnodes+j]);
81  }
82  }
83  }
84 
85  /*Clean up and return*/
86  xDelete<IssmDouble>(xyz_list);
87  xDelete<IssmDouble>(dbasis);
88  delete gauss;
89  return Ke;
90 }/*}}}*/

◆ CreatePVector()

ElementVector * ExtrudeFromBaseAnalysis::CreatePVector ( Element element)
virtual

Implements Analysis.

Definition at line 91 of file ExtrudeFromBaseAnalysis.cpp.

91  {/*{{{*/
92  return NULL;
93 }/*}}}*/

◆ GetSolutionFromInputs()

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

Implements Analysis.

Definition at line 94 of file ExtrudeFromBaseAnalysis.cpp.

94  {/*{{{*/
95  _error_("not implemented yet");
96 }/*}}}*/

◆ GradientJ()

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

Implements Analysis.

Definition at line 97 of file ExtrudeFromBaseAnalysis.cpp.

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

◆ InputUpdateFromSolution()

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

Implements Analysis.

Definition at line 100 of file ExtrudeFromBaseAnalysis.cpp.

100  {/*{{{*/
101 
102  int inputenum;
103  element->FindParam(&inputenum,InputToExtrudeEnum);
104  element->InputUpdateFromSolutionOneDof(solution,inputenum);
105 }/*}}}*/

◆ UpdateConstraints()

void ExtrudeFromBaseAnalysis::UpdateConstraints ( FemModel femmodel)
virtual

Implements Analysis.

Definition at line 106 of file ExtrudeFromBaseAnalysis.cpp.

106  {/*{{{*/
107  /*Default, do nothing*/
108  return;
109 }/*}}}*/

The documentation for this class was generated from the following files:
IssmDouble
double IssmDouble
Definition: types.h:37
Element::GetNumberOfNodes
virtual int GetNumberOfNodes(void)=0
ExtrudeFromBaseAnalysisEnum
@ ExtrudeFromBaseAnalysisEnum
Definition: EnumDefinitions.h:1058
Element::FindParam
void FindParam(bool *pvalue, int paramenum)
Definition: Element.cpp:933
MeshVertexonbaseEnum
@ MeshVertexonbaseEnum
Definition: EnumDefinitions.h:653
IoModel::my_elements
bool * my_elements
Definition: IoModel.h:66
ExtrudeFromBaseAnalysis::CreateNodes
void CreateNodes(Nodes *nodes, IoModel *iomodel, bool isamr=false)
Definition: ExtrudeFromBaseAnalysis.cpp:12
Element
Definition: Element.h:41
P1Enum
@ P1Enum
Definition: EnumDefinitions.h:662
IoModel::numberofelements
int numberofelements
Definition: IoModel.h:96
InputToExtrudeEnum
@ InputToExtrudeEnum
Definition: EnumDefinitions.h:205
Element::NewGauss
virtual Gauss * NewGauss(void)=0
Element::InputUpdateFromSolutionOneDof
virtual void InputUpdateFromSolutionOneDof(IssmDouble *solution, int inputenum)=0
DomainDimensionEnum
@ DomainDimensionEnum
Definition: EnumDefinitions.h:123
Element::GetVerticesCoordinates
void GetVerticesCoordinates(IssmDouble **xyz_list)
Definition: Element.cpp:1446
_error_
#define _error_(StreamArgs)
Definition: exceptions.h:49
Gauss::begin
virtual int begin(void)=0
DataSet::GetObjectByOffset
Object * GetObjectByOffset(int offset)
Definition: DataSet.cpp:334
Element::JacobianDeterminant
virtual void JacobianDeterminant(IssmDouble *Jdet, IssmDouble *xyz_list, Gauss *gauss)=0
Gauss::GaussPoint
virtual void GaussPoint(int ig)=0
Element::Update
virtual void Update(Inputs2 *inputs2, int index, IoModel *iomodel, int analysis_counter, int analysis_type, int finite_element)=0
IoModel::FetchDataToInput
void FetchDataToInput(Inputs2 *inputs2, Elements *elements, const char *vector_name, int input_enum)
Definition: IoModel.cpp:1651
Gauss::weight
IssmDouble weight
Definition: Gauss.h:11
IoModel::domaintype
int domaintype
Definition: IoModel.h:78
Domain2DverticalEnum
@ Domain2DverticalEnum
Definition: EnumDefinitions.h:535
ElementMatrix
Definition: ElementMatrix.h:19
Gauss
Definition: Gauss.h:8
Element::NodalFunctionsDerivatives
virtual void NodalFunctionsDerivatives(IssmDouble *dbasis, IssmDouble *xyz_list, Gauss *gauss)=0
ElementMatrix::values
IssmDouble * values
Definition: ElementMatrix.h:26
Element::NewElementMatrix
ElementMatrix * NewElementMatrix(int approximation_enum=NoneApproximationEnum)
Definition: Element.cpp:2497