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

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

CHG: elements and loads now have a pointer to vertices, this change is necessary because we are implementing quadratic elements and the number of nodes is not the same as the number of vertices. Vertices coordinates must be retrieved from the vertices, not the nodes

File size: 4.1 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/*{{{*/
10#include "./Load.h"
11class Hook;
12class Parameters;
13class Inputs;
14class IoModel;
15class ElementMatrix;
16class ElementVector;
17/*}}}*/
18
19class Numericalflux: public Load {
20
21 public:
22 int id;
23 int analysis_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 Inputs *inputs;
36
37 /*Numericalflux constructors,destructors {{{*/
38 Numericalflux();
39 Numericalflux(int numericalflux_id,int i, IoModel* iomodel,int analysis_type);
40 ~Numericalflux();
41 /*}}}*/
42 /*Object virtual functions definitions:{{{ */
43 void Echo();
44 void DeepEcho();
45 int Id();
46 int ObjectEnum();
47 Object *copy();
48 /*}}}*/
49 /*Update virtual functions resolution: {{{*/
50 void InputUpdateFromVector(IssmDouble* vector, int name, int type){/*Do nothing*/}
51 void InputUpdateFromVector(int* vector, int name, int type){_error_("Not implemented yet!");}
52 void InputUpdateFromVector(bool* vector, int name, int type){_error_("Not implemented yet!");}
53 void InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*Do nothing*/}
54 void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*Do nothing*/}
55 void InputUpdateFromVectorDakota(int* vector, int name, int type){_error_("Not implemented yet!");}
56 void InputUpdateFromVectorDakota(bool* vector, int name, int type){_error_("Not implemented yet!");}
57 void InputUpdateFromConstant(IssmDouble constant, int name){/*Do nothing*/};
58 void InputUpdateFromConstant(int constant, int name){/*Do nothing*/};
59 void InputUpdateFromConstant(bool constant, int name){_error_("Not implemented yet!");}
60 void InputUpdateFromSolution(IssmDouble* solution){_error_("Not implemented yet!");}
61 void InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
62 /*}}}*/
63 /*Load virtual functions definitions: {{{*/
64 void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
65 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
66 void CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
67 void CreatePVector(Vector<IssmDouble>* pf);
68 void GetNodesSidList(int* sidlist);
69 int GetNumberOfNodes(void);
70 void CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
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 SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int set1_enum,int set2_enum);
76 bool InAnalysis(int analysis_type);
77 /*}}}*/
78 /*Numericalflux management:{{{*/
79 void GetNormal(IssmDouble* normal,IssmDouble xyz_list[4][3]);
80 ElementMatrix* CreateKMatrixPrognostic(void);
81 ElementMatrix* CreateKMatrixPrognosticInternal(void);
82 ElementMatrix* CreateKMatrixPrognosticBoundary(void);
83 ElementMatrix* CreateKMatrixBalancethickness(void);
84 ElementMatrix* CreateKMatrixBalancethicknessInternal(void);
85 ElementMatrix* CreateKMatrixBalancethicknessBoundary(void);
86 ElementMatrix* CreateKMatrixAdjointBalancethickness(void);
87 ElementMatrix* CreateKMatrixAdjointBalancethicknessInternal(void);
88 ElementMatrix* CreateKMatrixAdjointBalancethicknessBoundary(void);
89 ElementVector* CreatePVectorPrognostic(void);
90 ElementVector* CreatePVectorPrognosticInternal(void);
91 ElementVector* CreatePVectorPrognosticBoundary(void);
92 ElementVector* CreatePVectorBalancethickness(void);
93 ElementVector* CreatePVectorBalancethicknessInternal(void);
94 ElementVector* CreatePVectorBalancethicknessBoundary(void);
95 ElementVector* CreatePVectorAdjointBalancethickness(void);
96 /*}}}*/
97
98};
99
100#endif /* _NUMERICALFLUX_H_ */
Note: See TracBrowser for help on using the repository browser.