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