Ice Sheet System Model  4.18
Code documentation
ExtrudeFromTopAnalysis.cpp
Go to the documentation of this file.
2 #include "../toolkits/toolkits.h"
3 #include "../classes/classes.h"
4 #include "../shared/shared.h"
5 #include "../modules/modules.h"
6 
7 /*Model processing*/
9 }/*}}}*/
10 void ExtrudeFromTopAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
11 }/*}}}*/
12 void ExtrudeFromTopAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
13 
15 
16 }/*}}}*/
17 int ExtrudeFromTopAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
18  return 1;
19 }/*}}}*/
20 void ExtrudeFromTopAnalysis::UpdateElements(Elements* elements,Inputs2* inputs2,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
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 }/*}}}*/
35 void ExtrudeFromTopAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
36 }/*}}}*/
37 
38 /*Finite Element Analysis*/
40  _error_("not implemented");
41 }/*}}}*/
43  /*Default, return NULL*/
44  return NULL;
45 }/*}}}*/
47 _error_("Not implemented");
48 }/*}}}*/
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 }/*}}}*/
92  return NULL;
93 }/*}}}*/
95  _error_("not implemented yet");
96 }/*}}}*/
97 void ExtrudeFromTopAnalysis::GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index){/*{{{*/
98  _error_("Not implemented yet");
99 }/*}}}*/
101 
102  int inputenum;
103  element->FindParam(&inputenum,InputToExtrudeEnum);
104  element->InputUpdateFromSolutionOneDof(solution,inputenum);
105 }/*}}}*/
107  /*Default, do nothing*/
108  return;
109 }/*}}}*/
ExtrudeFromTopAnalysis::UpdateElements
void UpdateElements(Elements *elements, Inputs2 *inputs2, IoModel *iomodel, int analysis_counter, int analysis_type)
Definition: ExtrudeFromTopAnalysis.cpp:20
ExtrudeFromTopAnalysis::CreateConstraints
void CreateConstraints(Constraints *constraints, IoModel *iomodel)
Definition: ExtrudeFromTopAnalysis.cpp:8
ExtrudeFromTopAnalysis::GradientJ
void GradientJ(Vector< IssmDouble > *gradient, Element *element, int control_type, int control_index)
Definition: ExtrudeFromTopAnalysis.cpp:97
IssmDouble
double IssmDouble
Definition: types.h:37
Nodes
Declaration of Nodes class.
Definition: Nodes.h:19
Element::GetNumberOfNodes
virtual int GetNumberOfNodes(void)=0
Element::FindParam
void FindParam(bool *pvalue, int paramenum)
Definition: Element.cpp:933
ExtrudeFromTopAnalysis::CreatePVector
ElementVector * CreatePVector(Element *element)
Definition: ExtrudeFromTopAnalysis.cpp:91
ExtrudeFromTopAnalysis::UpdateConstraints
void UpdateConstraints(FemModel *femmodel)
Definition: ExtrudeFromTopAnalysis.cpp:106
Parameters
Declaration of Parameters class.
Definition: Parameters.h:18
ExtrudeFromTopAnalysisEnum
@ ExtrudeFromTopAnalysisEnum
Definition: EnumDefinitions.h:1059
Constraints
Declaration of Constraints class.
Definition: Constraints.h:13
MeshVertexonbaseEnum
@ MeshVertexonbaseEnum
Definition: EnumDefinitions.h:653
Elements
Declaration of Elements class.
Definition: Elements.h:17
IoModel::my_elements
bool * my_elements
Definition: IoModel.h:66
Element
Definition: Element.h:41
ExtrudeFromTopAnalysis::Core
void Core(FemModel *femmodel)
Definition: ExtrudeFromTopAnalysis.cpp:39
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
ExtrudeFromTopAnalysis::CreateNodes
void CreateNodes(Nodes *nodes, IoModel *iomodel, bool isamr=false)
Definition: ExtrudeFromTopAnalysis.cpp:12
Element::InputUpdateFromSolutionOneDof
virtual void InputUpdateFromSolutionOneDof(IssmDouble *solution, int inputenum)=0
DomainDimensionEnum
@ DomainDimensionEnum
Definition: EnumDefinitions.h:123
ExtrudeFromTopAnalysis::CreateKMatrix
ElementMatrix * CreateKMatrix(Element *element)
Definition: ExtrudeFromTopAnalysis.cpp:49
Element::GetVerticesCoordinates
void GetVerticesCoordinates(IssmDouble **xyz_list)
Definition: Element.cpp:1446
Inputs2
Declaration of Inputs class.
Definition: Inputs2.h:23
ExtrudeFromTopAnalysis::CreateLoads
void CreateLoads(Loads *loads, IoModel *iomodel)
Definition: ExtrudeFromTopAnalysis.cpp:10
ExtrudeFromTopAnalysis::CreateJacobianMatrix
ElementMatrix * CreateJacobianMatrix(Element *element)
Definition: ExtrudeFromTopAnalysis.cpp:46
FemModel
Definition: FemModel.h:31
Loads
Declaration of Loads class.
Definition: Loads.h:16
_error_
#define _error_(StreamArgs)
Definition: exceptions.h:49
ExtrudeFromTopAnalysis::CreateDVector
ElementVector * CreateDVector(Element *element)
Definition: ExtrudeFromTopAnalysis.cpp:42
ExtrudeFromTopAnalysis.h
: header file for generic external result object
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
ExtrudeFromTopAnalysis::InputUpdateFromSolution
void InputUpdateFromSolution(IssmDouble *solution, Element *element)
Definition: ExtrudeFromTopAnalysis.cpp:100
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
ElementVector
Definition: ElementVector.h:20
Gauss::weight
IssmDouble weight
Definition: Gauss.h:11
IoModel
Definition: IoModel.h:48
ExtrudeFromTopAnalysis::UpdateParameters
void UpdateParameters(Parameters *parameters, IoModel *iomodel, int solution_enum, int analysis_enum)
Definition: ExtrudeFromTopAnalysis.cpp:35
IoModel::domaintype
int domaintype
Definition: IoModel.h:78
Domain2DverticalEnum
@ Domain2DverticalEnum
Definition: EnumDefinitions.h:535
ElementMatrix
Definition: ElementMatrix.h:19
ExtrudeFromTopAnalysis::GetSolutionFromInputs
void GetSolutionFromInputs(Vector< IssmDouble > *solution, Element *element)
Definition: ExtrudeFromTopAnalysis.cpp:94
Vector< IssmDouble >
ExtrudeFromTopAnalysis::DofsPerNode
int DofsPerNode(int **doflist, int domaintype, int approximation)
Definition: ExtrudeFromTopAnalysis.cpp:17
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
femmodel
FemModel * femmodel
Definition: esmfbinders.cpp:16