1 | |
---|
2 | module allinterfaces |
---|
3 | ! interfaces from Fortran 90 subroutines and functions |
---|
4 | ! comments have been stripped |
---|
5 | |
---|
6 | !begin fast_subs_mars.f90 |
---|
7 | |
---|
8 | interface |
---|
9 | subroutine icelayer_mars(bigstep,nz,NP,thIn,rhoc,z,porosity,pfrost, & |
---|
10 | & Tb,zdepthF,zdepthE,porefill,Tmean1,Tmean3,zdepthG, & |
---|
11 | & albedo,p0,icefrac,zdepthT,avrho1, & |
---|
12 | & avrho1prescribed) |
---|
13 | use miscparameters, only : d2r, NMAX, icedensity |
---|
14 | implicit none |
---|
15 | integer, intent(IN) :: nz, NP |
---|
16 | real(8), intent(IN) :: bigstep |
---|
17 | real(8), intent(IN), dimension(NP) :: thIn, rhoc |
---|
18 | real(8), intent(IN) :: z(NMAX) |
---|
19 | real(8), intent(IN) :: porosity, pfrost(NP) |
---|
20 | real(8), intent(INOUT) :: Tb(NP), porefill(nz,NP), zdepthF(NP), zdepthT(NP) |
---|
21 | real(8), intent(OUT), dimension(NP) :: zdepthE, Tmean1, Tmean3, zdepthG |
---|
22 | real(8), intent(IN), dimension(NP) :: albedo, p0 |
---|
23 | real(8), intent(IN) :: icefrac |
---|
24 | real(8), intent(OUT) :: avrho1(NP) |
---|
25 | real(8), intent(IN), optional :: avrho1prescribed(NP) |
---|
26 | end subroutine icelayer_mars |
---|
27 | end interface |
---|
28 | |
---|
29 | interface |
---|
30 | subroutine ajsub_mars(typeT, albedo0, pfrost, nz, z, ti, rhocv, & |
---|
31 | & fracIR, fracDust, p0, avdrho, avdrhoP, avrho1, & |
---|
32 | & Tb, zdepthE, typeF, zdepthF, ypp, porefill, Tmean1, Tmean3, & |
---|
33 | & B, typeG, zdepthG, avrho1prescribed) |
---|
34 | use miscparameters |
---|
35 | implicit none |
---|
36 | integer, intent(IN) :: nz, typeT |
---|
37 | real(8), intent(IN) :: albedo0, pfrost, z(NMAX) |
---|
38 | real(8), intent(IN) :: ti(NMAX), rhocv(NMAX), fracIR, fracDust, p0 |
---|
39 | real(8), intent(IN) :: porefill(nz) |
---|
40 | real(8), intent(OUT) :: avdrho, avdrhoP |
---|
41 | real(8), intent(OUT) :: avrho1 |
---|
42 | real(8), intent(INOUT) :: Tb, Tmean1 |
---|
43 | integer, intent(OUT) :: typeF |
---|
44 | real(8), intent(OUT) :: zdepthE, zdepthF |
---|
45 | real(8), intent(OUT) :: ypp(nz) |
---|
46 | real(8), intent(OUT) :: Tmean3, zdepthG |
---|
47 | real(8), intent(IN) :: B |
---|
48 | integer, intent(OUT) :: typeG |
---|
49 | real(8), intent(IN), optional :: avrho1prescribed |
---|
50 | end subroutine ajsub_mars |
---|
51 | end interface |
---|
52 | |
---|
53 | !end of fast_subs_mars.f90 |
---|
54 | !begin fast_subs_univ.f90 |
---|
55 | |
---|
56 | interface |
---|
57 | pure function zint(y1,y2,z1,z2) |
---|
58 | implicit none |
---|
59 | real(8), intent(IN) :: y1,y2,z1,z2 |
---|
60 | real(8) zint |
---|
61 | end function zint |
---|
62 | end interface |
---|
63 | |
---|
64 | interface |
---|
65 | pure function equildepth(nz, z, rhosatav, rhosatav0, avrho1) |
---|
66 | implicit none |
---|
67 | integer, intent(IN) :: nz |
---|
68 | real(8), intent(IN) :: z(nz), rhosatav(nz) |
---|
69 | real(8), intent(IN) :: rhosatav0, avrho1 |
---|
70 | real(8) zint, equildepth |
---|
71 | external zint |
---|
72 | end function equildepth |
---|
73 | end interface |
---|
74 | |
---|
75 | interface |
---|
76 | subroutine depths_avmeth(typeT, nz, z, rhosatav, rhosatav0, rlow, avrho1, & |
---|
77 | & porefill, typeF, zdepthF, B, ypp, typeG, zdepthG) |
---|
78 | use miscparameters, only : icedensity |
---|
79 | implicit none |
---|
80 | integer, intent(IN) :: nz, typeT |
---|
81 | real(8), intent(IN), dimension(nz) :: z, rhosatav, porefill |
---|
82 | real(8), intent(IN) :: rhosatav0, rlow, avrho1 |
---|
83 | integer, intent(OUT) :: typeF |
---|
84 | real(8), intent(INOUT) :: zdepthF |
---|
85 | real(8), intent(IN) :: B |
---|
86 | real(8), intent(OUT) :: ypp(nz), zdepthG |
---|
87 | integer, intent(INOUT) :: typeG |
---|
88 | real(8), external :: zint, deriv1_onesided, colint |
---|
89 | end subroutine depths_avmeth |
---|
90 | end interface |
---|
91 | |
---|
92 | interface |
---|
93 | pure function constriction(porefill) |
---|
94 | implicit none |
---|
95 | real(8), intent(IN) :: porefill |
---|
96 | real(8) constriction |
---|
97 | end function constriction |
---|
98 | end interface |
---|
99 | |
---|
100 | interface |
---|
101 | subroutine assignthermalproperties(nz,thIn,rhoc,ti,rhocv, & |
---|
102 | & typeT,icefrac,porosity,porefill) |
---|
103 | implicit none |
---|
104 | integer, intent(IN) :: nz |
---|
105 | integer, intent(IN), optional :: typeT |
---|
106 | real(8), intent(IN), optional :: icefrac |
---|
107 | real(8), intent(IN) :: thIn, rhoc |
---|
108 | real(8), intent(IN), optional :: porosity, porefill(nz) |
---|
109 | real(8), intent(OUT) :: ti(nz), rhocv(nz) |
---|
110 | end subroutine assignthermalproperties |
---|
111 | end interface |
---|
112 | |
---|
113 | interface |
---|
114 | pure subroutine icechanges_poreonly(nz,z,typeF,typeG,avdrhoP,ypp,B,porefill) |
---|
115 | implicit none |
---|
116 | integer, intent(IN) :: nz, typeF, typeG |
---|
117 | real(8), intent(IN) :: z(nz), ypp(nz), avdrhoP, B |
---|
118 | real(8), intent(INOUT) :: porefill(nz) |
---|
119 | end subroutine icechanges_poreonly |
---|
120 | end interface |
---|
121 | |
---|
122 | interface |
---|
123 | pure subroutine icechanges(nz,z,typeF,avdrho,avdrhoP,ypp, & |
---|
124 | & Diff,porosity,icefrac,bigstep,zdepthT,porefill,typeG) |
---|
125 | implicit none |
---|
126 | integer, intent(IN) :: nz, typeF, typeG |
---|
127 | real(8), intent(IN) :: z(nz), ypp(nz), avdrho, avdrhoP |
---|
128 | real(8), intent(IN) :: Diff, porosity, icefrac, bigstep |
---|
129 | real(8), intent(INOUT) :: zdepthT, porefill(nz) |
---|
130 | end subroutine icechanges |
---|
131 | end interface |
---|
132 | |
---|
133 | interface |
---|
134 | subroutine compactoutput(unit,porefill,nz) |
---|
135 | implicit none |
---|
136 | integer, intent(IN) :: unit,nz |
---|
137 | real(8), intent(IN) :: porefill(nz) |
---|
138 | end subroutine compactoutput |
---|
139 | end interface |
---|
140 | |
---|
141 | !end of fast_subs_univ |
---|
142 | !begin derivs.f90 |
---|
143 | |
---|
144 | interface |
---|
145 | subroutine deriv1(z,nz,y,y0,yNp1,yp) |
---|
146 | implicit none |
---|
147 | integer, intent(IN) :: nz |
---|
148 | real(8), intent(IN) :: z(nz),y(nz),y0,yNp1 |
---|
149 | real(8), intent(OUT) :: yp(nz) |
---|
150 | end subroutine deriv1 |
---|
151 | end interface |
---|
152 | |
---|
153 | interface |
---|
154 | subroutine deriv2_full(z,nz,a,b,a0,b0,bNp1,yp2) |
---|
155 | implicit none |
---|
156 | integer, intent(IN) :: nz |
---|
157 | real(8), intent(IN) :: z(nz),a(nz),b(nz),a0,b0,bNp1 |
---|
158 | real(8), intent(OUT) :: yp2(nz) |
---|
159 | end subroutine deriv2_full |
---|
160 | end interface |
---|
161 | |
---|
162 | interface |
---|
163 | subroutine deriv2_simple(z,nz,y,y0,yNp1,yp2) |
---|
164 | implicit none |
---|
165 | integer, intent(IN) :: nz |
---|
166 | real(8), intent(IN) :: z(nz),y(nz),y0,yNp1 |
---|
167 | real(8), intent(OUT) :: yp2(nz) |
---|
168 | end subroutine deriv2_simple |
---|
169 | end interface |
---|
170 | interface |
---|
171 | real(8) pure function deriv1_onesided(j,z,nz,y) |
---|
172 | implicit none |
---|
173 | integer, intent(IN) :: nz,j |
---|
174 | real(8), intent(IN) :: z(nz),y(nz) |
---|
175 | end function deriv1_onesided |
---|
176 | end interface |
---|
177 | |
---|
178 | !end of derivs.f90 |
---|
179 | !begin fast_subs_exper.f90 |
---|
180 | |
---|
181 | interface |
---|
182 | subroutine icelayer_exper(bigstep, nz, thIn, rhoc, z, porosity, pfrost, & |
---|
183 | & zdepthT, icefrac, zdepthF, zdepthE, porefill, Tmean, Tampl, Diff, zdepthG) |
---|
184 | use miscparameters, only : d2r, NMAX, icedensity |
---|
185 | implicit none |
---|
186 | integer, intent(IN) :: nz |
---|
187 | real(8), intent(IN) :: bigstep |
---|
188 | real(8), intent(IN) :: thIn, rhoc, z(NMAX), porosity, pfrost |
---|
189 | real(8), intent(INOUT) :: zdepthT, zdepthF, porefill(nz) |
---|
190 | real(8), intent(OUT) :: zdepthE |
---|
191 | real(8), intent(IN) :: icefrac, Diff, Tmean, Tampl |
---|
192 | real(8), intent(OUT) :: zdepthG |
---|
193 | end subroutine icelayer_exper |
---|
194 | end interface |
---|
195 | |
---|
196 | interface |
---|
197 | subroutine ajsub_exper(typeT, nz, z, ti, rhocv, pfrost, Tmean, Tampl, & |
---|
198 | & avdrho, avdrhoP, zdepthE, typeF, zdepthF, ypp, porefill, & |
---|
199 | & B, typeG, zdepthG) |
---|
200 | use miscparameters, only : NMAX, solsperyear, marsDay |
---|
201 | implicit none |
---|
202 | integer, intent(IN) :: nz, typeT |
---|
203 | real(8), intent(IN) :: z(NMAX), ti(NMAX), rhocv(NMAX), pfrost |
---|
204 | real(8), intent(IN) :: Tmean, Tampl |
---|
205 | real(8), intent(OUT) :: avdrho, avdrhoP |
---|
206 | real(8), intent(OUT) :: zdepthE |
---|
207 | integer, intent(OUT) :: typeF |
---|
208 | real(8), intent(INOUT) :: zdepthF |
---|
209 | real(8), intent(OUT) :: ypp(nz) |
---|
210 | real(8), intent(IN) :: porefill(nz) |
---|
211 | real(8), intent(IN) :: B |
---|
212 | integer, intent(OUT) :: typeG |
---|
213 | real(8), intent(OUT) :: zdepthG |
---|
214 | real(8), external :: Tsurface, psv |
---|
215 | real(8), external :: equildepth |
---|
216 | end subroutine ajsub_exper |
---|
217 | end interface |
---|
218 | |
---|
219 | !end fast_subs_exper |
---|
220 | |
---|
221 | ! Other |
---|
222 | interface |
---|
223 | pure function flux_mars77(R,decl,HA,albedo,fracir,fracscat) |
---|
224 | implicit none |
---|
225 | real*8 flux_mars77 |
---|
226 | real*8, intent(IN) :: R,decl,HA,albedo,fracIR,fracScat |
---|
227 | end function flux_mars77 |
---|
228 | end interface |
---|
229 | |
---|
230 | interface |
---|
231 | pure function colint(y,z,nz,i1,i2) |
---|
232 | implicit none |
---|
233 | integer, intent(IN) :: nz, i1, i2 |
---|
234 | real(8), intent(IN) :: y(nz),z(nz) |
---|
235 | real(8) colint |
---|
236 | end function colint |
---|
237 | end interface |
---|
238 | |
---|
239 | interface |
---|
240 | subroutine dyn_ss_ice_m(ssi_depth_in,T1,T_in,nsoil,thIn,p0,pfrost,porefill_in,porefill,ssi_depth) |
---|
241 | implicit none |
---|
242 | integer, intent(IN) :: nsoil |
---|
243 | real(8), intent(IN) :: thIn,ssi_depth_in,T1 |
---|
244 | real(8), intent(IN) :: p0(1), pfrost(1) |
---|
245 | real(8), intent(IN) :: T_in(nsoil) |
---|
246 | real(8), intent(INOUT) :: porefill(nsoil,1) |
---|
247 | real(8), intent(INOUT) :: porefill_in(nsoil,1) |
---|
248 | real(8), intent(INOUT) :: ssi_depth |
---|
249 | end subroutine dyn_ss_ice_m |
---|
250 | end interface |
---|
251 | |
---|
252 | interface |
---|
253 | subroutine dyn_ss_ice_m_wrapper(ngrid,nsoil,tHIn,p0,pfrost,T_in,ssi_depth_in,porefill_in,porefill,ssi_depth) |
---|
254 | implicit none |
---|
255 | integer, intent(IN) :: nsoil,ngrid |
---|
256 | real(8), intent(IN) :: thIn(ngrid),ssi_depth_in(ngrid) |
---|
257 | real(8), intent(IN) :: p0(ngrid), pfrost(ngrid) |
---|
258 | real(8), intent(IN) :: T_in(nsoil,ngrid) |
---|
259 | real(8), intent(OUT) :: porefill(nsoil,ngrid) |
---|
260 | real(8), intent(IN) :: porefill_in(nsoil,ngrid) |
---|
261 | real(8), intent(OUT) :: ssi_depth(ngrid) |
---|
262 | end subroutine dyn_ss_ice_m_wrapper |
---|
263 | end interface |
---|
264 | |
---|
265 | end module allinterfaces |
---|