source: trunk/LMDZ.COMMON/libf/evolution/NS_fast_modules.F90 @ 3525

Last change on this file since 3525 was 3493, checked in by jbclement, 3 weeks ago

PEM:

  • Renaming of Norbert Schorghofer's subroutines with the prefix 'NS_';
  • Making the extension of all NS's subroutines as '.F90';
  • Deletion of the wrapper subroutine;
  • Making the initialization, variables management and arguments of the main subroutine for the dynamic computation of ice table to be more suitable.

JBC

File size: 9.1 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
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
265end module allinterfaces
Note: See TracBrowser for help on using the repository browser.