- Timestamp:
- Mar 1, 2023, 6:22:39 PM (16 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Portage_acc/libf/phylmdiso/pbl_surface_mod.F90
r4036 r4446 14 14 USE mod_grid_phy_lmdz, ONLY : klon_glo 15 15 USE ioipsl 16 USE surface_data, ONLY : type_ocean, ok_veget 16 USE surface_data, ONLY : type_ocean, ok_veget, landice_opt 17 17 USE surf_land_mod, ONLY : surf_land 18 18 USE surf_landice_mod, ONLY : surf_landice … … 31 31 wx_pbl_check, wx_pbl_dts_check, wx_evappot 32 32 use config_ocean_skin_m, only: activate_ocean_skin 33 #ifdef ISO 34 USE infotrac_phy, ONLY: niso,ntraciso=>ntiso 35 #endif 33 36 34 37 IMPLICIT NONE … … 193 196 USE indice_sol_mod 194 197 USE print_control_mod, ONLY: lunout 195 USE infotrac_phy, ONLY: niso,ntraciso ! ajout C Risi pour isos196 198 #ifdef ISOVERIF 197 199 USE isotopes_mod, ONLY: iso_eau,ridicule … … 395 397 USE print_control_mod, ONLY : prt_level,lunout 396 398 #ifdef ISO 397 USE infotrac_phy, ONLY: ntraciso,niso ! ajout C Risi pour isos398 399 USE isotopes_mod, ONLY: Rdefault,iso_eau 399 400 #ifdef ISOVERIF … … 405 406 #endif 406 407 USE ioipsl_getin_p_mod, ONLY : getin_p 407 use phys_state_var_mod, only: ds_ns, dt_ns, delta_sst, delta_sal, zsig, zmea 408 use phys_output_var_mod, only: dter, dser, tkt, tks, taur, sss 408 use phys_state_var_mod, only: ds_ns, dt_ns, delta_sst, delta_sal, dter, & 409 dser, dt_ds, zsig, zmea 410 use phys_output_var_mod, only: tkt, tks, taur, sss 409 411 #ifdef CPP_XIOS 410 412 USE wxios, ONLY: missing_val … … 1028 1030 ! Martin 1029 1031 1030 REAL, DIMENSION(klon):: ydelta_sst, ydelta_sal, yds_ns, ydt_ns, ydter, ydser,&1031 y tkt, ytks, ytaur, ysss1032 ! compression of delta_sst, delta_sal, ds_ns, dt_ns, dter, dser, tkt, tks,1033 ! taur, sss on ocean points1032 REAL, DIMENSION(klon):: ydelta_sst, ydelta_sal, yds_ns, ydt_ns, ydter, & 1033 ydser, ydt_ds, ytkt, ytks, ytaur, ysss 1034 ! compression of delta_sst, delta_sal, ds_ns, dt_ns, dter, dser, 1035 ! dt_ds, tkt, tks, taur, sss on ocean points 1034 1036 1035 1037 #ifdef ISO … … 1812 1814 ydelta_sal(:knon) = delta_sal(ni(:knon)) 1813 1815 ydelta_sst(:knon) = delta_sst(ni(:knon)) 1816 ydter(:knon) = dter(ni(:knon)) 1817 ydser(:knon) = dser(ni(:knon)) 1818 ydt_ds(:knon) = dt_ds(ni(:knon)) 1814 1819 end if 1815 1820 … … 2381 2386 CASE(is_lic) 2382 2387 ! Martin 2383 CALL surf_landice(itap, dtime, knon, ni, & 2384 rlon, rlat, debut, lafin, & 2385 yrmu0, ylwdown, yalb, zgeo1, & 2386 ysolsw, ysollw, yts, ypplay(:,1), & 2387 !!jyg ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),& 2388 ycdragh, ycdragm, yrain_f, ysnow_f, yt1, yq1,& 2389 AcoefH, AcoefQ, BcoefH, BcoefQ, & 2390 AcoefU, AcoefV, BcoefU, BcoefV, & 2391 ypsref, yu1, yv1, ygustiness, yrugoro, pctsrf, & 2392 ysnow, yqsurf, yqsol, yagesno, & 2393 ytsoil, yz0m, yz0h, SFRWL, yalb_dir_new, yalb_dif_new, yevap,yfluxsens,yfluxlat, & 2394 ytsurf_new, y_dflux_t, y_dflux_q, & 2395 yzmea, yzsig, ycldt, & 2396 ysnowhgt, yqsnow, ytoice, ysissnow, & 2397 yalb3_new, yrunoff, & 2398 y_flux_u1, y_flux_v1 & 2399 #ifdef ISO 2400 & ,yxtrain_f, yxtsnow_f,yxt1,yRland_ice & 2401 & ,yxtsnow,yxtsol,yxtevap & 2388 IF (landice_opt .LT. 2) THEN 2389 ! Land ice is treated by LMDZ and not by ORCHIDEE 2390 2391 CALL surf_landice(itap, dtime, knon, ni, & 2392 rlon, rlat, debut, lafin, & 2393 yrmu0, ylwdown, yalb, zgeo1, & 2394 ysolsw, ysollw, yts, ypplay(:,1), & 2395 !!jyg ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),& 2396 ycdragh, ycdragm, yrain_f, ysnow_f, yt1, yq1,& 2397 AcoefH, AcoefQ, BcoefH, BcoefQ, & 2398 AcoefU, AcoefV, BcoefU, BcoefV, & 2399 ypsref, yu1, yv1, ygustiness, yrugoro, pctsrf, & 2400 ysnow, yqsurf, yqsol, yagesno, & 2401 ytsoil, yz0m, yz0h, SFRWL, yalb_dir_new, yalb_dif_new, yevap,yfluxsens,yfluxlat, & 2402 ytsurf_new, y_dflux_t, y_dflux_q, & 2403 yzmea, yzsig, ycldt, & 2404 ysnowhgt, yqsnow, ytoice, ysissnow, & 2405 yalb3_new, yrunoff, & 2406 y_flux_u1, y_flux_v1 & 2407 #ifdef ISO 2408 & ,yxtrain_f, yxtsnow_f,yxt1,yRland_ice & 2409 & ,yxtsnow,yxtsol,yxtevap & 2402 2410 #endif 2403 & )2404 2405 !jyg<2406 !! alb3_lic(:)=0.2407 !>jyg2408 DO j = 1, knon2409 i = ni(j)2410 alb3_lic(i) = yalb3_new(j)2411 snowhgt(i) = ysnowhgt(j)2412 qsnow(i) = yqsnow(j)2413 to_ice(i) = ytoice(j)2414 sissnow(i) = ysissnow(j)2415 runoff(i) = yrunoff(j)2416 ENDDO2417 ! Martin2418 ! Special DICE MPL 05082013 puis BOMEX MPL 201504102419 IF (ok_prescr_ust) THEN2420 DO j=1,knon2421 y_flux_u1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yu(j,1)*ypplay(j,1)/RD/yt(j,1)2422 y_flux_v1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yv(j,1)*ypplay(j,1)/RD/yt(j,1)2423 ENDDO2424 ENDIF2425 2411 & ) 2412 2413 !jyg< 2414 !! alb3_lic(:)=0. 2415 !>jyg 2416 DO j = 1, knon 2417 i = ni(j) 2418 alb3_lic(i) = yalb3_new(j) 2419 snowhgt(i) = ysnowhgt(j) 2420 qsnow(i) = yqsnow(j) 2421 to_ice(i) = ytoice(j) 2422 sissnow(i) = ysissnow(j) 2423 runoff(i) = yrunoff(j) 2424 ENDDO 2425 ! Martin 2426 ! Special DICE MPL 05082013 puis BOMEX MPL 20150410 2427 IF (ok_prescr_ust) THEN 2428 DO j=1,knon 2429 y_flux_u1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yu(j,1)*ypplay(j,1)/RD/yt(j,1) 2430 y_flux_v1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yv(j,1)*ypplay(j,1)/RD/yt(j,1) 2431 ENDDO 2432 ENDIF 2433 2426 2434 #ifdef ISOVERIF 2427 do j=1,knon2428 do ixt=1,ntraciso2429 call iso_verif_noNaN(yxtevap(ixt,j), &2430 & 'pbl_surface 1095a: apres surf_landice')2431 call iso_verif_noNaN(yxtsol(ixt,j), &2432 & 'pbl_surface 1095b: apres surf_landice')2433 enddo2434 enddo2435 do j=1,knon 2436 do ixt=1,ntraciso 2437 call iso_verif_noNaN(yxtevap(ixt,j), & 2438 & 'pbl_surface 1095a: apres surf_landice') 2439 call iso_verif_noNaN(yxtsol(ixt,j), & 2440 & 'pbl_surface 1095b: apres surf_landice') 2441 enddo 2442 enddo 2435 2443 #endif 2436 2444 #ifdef ISOVERIF 2437 !write(*,*) 'pbl_surface_mod 1060: sortie surf_landice'2438 do j=1,knon2439 if (iso_eau.gt.0) then2440 call iso_verif_egalite(yxtsnow(iso_eau,j), &2441 & ysnow(j),'pbl_surf_mod 1064')2442 endif !if (iso_eau.gt.0) then2443 enddo !do i=1,klon2444 #endif 2445 2445 !write(*,*) 'pbl_surface_mod 1060: sortie surf_landice' 2446 do j=1,knon 2447 if (iso_eau.gt.0) then 2448 call iso_verif_egalite(yxtsnow(iso_eau,j), & 2449 & ysnow(j),'pbl_surf_mod 1064') 2450 endif !if (iso_eau.gt.0) then 2451 enddo !do i=1,klon 2452 #endif 2453 END IF 2446 2454 CASE(is_oce) 2447 2455 CALL surf_ocean(rlon, rlat, ysolsw, ysollw, yalb_vis, & … … 2458 2466 y_flux_u1, y_flux_v1, ydelta_sst(:knon), ydelta_sal(:knon), & 2459 2467 yds_ns(:knon), ydt_ns(:knon), ydter(:knon), ydser(:knon), & 2460 y tkt(:knon), ytks(:knon), ytaur(:knon), ysss &2468 ydt_ds(:knon), ytkt(:knon), ytks(:knon), ytaur(:knon), ysss & 2461 2469 #ifdef ISO 2462 2470 & ,yxtrain_f, yxtsnow_f,yxt1,Roce, & … … 3390 3398 taur(ni(:knon)) = ytaur(:knon) 3391 3399 sss(ni(:knon)) = ysss(:knon) 3400 3401 if (activate_ocean_skin == 2 .and. type_ocean == "couple") then 3402 dt_ds = missing_val 3403 dt_ds(ni(:knon)) = ydt_ds(:knon) 3404 end if 3392 3405 end if 3393 3406 … … 4051 4064 USE indice_sol_mod 4052 4065 #ifdef ISO 4053 USE infotrac_phy, ONLY: ntraciso,niso ! ajout C Risi pour isos4054 4066 #ifdef ISOVERIF 4055 4067 USE isotopes_mod, ONLY: iso_eau,ridicule … … 4128 4140 4129 4141 USE indice_sol_mod 4130 use phys_state_var_mod, only: delta_sal, ds_ns, dt_ns, delta_sst 4142 use phys_state_var_mod, only: delta_sal, ds_ns, dt_ns, delta_sst, dter, & 4143 dser, dt_ds 4131 4144 use config_ocean_skin_m, only: activate_ocean_skin 4132 #ifdef ISO4133 USE infotrac_phy, ONLY: ntraciso4134 #endif4135 4145 4136 4146 … … 4237 4247 delta_sal(i) = 0. 4238 4248 delta_sst(i) = 0. 4249 dter(i) = 0. 4250 dser(i) = 0. 4251 dt_ds(i) = 0. 4239 4252 end if 4240 4253
Note: See TracChangeset
for help on using the changeset viewer.