source: trunk/LMDZ.COMMON/libf/evolution/fast_modules.f90 @ 3470

Last change on this file since 3470 was 3470, checked in by evos, 4 weeks ago

we added the option to use NS dynamical subsurface ice in the model to more realisticly calculate the amount of ice in the subsurface and therfore the subsurface thermal inertia

File size: 8.5 KB
Line 
1
2module 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
251end module allinterfaces
Note: See TracBrowser for help on using the repository browser.