-
Notifications
You must be signed in to change notification settings - Fork 5
/
Friction.h
76 lines (67 loc) · 2.81 KB
/
Friction.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/*!\file Friction.h
* \brief: header file for friction object
*/
#ifndef _FRICTION_H_
#define _FRICTION_H_
/*Headers:*/
class Inputs;
class Elements;
class Parameters;
class IoModel;
class GaussPenta;
class GaussTria;
class Friction{
public:
Element *element;
int law;
int domaintype;
int linearize;
IssmPDouble apply_dim;
Input *vx_input;
Input *vy_input;
Input *vz_input;
IssmDouble *alpha2_list;
IssmDouble *alpha2_complement_list;
/*methods: */
Friction();
Friction(Element* element_in);
Friction(Element* element_in, int dim);
Friction(Element* element_in, IssmPDouble dim);
~Friction();
void Echo(void);
void GetAlphaComplement(IssmDouble* alpha_complement,Gauss* gauss);
void GetAlphaHydroComplement(IssmDouble* alpha_complement,Gauss* gauss);
void GetAlphaTempComplement(IssmDouble* alpha_complement,Gauss* gauss);
void GetAlphaBuddComplement(IssmDouble* alpha_complement,Gauss* gauss);
void GetAlphaSchoofComplement(IssmDouble* alpha_complement,Gauss* gauss);
void GetAlphaCoulomb2Complement(IssmDouble* alpha_complement,Gauss* gauss);
void GetAlphaRegCoulombComplement(IssmDouble* alpha_complement,Gauss* gauss);
void GetAlphaWeertmanComplement(IssmDouble* alpha_complement,Gauss* gauss);
void GetAlpha2(IssmDouble* palpha2,Gauss* gauss);
void GetAlpha2Coulomb(IssmDouble* palpha2,Gauss* gauss);
void GetAlpha2Coulomb2(IssmDouble* palpha2,Gauss* gauss);
void GetAlpha2Hydro(IssmDouble* palpha2,Gauss* gauss);
void GetAlpha2Josh(IssmDouble* palpha2,Gauss* gauss);
void GetAlpha2Shakti(IssmDouble* palpha2,Gauss* gauss);
void GetAlpha2Temp(IssmDouble* palpha2,Gauss* gauss);
void GetAlpha2Budd(IssmDouble* palpha2,Gauss* gauss);
void GetAlpha2WaterLayer(IssmDouble* palpha2,Gauss* gauss);
void GetAlpha2Weertman(IssmDouble* palpha2,Gauss* gauss);
void GetAlpha2WeertmanTemp(IssmDouble* palpha2,Gauss* gauss);
void GetAlpha2PISM(IssmDouble* palpha2,Gauss* gauss);
void GetAlpha2Schoof(IssmDouble* palpha2,Gauss* gauss);
void GetAlpha2RegCoulomb(IssmDouble* palpha2,Gauss* gauss);
void GetAlpha2RegCoulomb2(IssmDouble* palpha2,Gauss* gauss);
void GetAlpha2Tsai(IssmDouble* palpha2,Gauss* gauss);
IssmDouble EffectivePressure(Gauss* gauss);
IssmDouble IcePressure(Gauss* gauss);
IssmDouble SubglacialWaterPressure(Gauss* gauss);
IssmDouble VelMag(Gauss* gauss);
void GetBasalSlidingSpeeds(IssmDouble* pvx, Gauss* gauss);
void GetBasalSlidingSpeeds(IssmDouble* pvx, IssmDouble* pvy, Gauss* gauss);
void GetBasalSlidingSpeeds(IssmDouble* pvx, IssmDouble* pvy, IssmDouble* pvz, Gauss* gauss);
};
/*Friction related IO*/
void FrictionUpdateParameters(Parameters* parameters,IoModel* iomodel);
void FrictionUpdateInputs(Elements* elements,Inputs* inputs,IoModel* iomodel);
#endif /* _FRICTION_H_ */