source: issm/trunk/src/c/classes/Loads/Channel.h@ 25836

Last change on this file since 25836 was 25836, checked in by Mathieu Morlighem, 4 years ago

merged trunk-jpl and trunk for revision 25834

File size: 3.2 KB
Line 
1/*!\file Channel.h
2 * \brief: header file for icefront object
3 */
4
5#ifndef _CHANNEL_H_
6#define _CHANNEL_H_
7
8/*Headers:*/
9#include "./Load.h"
10class Hook;
11class Parameters;
12class IoModel;
13class Element;
14class Vertex;
15class ElementMatrix;
16class ElementVector;
17
18class Channel: public Load {
19
20 private:
21 IssmDouble S;
22 IssmDouble Sold;
23 bool boundary;
24
25 /*output only*/
26 IssmDouble discharge;
27
28 public:
29 int sid;
30 int id;
31
32 /*Hooks*/
33 Hook *helement;
34 Hook *hnodes;
35 Hook *hvertices;
36
37 /*Corresponding fields*/
38 Element *element;
39 Vertex **vertices;
40 Node **nodes;
41 Parameters *parameters;
42
43 /*Channel constructors,destructors {{{*/
44 Channel();
45 Channel(int numericalflux_id,IssmDouble channelarea,int index,IoModel* iomodel);
46 //Channel(int numericalflux_id,int i,int index,IoModel* iomodel);
47 ~Channel();
48 /*}}}*/
49 /*Object virtual functions definitions:{{{ */
50 Object *copy();
51 void DeepEcho();
52 void Echo();
53 int Id();
54 void Marshall(MarshallHandle* marshallhandle);
55 int ObjectEnum();
56 /*}}}*/
57 /*Update virtual functions resolution: {{{*/
58 void InputUpdateFromConstant(IssmDouble constant, int name){/*Do nothing*/};
59 void InputUpdateFromConstant(int constant, int name){/*Do nothing*/};
60 void InputUpdateFromConstant(bool constant, int name){_error_("Not implemented yet!");}
61 void InputUpdateFromIoModel(int index, IoModel* iomodel){_error_("not implemented yet");};
62 void InputUpdateFromMatrixDakota(IssmDouble* matrix, int nrows, int ncols, int name, int type){/*Do nothing*/}
63 void InputUpdateFromVector(IssmDouble* vector, int name, int type){/*Do nothing*/}
64 void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){/*Do nothing*/}
65 /*}}}*/
66 /*Load virtual functions definitions: {{{*/
67 void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
68 void CreateJacobianMatrix(Matrix<IssmDouble>* Jff){_error_("Not implemented yet");};
69 void CreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* Kfs);
70 void CreatePVector(Vector<IssmDouble>* pf);
71 void GetNodesLidList(int* lidlist);
72 void GetNodesSidList(int* sidlist);
73 int GetNumberOfNodes(void);
74 bool IsPenalty(void);
75 void PenaltyCreateJacobianMatrix(Matrix<IssmDouble>* Jff,IssmDouble kmax){_error_("Not implemented yet");};
76 void PenaltyCreateKMatrix(Matrix<IssmDouble>* Kff, Matrix<IssmDouble>* kfs, IssmDouble kmax);
77 void PenaltyCreatePVector(Vector<IssmDouble>* pf, IssmDouble kmax);
78 void ResetHooks();
79 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters);
80 void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int* flagsindices_counter,int set1_enum,int set2_enum);
81 /*}}}*/
82 /*Channel management:{{{*/
83 void SetChannelCrossSectionOld(void);
84 void UpdateChannelCrossSection(void);
85 ElementVector* CreatePVectorHydrologyGlaDS(void);
86 ElementMatrix* CreateKMatrixHydrologyGlaDS(void);
87 void WriteChannelCrossSection(IssmPDouble* values);
88 void WriteChannelDischarge(IssmPDouble* values);
89 /*}}}*/
90
91};
92
93#endif /* _NUMERICALFLUX_H_ */
Note: See TracBrowser for help on using the repository browser.