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

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

NEW: create edges on the fly instead of relying on md.mesh.edges

File size: 4.1 KB
RevLine 
[3683]1/*!\file Numericalflux.h
2 * \brief: header file for icefront object
3 */
4
5#ifndef _NUMERICALFLUX_H_
6#define _NUMERICALFLUX_H_
7
8/*Headers:*/
[12365]9/*{{{*/
[3683]10#include "./Load.h"
11class Hook;
12class Parameters;
13class Inputs;
14class IoModel;
[5911]15class ElementMatrix;
16class ElementVector;
[3683]17/*}}}*/
18
19class Numericalflux: public Load {
20
21 public:
[13414]22 int id;
[4007]23 int analysis_type;
[3683]24
[5737]25 /*Hooks*/
[13414]26 Hook *helement;
27 Hook *hnodes;
[14761]28 Hook *hvertices;
[5737]29
30 /*Corresponding fields*/
[13414]31 Element *element;
[14761]32 Vertex **vertices;
[13414]33 Node **nodes;
34 Parameters *parameters;
35 Inputs *inputs;
[5737]36
[12365]37 /*Numericalflux constructors,destructors {{{*/
[3683]38 Numericalflux();
[15430]39 Numericalflux(int numericalflux_id,int i,int index,IoModel* iomodel,int analysis_type);
[3683]40 ~Numericalflux();
41 /*}}}*/
[12365]42 /*Object virtual functions definitions:{{{ */
[14761]43 void Echo();
44 void DeepEcho();
45 int Id();
46 int ObjectEnum();
47 Object *copy();
[4244]48 /*}}}*/
[12365]49 /*Update virtual functions resolution: {{{*/
[14761]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");};
[3683]62 /*}}}*/
[12365]63 /*Load virtual functions definitions: {{{*/
[14761]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);
[4248]77 /*}}}*/
[12365]78 /*Numericalflux management:{{{*/
[14761]79 void GetNormal(IssmDouble* normal,IssmDouble xyz_list[4][3]);
[6026]80 ElementMatrix* CreateKMatrixPrognostic(void);
81 ElementMatrix* CreateKMatrixPrognosticInternal(void);
82 ElementMatrix* CreateKMatrixPrognosticBoundary(void);
[8287]83 ElementMatrix* CreateKMatrixBalancethickness(void);
84 ElementMatrix* CreateKMatrixBalancethicknessInternal(void);
85 ElementMatrix* CreateKMatrixBalancethicknessBoundary(void);
86 ElementMatrix* CreateKMatrixAdjointBalancethickness(void);
87 ElementMatrix* CreateKMatrixAdjointBalancethicknessInternal(void);
88 ElementMatrix* CreateKMatrixAdjointBalancethicknessBoundary(void);
[6026]89 ElementVector* CreatePVectorPrognostic(void);
90 ElementVector* CreatePVectorPrognosticInternal(void);
91 ElementVector* CreatePVectorPrognosticBoundary(void);
[8287]92 ElementVector* CreatePVectorBalancethickness(void);
93 ElementVector* CreatePVectorBalancethicknessInternal(void);
94 ElementVector* CreatePVectorBalancethicknessBoundary(void);
95 ElementVector* CreatePVectorAdjointBalancethickness(void);
[3683]96 /*}}}*/
97
98};
99
100#endif /* _NUMERICALFLUX_H_ */
Note: See TracBrowser for help on using the repository browser.