Ice Sheet System Model  4.18
Code documentation
Analysis.h
Go to the documentation of this file.
1 
5 #ifndef _ANALYSIS_H_
6 #define _ANALYSIS_H_
7 
8 #include "../toolkits/objects/toolkitobjects.h"
9 
10 // Looks like AD runs without AMPI are missing commmpi.h
11 // Conditionally including the header
12 
13 #if !defined(_HAVE_MPI_) && !defined(_HAVE_PETSC_MPI_)
14 #include "../toolkits/mpi/commops/commops.h"
15 #endif
16 
17 class Parameters;
18 class Inputs2;
19 class IoModel;
20 class Elements;
21 class Nodes;
22 class Constraints;
23 class Loads;
24 class Element;
25 class ElementVector;
26 class ElementMatrix;
27 class Gauss;
28 class FemModel;
29 
30 class Analysis{
31 
32  public:
33  /*Constructor/Destructor*/
34  virtual ~Analysis(){};
35 
36  /*Model processing*/
37  virtual void CreateConstraints(Constraints* constraints,IoModel* iomodel)=0;
38  virtual void CreateLoads(Loads* loads, IoModel* iomodel)=0;
39  virtual void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false)=0;
40  virtual int DofsPerNode(int** doflist,int domaintype,int approximation)=0;
41  virtual void UpdateElements(Elements* elements,Inputs2* inputs2,IoModel* iomodel,int analysis_counter,int analysis_type)=0;
42  virtual void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum)=0;
43 
44  /*Finite element Analysis*/
45  virtual void Core(FemModel* femmodel)=0;
46  virtual ElementVector* CreateDVector(Element* element)=0;
48  virtual ElementMatrix* CreateKMatrix(Element* element)=0;
49  virtual ElementVector* CreatePVector(Element* element)=0;
50  virtual void GetSolutionFromInputs(Vector<IssmDouble>* solution,Element* element)=0;
51  virtual void GradientJ(Vector<IssmDouble>* gradient,Element* element,int control_type,int control_index)=0;
52  virtual void InputUpdateFromSolution(IssmDouble* solution,Element* element)=0;
54 };
55 #endif
Analysis::Core
virtual void Core(FemModel *femmodel)=0
IssmDouble
double IssmDouble
Definition: types.h:37
Nodes
Declaration of Nodes class.
Definition: Nodes.h:19
Analysis::CreateConstraints
virtual void CreateConstraints(Constraints *constraints, IoModel *iomodel)=0
Parameters
Declaration of Parameters class.
Definition: Parameters.h:18
Constraints
Declaration of Constraints class.
Definition: Constraints.h:13
Elements
Declaration of Elements class.
Definition: Elements.h:17
Analysis::UpdateElements
virtual void UpdateElements(Elements *elements, Inputs2 *inputs2, IoModel *iomodel, int analysis_counter, int analysis_type)=0
Analysis::CreatePVector
virtual ElementVector * CreatePVector(Element *element)=0
Element
Definition: Element.h:41
Analysis::CreateLoads
virtual void CreateLoads(Loads *loads, IoModel *iomodel)=0
Analysis::GradientJ
virtual void GradientJ(Vector< IssmDouble > *gradient, Element *element, int control_type, int control_index)=0
Analysis::DofsPerNode
virtual int DofsPerNode(int **doflist, int domaintype, int approximation)=0
Analysis::~Analysis
virtual ~Analysis()
Definition: Analysis.h:34
Inputs2
Declaration of Inputs class.
Definition: Inputs2.h:23
Analysis::InputUpdateFromSolution
virtual void InputUpdateFromSolution(IssmDouble *solution, Element *element)=0
FemModel
Definition: FemModel.h:31
Analysis::GetSolutionFromInputs
virtual void GetSolutionFromInputs(Vector< IssmDouble > *solution, Element *element)=0
Loads
Declaration of Loads class.
Definition: Loads.h:16
Analysis::CreateDVector
virtual ElementVector * CreateDVector(Element *element)=0
ElementVector
Definition: ElementVector.h:20
IoModel
Definition: IoModel.h:48
ElementMatrix
Definition: ElementMatrix.h:19
Vector< IssmDouble >
Analysis::UpdateParameters
virtual void UpdateParameters(Parameters *parameters, IoModel *iomodel, int solution_enum, int analysis_enum)=0
Gauss
Definition: Gauss.h:8
Analysis::UpdateConstraints
virtual void UpdateConstraints(FemModel *femmodel)=0
Analysis
Definition: Analysis.h:30
Analysis::CreateJacobianMatrix
virtual ElementMatrix * CreateJacobianMatrix(Element *element)=0
Analysis::CreateNodes
virtual void CreateNodes(Nodes *nodes, IoModel *iomodel, bool isamr=false)=0
Analysis::CreateKMatrix
virtual ElementMatrix * CreateKMatrix(Element *element)=0
femmodel
FemModel * femmodel
Definition: esmfbinders.cpp:16