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

Last change on this file since 23959 was 23959, checked in by Mathieu Morlighem, 6 years ago

CHG: simplifying loads: no need to provide analysis to load, since they are now in individual datasets

File size: 3.7 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:*/
9#include "./Load.h"
10class Hook;
11class Parameters;
12class IoModel;
[15649]13class Element;
14class Vertex;
[5911]15class ElementMatrix;
16class ElementVector;
[3683]17
18class 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_ */
Note: See TracBrowser for help on using the repository browser.