source: issm/trunk-jpl/src/c/classes/Loads/Numericalflux.h@ 19198

Last change on this file since 19198 was 19198, checked in by Eric.Larour, 10 years ago

CHG: re-introducing Marshalling routines in support of check pointing. Implemented
the dataset backbone, and the FemModel backbone. Now we have to bring back the low
level drivers for the classes.

File size: 3.9 KB
Line 
1/*!\file Numericalflux.h
2 * \brief: header file for icefront object
3 */
4
5#ifndef _NUMERICALFLUX_H_
6#define _NUMERICALFLUX_H_
7
8/*Headers:*/
9#include "./Load.h"
10class Hook;
11class Parameters;
12class IoModel;
13class Element;
14class Vertex;
15class ElementMatrix;
16class ElementVector;
17
18class Numericalflux: public Load {
19
20 public:
21 int id;
22 int analysis_type;
23 int flux_type;
24
25 /*Hooks*/
26 Hook *helement;
27 Hook *hnodes;
28 Hook *hvertices;
29
30 /*Corresponding fields*/
31 Element *element;
32 Vertex **vertices;
33 Node **nodes;
34 Parameters *parameters;
35
36 /*Numericalflux constructors,destructors {{{*/
37 Numericalflux();
38 Numericalflux(int numericalflux_id,int i,int index,IoModel* iomodel,int analysis_type);
39 ~Numericalflux();
40 /*}}}*/
41 /*Object virtual functions definitions:{{{ */
42 Object *copy();
43 void DeepEcho();
44 void Echo();
45 int Id();
46 int ObjectEnum();
47 void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction){ _error_("not implemented yet!"); };
48 /*}}}*/
49 /*Update virtual functions resolution: {{{*/
50 void InputUpdateFromConstant(IssmDouble constant, int name){/*Do nothing*/};
51 void InputUpdateFromConstant(int constant, int name){/*Do nothing*/};
52 void InputUpdateFromConstant(bool constant, int name){_error_("Not implemented yet!");}
53 void InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
54 void InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*Do nothing*/}
55 void InputUpdateFromVector(IssmDouble* vector, int name, int type){/*Do nothing*/}
56 void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*Do nothing*/}
57 /*}}}*/
58 /*Load virtual functions definitions: {{{*/
59 void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
60 void CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
61 void CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
62 void CreatePVector(Vector<IssmDouble>* pf);
63 void GetNodesLidList(int* lidlist);
64 void GetNodesSidList(int* sidlist);
65 int GetNumberOfNodes(void);
66 bool InAnalysis(int analysis_type);
67 bool IsPenalty(void);
68 void PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
69 void PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
70 void PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
71 void ResetHooks();
72 void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
73 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
74 /*}}}*/
75 /*Numericalflux management:{{{*/
76 ElementMatrix* CreateKMatrixAdjointBalancethickness(void);
77 ElementMatrix* CreateKMatrixAdjointBalancethicknessBoundary(void);
78 ElementMatrix* CreateKMatrixAdjointBalancethicknessInternal(void);
79 ElementMatrix* CreateKMatrixBalancethickness(void);
80 ElementMatrix* CreateKMatrixBalancethicknessBoundary(void);
81 ElementMatrix* CreateKMatrixBalancethicknessInternal(void);
82 ElementMatrix* CreateKMatrixMasstransport(void);
83 ElementMatrix* CreateKMatrixMasstransportBoundary(void);
84 ElementMatrix* CreateKMatrixMasstransportInternal(void);
85 ElementVector* CreatePVectorAdjointBalancethickness(void);
86 ElementVector* CreatePVectorBalancethickness(void);
87 ElementVector* CreatePVectorBalancethicknessBoundary(void);
88 ElementVector* CreatePVectorBalancethicknessInternal(void);
89 ElementVector* CreatePVectorMasstransport(void);
90 ElementVector* CreatePVectorMasstransportBoundary(void);
91 ElementVector* CreatePVectorMasstransportInternal(void);
92 void GetNormal(IssmDouble* normal,IssmDouble xyz_list[4][3]);
93 /*}}}*/
94
95};
96
97#endif /* _NUMERICALFLUX_H_ */
Note: See TracBrowser for help on using the repository browser.