source: issm/trunk-jpl/src/c/classes/Loads/Icefront.h@ 15567

Last change on this file since 15567 was 15567, checked in by Mathieu Morlighem, 12 years ago

CHG: MacAyeal -> SSA

File size: 3.6 KB
Line 
1/*!\file Icefront.h
2 * \brief: header file for icefront object
3 */
4
5#ifndef _ICEFRONT_H_
6#define _ICEFRONT_H_
7
8/*Headers:*/
9/*{{{*/
10#include "./Load.h"
11class Hook;
12class Inputs;
13class Parameters;
14class Matpar;
15class Node;
16class Element;
17class IoModel;
18class ElementVector;
19class Vertex;
20/*}}}*/
21
22class Icefront: public Load {
23
24 public:
25 int id;
26 int analysis_type;
27
28 /*hooks: */
29 Hook *hnodes;
30 Hook *hvertices;
31 Hook *helement;
32 Hook *hmatpar;
33
34 /*Corresponding fields*/
35 Matpar *matpar;
36 Node **nodes;
37 Vertex **vertices;
38 Element *element;
39
40 /*inputs and parameters: */
41 Inputs *inputs;
42 Parameters *parameters;
43
44 /*Icefront constructors, destructors: {{{*/
45 Icefront();
46 Icefront(int icefront_id,int i, IoModel* iomodel,int in_icefront_type, int analysis_type);
47 Icefront(int element_id,const char* element_type_in,Inputs* inputs_in,Matpar* matpar_in, int icefront_type, int in_analysis_type);
48 ~Icefront();
49 /*}}}*/
50 /*Object virtual functions definitions:{{{ */
51 void Echo();
52 void DeepEcho();
53 int Id();
54 int ObjectEnum();
55 Object* copy();
56 /*}}}*/
57 /*Update virtual functions definitions: {{{*/
58 void InputUpdateFromVector(IssmDouble* vector, int name, int type);
59 void InputUpdateFromVector(int* vector, int name, int type);
60 void InputUpdateFromVector(bool* vector, int name, int type);
61 void InputUpdateFromMatrixDakota(IssmDouble* matrix,int ncols,int nrows, int name, int type);
62 void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
63 void InputUpdateFromVectorDakota(int* vector, int name, int type);
64 void InputUpdateFromVectorDakota(bool* vector, int name, int type);
65 void InputUpdateFromConstant(IssmDouble constant, int name);
66 void InputUpdateFromConstant(int constant, int name);
67 void InputUpdateFromConstant(bool constant, int name);
68 void InputUpdateFromSolution(IssmDouble* solution);
69 void InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
70 /*}}}*/
71 /*Load virtual functions definitions: {{{*/
72 void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
73 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
74 void CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
75 void CreatePVector(Vector<IssmDouble>* pf);
76 void CreateJacobianMatrix(Matrix<IssmDouble>* Jff);
77 int GetNumberOfNodes(void);
78 void GetNodesSidList(int* sidlist);
79 bool IsPenalty(void);
80 void PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
81 void PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
82 void PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax);
83 void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int set1_enum,int set2_enum);
84 bool InAnalysis(int analysis_type);
85 /*}}}*/
86 /*Load management: {{{*/
87 void GetDofList(int** pdoflist,int approximation_enum,int setenum);
88 void GetSegmentNormal(IssmDouble* normal,IssmDouble xyz_list[2][3]);
89 void GetQuadNormal(IssmDouble* normal,IssmDouble xyz_list[4][3]);
90 #ifdef _HAVE_CONTROL_
91 ElementVector* CreatePVectorAdjointHoriz(void);
92 #endif
93 #ifdef _HAVE_DIAGNOSTIC_
94 ElementVector* CreatePVectorDiagnosticHoriz(void);
95 ElementVector* CreatePVectorDiagnosticSSA2d(void);
96 #endif
97 #ifdef _HAVE_3D_
98 ElementVector* CreatePVectorDiagnosticSSA3d(void);
99 ElementVector* CreatePVectorDiagnosticHO(void);
100 ElementVector* CreatePVectorDiagnosticFS(void);
101 #endif
102 /*}}}*/
103};
104
105#endif /* _ICEFRONT_H_ */
Note: See TracBrowser for help on using the repository browser.