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

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

CHG: hutter-> SIA macayeal->SSA pattyn->HO stokes->FS

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