Ice Sheet System Model  4.18
Code documentation
Numericalflux.h
Go to the documentation of this file.
1 
5 #ifndef _NUMERICALFLUX_H_
6 #define _NUMERICALFLUX_H_
7 
8 /*Headers:*/
9 #include "./Load.h"
10 class Hook;
11 class Parameters;
12 class IoModel;
13 class Element;
14 class Vertex;
15 class ElementMatrix;
16 class ElementVector;
17 
18 class Numericalflux: public Load {
19 
20  public:
21  int id;
22  int flux_type;
24 
25  /*Hooks*/
29 
30  /*Corresponding fields*/
35 
36  /*Numericalflux constructors,destructors {{{*/
37  Numericalflux();
38  Numericalflux(int numericalflux_id,int i,int index,IoModel* iomodel);
40  /*}}}*/
41  /*Object virtual functions definitions:{{{ */
42  Object *copy();
43  void DeepEcho();
44  void Echo();
45  int Id();
46  void Marshall(char** pmarshalled_data,int* pmarshalled_data_size, int marshall_direction);
47  int ObjectEnum();
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");};
63  void GetNodesLidList(int* lidlist);
64  void GetNodesSidList(int* sidlist);
65  int GetNumberOfNodes(void);
66  int GetNumberOfNodesOneSide(void);
67  bool IsPenalty(void);
68  void PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
71  void ResetHooks();
73  void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum);
74  /*}}}*/
75  /*Numericalflux management:{{{*/
92  void GetNormal(IssmDouble* normal,IssmDouble xyz_list[4][3]);
93  /*}}}*/
94 
95 };
96 
97 #endif /* _NUMERICALFLUX_H_ */
Matrix< IssmDouble >
Numericalflux::helement
Hook * helement
Definition: Numericalflux.h:26
Vertices
Declaration of Vertices class.
Definition: Vertices.h:15
Numericalflux::PenaltyCreateJacobianMatrix
void PenaltyCreateJacobianMatrix(Matrix< IssmDouble > *Jff, IssmDouble kmax)
Definition: Numericalflux.h:68
IssmDouble
double IssmDouble
Definition: types.h:37
Numericalflux::Configure
void Configure(Elements *elements, Loads *loads, Nodes *nodes, Vertices *vertices, Materials *materials, Parameters *parameters)
Definition: Numericalflux.cpp:238
Nodes
Declaration of Nodes class.
Definition: Nodes.h:19
Numericalflux::PenaltyCreatePVector
void PenaltyCreatePVector(Vector< IssmDouble > *pf, IssmDouble kmax)
Definition: Numericalflux.cpp:385
Numericalflux::CreateKMatrixBalancethicknessInternal
ElementMatrix * CreateKMatrixBalancethicknessInternal(void)
Definition: Numericalflux.cpp:569
Numericalflux::flux_degree
int flux_degree
Definition: Numericalflux.h:23
Numericalflux::IsPenalty
bool IsPenalty(void)
Definition: Numericalflux.cpp:374
Numericalflux::CreatePVectorMasstransportBoundary
ElementVector * CreatePVectorMasstransportBoundary(void)
Definition: Numericalflux.cpp:935
Numericalflux::CreatePVectorAdjointBalancethickness
ElementVector * CreatePVectorAdjointBalancethickness(void)
Definition: Numericalflux.cpp:837
Numericalflux::hnodes
Hook * hnodes
Definition: Numericalflux.h:27
Numericalflux::CreatePVector
void CreatePVector(Vector< IssmDouble > *pf)
Definition: Numericalflux.cpp:285
Parameters
Declaration of Parameters class.
Definition: Parameters.h:18
Numericalflux::DeepEcho
void DeepEcho()
Definition: Numericalflux.cpp:172
Numericalflux::GetNormal
void GetNormal(IssmDouble *normal, IssmDouble xyz_list[4][3])
Definition: Numericalflux.cpp:1005
Numericalflux::GetNumberOfNodes
int GetNumberOfNodes(void)
Definition: Numericalflux.cpp:332
Elements
Declaration of Elements class.
Definition: Elements.h:17
Numericalflux::flux_type
int flux_type
Definition: Numericalflux.h:22
Load
Definition: Load.h:22
Numericalflux::CreatePVectorMasstransportInternal
ElementVector * CreatePVectorMasstransportInternal(void)
Definition: Numericalflux.cpp:998
Numericalflux::element
Element * element
Definition: Numericalflux.h:31
Numericalflux::CreateKMatrixMasstransportInternal
ElementMatrix * CreateKMatrixMasstransportInternal(void)
Definition: Numericalflux.cpp:741
Numericalflux::CreateKMatrix
void CreateKMatrix(Matrix< IssmDouble > *Kff, Matrix< IssmDouble > *Kfs)
Definition: Numericalflux.cpp:255
Numericalflux::Numericalflux
Numericalflux()
Definition: Numericalflux.cpp:21
Numericalflux::~Numericalflux
~Numericalflux()
Definition: Numericalflux.cpp:136
Numericalflux::InputUpdateFromMatrixDakota
void InputUpdateFromMatrixDakota(IssmDouble *matrix, int nrows, int ncols, int name, int type)
Definition: Numericalflux.h:54
Element
Definition: Element.h:41
Numericalflux::InputUpdateFromVector
void InputUpdateFromVector(IssmDouble *vector, int name, int type)
Definition: Numericalflux.h:55
Numericalflux::InputUpdateFromConstant
void InputUpdateFromConstant(int constant, int name)
Definition: Numericalflux.h:51
Object
Definition: Object.h:13
Numericalflux::InputUpdateFromConstant
void InputUpdateFromConstant(bool constant, int name)
Definition: Numericalflux.h:52
Numericalflux::InputUpdateFromVectorDakota
void InputUpdateFromVectorDakota(IssmDouble *vector, int name, int type)
Definition: Numericalflux.h:56
Materials
Declaration of Materials class.
Definition: Materials.h:16
Numericalflux::CreateKMatrixAdjointBalancethicknessInternal
ElementMatrix * CreateKMatrixAdjointBalancethicknessInternal(void)
Definition: Numericalflux.cpp:486
Numericalflux::CreateKMatrixAdjointBalancethicknessBoundary
ElementMatrix * CreateKMatrixAdjointBalancethicknessBoundary(void)
Definition: Numericalflux.cpp:479
Numericalflux::id
int id
Definition: Numericalflux.h:21
Numericalflux::ResetHooks
void ResetHooks()
Definition: Numericalflux.cpp:392
Numericalflux::CreateKMatrixBalancethickness
ElementMatrix * CreateKMatrixBalancethickness(void)
Definition: Numericalflux.cpp:493
Load.h
abstract class for Load object This class is a place holder for the Icefront and the Penpair loads....
Hook
Definition: Hook.h:16
Numericalflux::CreateKMatrixMasstransportBoundary
ElementMatrix * CreateKMatrixMasstransportBoundary(void)
Definition: Numericalflux.cpp:676
Numericalflux::InputUpdateFromConstant
void InputUpdateFromConstant(IssmDouble constant, int name)
Definition: Numericalflux.h:50
Numericalflux::CreateKMatrixAdjointBalancethickness
ElementMatrix * CreateKMatrixAdjointBalancethickness(void)
Definition: Numericalflux.cpp:467
Numericalflux::nodes
Node ** nodes
Definition: Numericalflux.h:33
Numericalflux::CreateKMatrixMasstransport
ElementMatrix * CreateKMatrixMasstransport(void)
Definition: Numericalflux.cpp:664
Numericalflux::InputUpdateFromIoModel
void InputUpdateFromIoModel(int index, IoModel *iomodel)
Definition: Numericalflux.h:53
Numericalflux::PenaltyCreateKMatrix
void PenaltyCreateKMatrix(Matrix< IssmDouble > *Kff, Matrix< IssmDouble > *kfs, IssmDouble kmax)
Definition: Numericalflux.cpp:378
Numericalflux::GetNodesSidList
void GetNodesSidList(int *sidlist)
Definition: Numericalflux.cpp:323
Numericalflux::GetNumberOfNodesOneSide
int GetNumberOfNodesOneSide(void)
Definition: Numericalflux.cpp:360
Numericalflux::SetCurrentConfiguration
void SetCurrentConfiguration(Elements *elements, Loads *loads, Nodes *nodes, Vertices *vertices, Materials *materials, Parameters *parameters)
Definition: Numericalflux.cpp:406
Numericalflux::copy
Object * copy()
Definition: Numericalflux.cpp:145
Numericalflux::CreatePVectorBalancethickness
ElementVector * CreatePVectorBalancethickness(void)
Definition: Numericalflux.cpp:843
Numericalflux::CreatePVectorBalancethicknessBoundary
ElementVector * CreatePVectorBalancethicknessBoundary(void)
Definition: Numericalflux.cpp:855
Numericalflux::GetNodesLidList
void GetNodesLidList(int *lidlist)
Definition: Numericalflux.cpp:314
Numericalflux::ObjectEnum
int ObjectEnum()
Definition: Numericalflux.cpp:230
Numericalflux::hvertices
Hook * hvertices
Definition: Numericalflux.h:28
Numericalflux::CreatePVectorMasstransport
ElementVector * CreatePVectorMasstransport(void)
Definition: Numericalflux.cpp:923
Numericalflux::Echo
void Echo()
Definition: Numericalflux.cpp:188
Loads
Declaration of Loads class.
Definition: Loads.h:16
Numericalflux::CreateJacobianMatrix
void CreateJacobianMatrix(Matrix< IssmDouble > *Jff)
Definition: Numericalflux.h:60
Node
Definition: Node.h:23
Numericalflux
Definition: Numericalflux.h:18
_error_
#define _error_(StreamArgs)
Definition: exceptions.h:49
Numericalflux::SetwiseNodeConnectivity
void SetwiseNodeConnectivity(int *d_nz, int *o_nz, Node *node, bool *flags, int *flagsindices, int set1_enum, int set2_enum)
Definition: Numericalflux.cpp:411
Numericalflux::CreatePVectorBalancethicknessInternal
ElementVector * CreatePVectorBalancethicknessInternal(void)
Definition: Numericalflux.cpp:916
Numericalflux::vertices
Vertex ** vertices
Definition: Numericalflux.h:32
Numericalflux::parameters
Parameters * parameters
Definition: Numericalflux.h:34
Numericalflux::Id
int Id()
Definition: Numericalflux.cpp:199
ElementVector
Definition: ElementVector.h:20
Numericalflux::Marshall
void Marshall(char **pmarshalled_data, int *pmarshalled_data_size, int marshall_direction)
Definition: Numericalflux.cpp:203
Vertex
Definition: Vertex.h:19
IoModel
Definition: IoModel.h:48
ElementMatrix
Definition: ElementMatrix.h:19
Vector< IssmDouble >
Numericalflux::CreateKMatrixBalancethicknessBoundary
ElementMatrix * CreateKMatrixBalancethicknessBoundary(void)
Definition: Numericalflux.cpp:505