source: issm/trunk/src/c/classes/Loads/Moulin.h@ 23189

Last change on this file since 23189 was 23189, checked in by Mathieu Morlighem, 6 years ago

merged trunk-jpl and trunk for revision 23187

File size: 2.9 KB
Line 
1/*!\file Moulin.h
2 * \brief: header file for pengrid object */
3
4#ifndef _MOULIN_H_
5#define _MOULIN_H_
6
7/*Headers:*/
8/*{{{*/
9#ifdef HAVE_CONFIG_H
10#include <config.h>
11#else
12#error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
13#endif
14#include "./Load.h"
15class Hook;
16class Inputs;
17class Parameters;
18class IoModel;
19/*}}}*/
20
21class Moulin: public Load{
22
23 private:
24
25 int id;
26 int analysis_type;
27
28 /*Hooks*/
29 Hook* hnode; //hook to 1 node
30 Hook* helement; //hook to 1 element
31 Hook* hmatpar; //hook to 1 matpar
32
33 /*Corresponding fields*/
34 Node *node;
35 Element *element;
36 Matpar *matpar;
37
38 Parameters* parameters; //pointer to solution parameters
39
40 public:
41
42 /*Moulin constructors, destructors {{{*/
43 Moulin();
44 Moulin(int index, int id, IoModel* iomodel,int analysis_type);
45 ~Moulin();
46 /*}}}*/
47 /*Object virtual functions definitions:{{{ */
48 Object* copy();
49 void DeepEcho();
50 void Echo();
51 int Id();
52 void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
53 int ObjectEnum();
54 /*}}}*/
55 /*Update virtual functions resolution: {{{*/
56 void InputUpdateFromConstant(IssmDouble constant, int name);
57 void InputUpdateFromConstant(int constant, int name);
58 void InputUpdateFromConstant(bool constant, int name);
59 void InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
60 void InputUpdateFromMatrixDakota(IssmDouble* matrix ,int nrows, int ncols, int name, int type);
61 void InputUpdateFromVector(IssmDouble* vector, int name, int type);
62 void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
63 /*}}}*/
64 /*Load virtual functions definitions: {{{*/
65 void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
66 void CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
67 void CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
68 void CreatePVector(Vector<IssmDouble>* pf);
69 void GetNodesSidList(int* sidlist);
70 void GetNodesLidList(int* lidlist);
71 int GetNumberOfNodes(void);
72 bool InAnalysis(int analysis_type);
73 bool IsPenalty(void);
74 void PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
75 void PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
76 void PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
77 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
78 void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
79 void ResetHooks();
80 /*}}}*/
81
82 ElementVector* CreatePVectorHydrologyShakti(void);
83 ElementVector* CreatePVectorHydrologyDCInefficient(void);
84 ElementVector* CreatePVectorHydrologyDCEfficient(void);
85};
86
87#endif /* _MOULIN_H_ */
Note: See TracBrowser for help on using the repository browser.