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

Last change on this file since 20500 was 20500, checked in by Mathieu Morlighem, 9 years ago

merged trunk-jpl and trunk for revision 20497

File size: 2.8 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 void Echo();
49 void DeepEcho();
50 int Id();
51 int ObjectEnum();
52 Object* copy();
53 void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
54 /*}}}*/
55 /*Update virtual functions resolution: {{{*/
56 void InputUpdateFromVector(IssmDouble* vector, int name, int type);
57 void InputUpdateFromMatrixDakota(IssmDouble* matrix ,int nrows, int ncols, int name, int type);
58 void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type);
59 void InputUpdateFromConstant(IssmDouble constant, int name);
60 void InputUpdateFromConstant(int constant, int name);
61 void InputUpdateFromConstant(bool constant, int name);
62 void InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
63 /*}}}*/
64 /*Load virtual functions definitions: {{{*/
65 void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
66 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
67 void ResetHooks();
68 void CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
69 void CreatePVector(Vector<IssmDouble>* pf);
70 void CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
71 void GetNodesSidList(int* sidlist);
72 void GetNodesLidList(int* lidlist);
73 int GetNumberOfNodes(void);
74 bool IsPenalty(void);
75 void PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
76 void PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
77 void PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
78 void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
79 bool InAnalysis(int analysis_type);
80 /*}}}*/
81
82 ElementVector* CreatePVectorMoulin(void);
83};
84
85#endif /* _MOULIN_H_ */
Note: See TracBrowser for help on using the repository browser.