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

Last change on this file since 24313 was 24313, checked in by Mathieu Morlighem, 5 years ago

merged trunk-jpl and trunk for revision 24310

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
27 /*Hooks*/
28 Hook* hnode; //hook to 1 node
29 Hook* hvertex; //hook to 1 vertex
30 Hook* helement; //hook to 1 element
31
32 /*Corresponding fields*/
33 Node *node;
34 Vertex *vertex;
35 Element *element;
36
37 Parameters* parameters; //pointer to solution parameters
38
39 public:
40
41 /*Moulin constructors, destructors {{{*/
42 Moulin();
43 Moulin(int index, int id, IoModel* iomodel);
44 ~Moulin();
45 /*}}}*/
46 /*Object virtual functions definitions:{{{ */
47 Object* copy();
48 void DeepEcho();
49 void Echo();
50 int Id();
51 void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
52 int ObjectEnum();
53 /*}}}*/
54 /*Update virtual functions resolution: {{{*/
55 void InputUpdateFromConstant(IssmDouble constant, int name);
56 void InputUpdateFromConstant(int constant, int name);
57 void InputUpdateFromConstant(bool constant, int name);
58 void InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
59 void InputUpdateFromMatrixDakota(IssmDouble* matrix ,int nrows, int ncols, int name, int type);
60 void InputUpdateFromVector(IssmDouble* vector, int name, int type);
61 void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
62 /*}}}*/
63 /*Load virtual functions definitions: {{{*/
64 void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
65 void CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
66 void CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
67 void CreatePVector(Vector<IssmDouble>* pf);
68 void GetNodesSidList(int* sidlist);
69 void GetNodesLidList(int* lidlist);
70 int GetNumberOfNodes(void);
71 bool IsPenalty(void);
72 void PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
73 void PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
74 void PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
75 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
76 void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
77 void ResetHooks();
78 /*}}}*/
79
80 ElementMatrix* CreateKMatrixHydrologyGlaDS(void);
81 ElementVector* CreatePVectorHydrologyShakti(void);
82 ElementVector* CreatePVectorHydrologyGlaDS(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.