Changeset 3901 for LMDZ6/trunk/libf
- Timestamp:
- May 17, 2021, 4:05:36 PM (4 years ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/conf_phys_m.F90
r3900 r3901 330 330 ! Martin et Etienne 331 331 !Config Key = landice_opt 332 !Config Desc = which landice snow model (BULK, SISVATor INLANDSIS)332 !Config Desc = which landice snow model (BULK, or INLANDSIS) 333 333 !Config Def = 0 334 334 landice_opt_omp = 0 -
LMDZ6/trunk/libf/phylmd/pbl_surface_mod.F90
r3900 r3901 519 519 520 520 ! Martin 521 ! sisvat521 ! inlandsis 522 522 REAL, DIMENSION(klon), INTENT(OUT) :: qsnow ! snow water content 523 523 REAL, DIMENSION(klon), INTENT(OUT) :: snowhgt ! snow height -
LMDZ6/trunk/libf/phylmd/surf_landice_mod.F90
r3900 r3901 33 33 USE ioipsl_getin_p_mod, ONLY : getin_p 34 34 35 #ifdef CPP_SISVAT36 USE surf_sisvat_mod, ONLY : surf_sisvat37 #endif38 35 39 36 #ifdef CPP_INLANDSIS … … 179 176 !**************************************************************************************** 180 177 ! landice_opt = 0 : soil_model, calcul_flux, fonte_neige, ... 181 ! landice_opt = 1 : prepare and call SISVAT snow model 182 ! landice_opt = 2 : prepare and call INLANDSIS snow model 178 ! landice_opt = 1 : prepare and call INterace Lmdz SISvat (INLANDSIS) 183 179 !**************************************************************************************** 184 180 185 181 186 182 IF (landice_opt .EQ. 1) THEN 187 188 !**************************************************************************************** 189 ! CALL to SISVAT interface 190 !**************************************************************************************** 191 192 #ifdef CPP_SISVAT 193 ! Prepare for calling SISVAT 194 195 ! Calculate incoming flux for SW and LW interval: swdown, lwdown 196 swdown(:) = 0.0 197 lwdown(:) = 0.0 198 DO i = 1, knon 199 swdown(i) = swnet(i)/(1-albedo(i)) 200 lwdown(i) = lwdownm(i) 201 END DO 202 203 ! Set constants and compute some input for SISVAT 204 snow_adv(:) = 0. ! no snow blown in for now 205 snow_cont_air(:) = 0. 206 alb_soil(:) = albedo(:) 207 pref = 100000. ! = 1000 hPa 208 DO i = 1, knon 209 wind_velo(i) = u1(i)**2 + v1(i)**2 210 wind_velo(i) = wind_velo(i)**0.5 211 pexner(i) = (p1lay(i)/pref)**(RD/RCPD) 212 dens_air(i) = p1lay(i)/RD/temp_air(i) ! dry air density 213 zsl_height(i) = pphi1(i)/RG 214 END DO 215 216 217 ! config: compute everything with SV but temperatures afterwards with soil/calculfluxs 218 DO i = 1, knon 219 tsoil0(i,:)=tsoil(i,:) 220 END DO 221 ! Martin 222 PRINT*, 'on appelle surf_sisvat' 223 ! Martin 224 CALL surf_sisvat(knon, rlon, rlat, knindex, itime, dtime, debut, lafin, & 225 rmu0, swdown, lwdown, pexner, ps, p1lay, & 226 precip_rain, precip_snow, precip_snow_adv, snow_adv, & 227 zsl_height, wind_velo, temp_air, dens_air, spechum, tsurf, & 228 rugoro, snow_cont_air, alb_soil, slope, cloudf, & 229 radsol, qsol, tsoil0, snow, snowhgt, qsnow, to_ice,sissnow, agesno, & 230 AcoefH, AcoefQ, BcoefH, BcoefQ, cdragh, & 231 run_off_lic, evap, fluxsens, fluxlat, dflux_s, dflux_l, & 232 tsurf_new, alb1, alb2, alb3, emis_new, z0m, qsurf) 233 z0h(1:knon)=z0m(1:knon) ! en attendant mieux 234 235 ! Suppose zero surface speed 236 u0(:) = 0.0 237 v0(:) = 0.0 238 ! The calculation of heat/water fluxes, otherwise done by "CALL calcul_fluxs" is 239 ! integrated in SISVAT, using the same method. It can be found in "sisvat.f", in the 240 ! subroutine "SISVAT_TS2". 241 ! u0, v0=0., dif_grnd=0. and beta=1 are assumed there! 242 243 CALL calcul_flux_wind(knon, dtime, & 244 u0, v0, u1, v1, gustiness, cdragm, & 245 AcoefU, AcoefV, BcoefU, BcoefV, & 246 p1lay, temp_air, & 247 flux_u1, flux_v1) 248 #else 249 abort_message='Pb de coherence: landice_opt = 1 mais CPP_SISVAT = .false.' 250 CALL abort_physic(modname,abort_message,1) 251 #endif 252 253 !**************************************************************************************** 183 184 !**************************************************************************************** 254 185 ! CALL to INLANDSIS interface 255 186 !**************************************************************************************** 256 257 ELSE IF (landice_opt .EQ. 2) THEN258 187 #ifdef CPP_INLANDSIS 259 188 … … 330 259 331 260 #else 332 abort_message='Pb de coherence: landice_opt = 2mais CPP_INLANDSIS = .false.'261 abort_message='Pb de coherence: landice_opt = 1 mais CPP_INLANDSIS = .false.' 333 262 CALL abort_physic(modname,abort_message,1) 334 263 #endif … … 480 409 alb_dir(1:knon,6)=alb2(1:knon) 481 410 482 IF ((landice_opt .EQ. 2) .AND. (iflag_albcalc .EQ. 2)) THEN411 IF ((landice_opt .EQ. 1) .AND. (iflag_albcalc .EQ. 2)) THEN 483 412 alb_dir(1:knon,1)=alb6(1:knon,1) 484 413 alb_dir(1:knon,2)=alb6(1:knon,2) -
LMDZ6/trunk/libf/phylmd/surface_data.F90
r3900 r3901 30 30 !=============== 31 31 32 ! 1 for coupling with SISVAT, 2 for coupling with INLANDSIS and number of subtimesteps forINLANDSIS33 INTEGER, SAVE :: landice_opt ! 1 for coupling with SISVAT, 2for coupling with INLANDSIS32 ! 1 for coupling with INLANDSIS 33 INTEGER, SAVE :: landice_opt ! 1 for coupling with INLANDSIS 34 34 !$OMP THREADPRIVATE(landice_opt) 35 35
Note: See TracChangeset
for help on using the changeset viewer.