| 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 |
|---|