Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/elmerice/examples/Inverse_Methods/src/MacAyeal_USFs.F90
3206 views
1
MODULE MacAyealContants
2
USE DefUtils
3
REAL(kind=dp),PARAMETER :: Lx=200.0d03
4
REAL(kind=dp),PARAMETER :: Ly=50.0d03
5
REAL(kind=dp),PARAMETER :: yearinsec = 31557600.0_dp !365.25*24*60*60
6
REAL(kind=dp),PARAMETER :: MPa=1.0d06
7
END MODULE MacAyealContants
8
9
FUNCTION Zs(Model,nodenumber,tx) RESULT(VarOut)
10
USE MacAyealContants
11
implicit none
12
!-----------------
13
TYPE(Model_t) :: Model
14
INTEGER :: nodenumber
15
REAL(kind=dp) :: tx(2) !x,y
16
REAL(kind=dp) :: VarOut
17
18
VarOut=500.0-1.0e-03*tx(1)+20.0*(sin(3.0*pi*tx(1)/Lx)*sin(2.0*pi*tx(2)/Ly))
19
20
END FUNCTION Zs
21
22
FUNCTION H(Model,nodenumber,tx) RESULT(VarOut)
23
USE MacAyealContants
24
implicit none
25
!-----------------
26
TYPE(Model_t) :: Model
27
INTEGER :: nodenumber
28
REAL(kind=dp) :: tx(2) !x,y
29
REAL(kind=dp) :: VarOut
30
31
VarOut=1500.0-2.0e-3*tx(1)
32
END FUNCTION H
33
34
FUNCTION Zb(Model,nodenumber,tx) RESULT(VarOut)
35
USE MacAyealContants
36
implicit none
37
!-----------------
38
TYPE(Model_t) :: Model
39
INTEGER :: nodenumber
40
REAL(kind=dp) :: tx(2) !x,y
41
REAL(kind=dp) :: VarOut
42
REAL (KIND=dp) :: Zs,H
43
44
VarOut=Zs(Model,nodenumber,tx)-H(Model,nodenumber,tx)
45
46
END FUNCTION Zb
47
48
FUNCTION betaSquare(Model,nodenumber,tx) RESULT(VarOut)
49
USE MacAyealContants
50
implicit none
51
!-----------------
52
TYPE(Model_t) :: Model
53
INTEGER :: nodenumber
54
REAL(kind=dp) :: tx(2) !x,y
55
REAL(kind=dp) :: VarOut
56
57
REAL(kind=dp) :: F1,F2,beta
58
59
F1=sin(3.0*pi*tx(1)/Lx)*sin(pi*tx(2)/Ly)
60
F2=sin(pi*tx(1)/(2.0*Lx))*cos(4.0*pi*tx(2)/Ly)
61
beta=5.0e3*F1+5.0e03*F2
62
VarOut=beta*beta/(MPa*yearinsec)
63
64
END FUNCTION betaSquare
65
66
FUNCTION beta(Model,nodenumber,tx) RESULT(VarOut)
67
USE MacAyealContants
68
implicit none
69
!-----------------
70
TYPE(Model_t) :: Model
71
INTEGER :: nodenumber
72
REAL(kind=dp) :: tx(2) !x,y
73
REAL(kind=dp) :: VarOut
74
REAL(kind=dp) :: betaSquare
75
76
VarOut=sqrt(betaSquare(Model,nodenumber,tx))
77
78
END FUNCTION beta
79
80
FUNCTION INFLOW(Model,nodenumber,tx) RESULT(VarOut)
81
USE MacAyealContants
82
implicit none
83
!-----------------
84
TYPE(Model_t) :: Model
85
INTEGER :: nodenumber
86
REAL(kind=dp) :: tx !y
87
REAL(kind=dp) :: VarOut
88
89
VarOut=4.753e-6*yearinsec*(sin(2.0*pi*(Ly-tx)/Ly)+2.5*sin(pi*(Ly-tx)/Ly))
90
END FUNCTION INFLOW
91
FUNCTION OUTFLOW(Model,nodenumber,tx) RESULT(VarOut)
92
USE MacAyealContants
93
implicit none
94
!-----------------
95
TYPE(Model_t) :: Model
96
INTEGER :: nodenumber
97
REAL(kind=dp) :: tx !y
98
REAL(kind=dp) :: VarOut
99
100
VarOut=1.584e-5*yearinsec*(sin(2.0*pi*(Ly-tx)/Ly)+2.5*sin(pi*(Ly-tx)/Ly)+0.5*sin(3.0*pi*(Ly-tx)/Ly))
101
END FUNCTION OUTFLOW
102
103
FUNCTION Density(Model,nodenumber,tx) RESULT(VarOut)
104
USE MacAyealContants
105
implicit none
106
!-----------------
107
TYPE(Model_t) :: Model
108
INTEGER :: nodenumber
109
REAL(kind=dp) :: tx !dumy
110
REAL(kind=dp) :: VarOut
111
112
VarOut=917.0/(MPa*yearinsec**2)
113
114
END FUNCTION Density
115
FUNCTION Gravity(Model,nodenumber,tx) RESULT(VarOut)
116
USE MacAyealContants
117
implicit none
118
!-----------------
119
TYPE(Model_t) :: Model
120
INTEGER :: nodenumber
121
REAL(kind=dp) :: tx !dumy
122
REAL(kind=dp) :: VarOut
123
124
VarOut=-9.81*yearinsec**2
125
126
END FUNCTION Gravity
127
128
FUNCTION Viscosity(Model,nodenumber,tx) RESULT(VarOut)
129
USE MacAyealContants
130
implicit none
131
!-----------------
132
TYPE(Model_t) :: Model
133
INTEGER :: nodenumber
134
REAL(kind=dp) :: tx !dumy
135
REAL(kind=dp) :: VarOut
136
137
VarOut=1.8e8*1.0e-6*(2.0*yearinsec)**(-1.0/3.0)
138
139
END FUNCTION Viscosity
140
141