- Timestamp:
- Mar 29, 2023, 3:14:27 PM (20 months ago)
- Location:
- LMDZ6/branches/LMDZ_ECRad
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/LMDZ_ECRad
- Property svn:mergeinfo changed
-
LMDZ6/branches/LMDZ_ECRad/libf/phylmdiso/pbl_surface_mod.F90
r4143 r4482 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 … … 23 23 USE climb_wind_mod, ONLY : climb_wind_down, climb_wind_up 24 24 USE coef_diff_turb_mod, ONLY : coef_diff_turb 25 USE atke_exchange_coeff_mod, ONLY : atke_compute_km_kh 25 26 USE ioipsl_getin_p_mod, ONLY : getin_p 26 27 USE cdrag_mod … … 406 407 #endif 407 408 USE ioipsl_getin_p_mod, ONLY : getin_p 408 use phys_state_var_mod, only: ds_ns, dt_ns, delta_sst, delta_sal, zsig, zmea 409 use phys_output_var_mod, only: dter, dser, tkt, tks, taur, sss 409 use phys_state_var_mod, only: ds_ns, dt_ns, delta_sst, delta_sal, dter, & 410 dser, dt_ds, zsig, zmea 411 use phys_output_var_mod, only: tkt, tks, taur, sss 410 412 #ifdef CPP_XIOS 411 413 USE wxios, ONLY: missing_val … … 1028 1030 REAL, DIMENSION(klon) :: yrmu0 1029 1031 ! Martin 1030 1031 REAL, DIMENSION(klon):: ydelta_sst, ydelta_sal, yds_ns, ydt_ns, ydter, ydser,&1032 y tkt, ytks, ytaur, ysss1033 ! compression of delta_sst, delta_sal, ds_ns, dt_ns, dter, dser, tkt, tks,1034 ! taur, sss on ocean points1032 REAL, DIMENSION(klon) :: yri0 1033 REAL, DIMENSION(klon):: ydelta_sst, ydelta_sal, yds_ns, ydt_ns, ydter, & 1034 ydser, ydt_ds, ytkt, ytks, ytaur, ysss 1035 ! compression of delta_sst, delta_sal, ds_ns, dt_ns, dter, dser, 1036 ! dt_ds, tkt, tks, taur, sss on ocean points 1035 1037 1036 1038 #ifdef ISO … … 1277 1279 1278 1280 ytke=0. 1281 yri0(:)=0. 1279 1282 !FC 1280 1283 y_treedrg=0. … … 1813 1816 ydelta_sal(:knon) = delta_sal(ni(:knon)) 1814 1817 ydelta_sst(:knon) = delta_sst(ni(:knon)) 1818 ydter(:knon) = dter(ni(:knon)) 1819 ydser(:knon) = dser(ni(:knon)) 1820 ydt_ds(:knon) = dt_ds(ni(:knon)) 1815 1821 end if 1816 1822 … … 1844 1850 CALL cdrag(knon, nsrf, & 1845 1851 speed, yt(:,1), yq(:,1), zgeo1, ypaprs(:,1),& 1846 yts, yqsurf, yz0m, yz0h, &1852 yts, yqsurf, yz0m, yz0h, yri0, 0, & 1847 1853 ycdragm, ycdragh, zri1, pref ) 1848 1854 … … 1878 1884 CALL cdrag(knon, nsrf, & 1879 1885 speed_x, yt_x(:,1), yq_x(:,1), zgeo1_x, ypaprs(:,1),& 1880 yts_x, yqsurf_x, yz0m, yz0h, &1886 yts_x, yqsurf_x, yz0m, yz0h, yri0, 0, & 1881 1887 ycdragm_x, ycdragh_x, zri1_x, pref_x ) 1882 1888 … … 1905 1911 CALL cdrag(knon, nsrf, & 1906 1912 speed_w, yt_w(:,1), yq_w(:,1), zgeo1_w, ypaprs(:,1),& 1907 yts_w, yqsurf_w, yz0m, yz0h, &1913 yts_w, yqsurf_w, yz0m, yz0h, yri0, 0, & 1908 1914 ycdragm_w, ycdragh_w, zri1_w, pref_w ) 1909 1915 ! … … 1947 1953 1948 1954 ENDIF 1955 1956 IF (iflag_pbl>=50) THEN 1957 1958 CALL atke_compute_km_kh(knon,klev,yu,yv,yt, & 1959 ypplay,ypaprs,ytke,ycoefm, ycoefh) 1960 1961 ELSE 1962 1963 1949 1964 CALL coef_diff_turb(dtime, nsrf, knon, ni, & 1950 1965 ypaprs, ypplay, yu, yv, yq, yt, yts, yqsurf, ycdragm, & … … 1962 1977 ENDDO 1963 1978 ENDIF 1979 1980 ENDIF ! iflag_pbl >= 50 1981 1964 1982 IF (prt_level >=10) print *,'coef_diff_turb -> ycoefh ',ycoefh 1965 1983 ! … … 1977 1995 1978 1996 ENDIF 1997 1998 IF (iflag_pbl>=50) THEN 1999 2000 CALL atke_compute_km_kh(knon,klev,yu_x,yv_x,yt_x, & 2001 ypplay,ypaprs,ytke_x,ycoefm_x, ycoefh_x) 2002 2003 ELSE 2004 2005 1979 2006 CALL coef_diff_turb(dtime, nsrf, knon, ni, & 1980 2007 ypaprs, ypplay, yu_x, yv_x, yq_x, yt_x, yts_x, yqsurf_x, ycdragm_x, & … … 1992 2019 ENDDO 1993 2020 ENDIF 2021 2022 ENDIF ! iflag_pbl >= 50 2023 1994 2024 IF (prt_level >=10) print *,'coef_diff_turb -> ycoefh_x ',ycoefh_x 1995 2025 ! … … 2005 2035 print *,' args coef_diff_turb: ytke_w ', ytke_w 2006 2036 ENDIF 2037 2038 IF (iflag_pbl>=50) THEN 2039 2040 CALL atke_compute_km_kh(knon,klev,yu_w,yv_w,yt_w, & 2041 ypplay,ypaprs,ytke_w,ycoefm_w, ycoefh_w) 2042 2043 ELSE 2044 2045 2007 2046 CALL coef_diff_turb(dtime, nsrf, knon, ni, & 2008 2047 ypaprs, ypplay, yu_w, yv_w, yq_w, yt_w, yts_w, yqsurf_w, ycdragm_w, & … … 2019 2058 ENDDO 2020 2059 ENDIF 2060 2061 ENDIF ! iflag_pbl >= 50 2062 2021 2063 IF (prt_level >=10) print *,'coef_diff_turb -> ycoefh_w ',ycoefh_w 2022 2064 ! … … 2382 2424 CASE(is_lic) 2383 2425 ! Martin 2384 CALL surf_landice(itap, dtime, knon, ni, & 2385 rlon, rlat, debut, lafin, & 2386 yrmu0, ylwdown, yalb, zgeo1, & 2387 ysolsw, ysollw, yts, ypplay(:,1), & 2388 !!jyg ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),& 2389 ycdragh, ycdragm, yrain_f, ysnow_f, yt1, yq1,& 2390 AcoefH, AcoefQ, BcoefH, BcoefQ, & 2391 AcoefU, AcoefV, BcoefU, BcoefV, & 2392 ypsref, yu1, yv1, ygustiness, yrugoro, pctsrf, & 2393 ysnow, yqsurf, yqsol, yagesno, & 2394 ytsoil, yz0m, yz0h, SFRWL, yalb_dir_new, yalb_dif_new, yevap,yfluxsens,yfluxlat, & 2395 ytsurf_new, y_dflux_t, y_dflux_q, & 2396 yzmea, yzsig, ycldt, & 2397 ysnowhgt, yqsnow, ytoice, ysissnow, & 2398 yalb3_new, yrunoff, & 2399 y_flux_u1, y_flux_v1 & 2400 #ifdef ISO 2401 & ,yxtrain_f, yxtsnow_f,yxt1,yRland_ice & 2402 & ,yxtsnow,yxtsol,yxtevap & 2426 IF (landice_opt .LT. 2) THEN 2427 ! Land ice is treated by LMDZ and not by ORCHIDEE 2428 2429 CALL surf_landice(itap, dtime, knon, ni, & 2430 rlon, rlat, debut, lafin, & 2431 yrmu0, ylwdown, yalb, zgeo1, & 2432 ysolsw, ysollw, yts, ypplay(:,1), & 2433 !!jyg ycdragh, ycdragm, yrain_f, ysnow_f, yt(:,1), yq(:,1),& 2434 ycdragh, ycdragm, yrain_f, ysnow_f, yt1, yq1,& 2435 AcoefH, AcoefQ, BcoefH, BcoefQ, & 2436 AcoefU, AcoefV, BcoefU, BcoefV, & 2437 ypsref, yu1, yv1, ygustiness, yrugoro, pctsrf, & 2438 ysnow, yqsurf, yqsol, yagesno, & 2439 ytsoil, yz0m, yz0h, SFRWL, yalb_dir_new, yalb_dif_new, yevap,yfluxsens,yfluxlat, & 2440 ytsurf_new, y_dflux_t, y_dflux_q, & 2441 yzmea, yzsig, ycldt, & 2442 ysnowhgt, yqsnow, ytoice, ysissnow, & 2443 yalb3_new, yrunoff, & 2444 y_flux_u1, y_flux_v1 & 2445 #ifdef ISO 2446 & ,yxtrain_f, yxtsnow_f,yxt1,yRland_ice & 2447 & ,yxtsnow,yxtsol,yxtevap & 2403 2448 #endif 2404 & )2405 2406 !jyg<2407 !! alb3_lic(:)=0.2408 !>jyg2409 DO j = 1, knon2410 i = ni(j)2411 alb3_lic(i) = yalb3_new(j)2412 snowhgt(i) = ysnowhgt(j)2413 qsnow(i) = yqsnow(j)2414 to_ice(i) = ytoice(j)2415 sissnow(i) = ysissnow(j)2416 runoff(i) = yrunoff(j)2417 ENDDO2418 ! Martin2419 ! Special DICE MPL 05082013 puis BOMEX MPL 201504102420 IF (ok_prescr_ust) THEN2421 DO j=1,knon2422 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)2423 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)2424 ENDDO2425 ENDIF2426 2449 & ) 2450 2451 !jyg< 2452 !! alb3_lic(:)=0. 2453 !>jyg 2454 DO j = 1, knon 2455 i = ni(j) 2456 alb3_lic(i) = yalb3_new(j) 2457 snowhgt(i) = ysnowhgt(j) 2458 qsnow(i) = yqsnow(j) 2459 to_ice(i) = ytoice(j) 2460 sissnow(i) = ysissnow(j) 2461 runoff(i) = yrunoff(j) 2462 ENDDO 2463 ! Martin 2464 ! Special DICE MPL 05082013 puis BOMEX MPL 20150410 2465 IF (ok_prescr_ust) THEN 2466 DO j=1,knon 2467 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) 2468 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) 2469 ENDDO 2470 ENDIF 2471 2427 2472 #ifdef ISOVERIF 2428 do j=1,knon2429 do ixt=1,ntraciso2430 call iso_verif_noNaN(yxtevap(ixt,j), &2431 & 'pbl_surface 1095a: apres surf_landice')2432 call iso_verif_noNaN(yxtsol(ixt,j), &2433 & 'pbl_surface 1095b: apres surf_landice')2434 enddo2435 enddo2473 do j=1,knon 2474 do ixt=1,ntraciso 2475 call iso_verif_noNaN(yxtevap(ixt,j), & 2476 & 'pbl_surface 1095a: apres surf_landice') 2477 call iso_verif_noNaN(yxtsol(ixt,j), & 2478 & 'pbl_surface 1095b: apres surf_landice') 2479 enddo 2480 enddo 2436 2481 #endif 2437 2482 #ifdef ISOVERIF 2438 !write(*,*) 'pbl_surface_mod 1060: sortie surf_landice'2439 do j=1,knon2440 if (iso_eau.gt.0) then2441 call iso_verif_egalite(yxtsnow(iso_eau,j), &2442 & ysnow(j),'pbl_surf_mod 1064')2443 endif !if (iso_eau.gt.0) then2444 enddo !do i=1,klon2445 #endif 2446 2483 !write(*,*) 'pbl_surface_mod 1060: sortie surf_landice' 2484 do j=1,knon 2485 if (iso_eau.gt.0) then 2486 call iso_verif_egalite(yxtsnow(iso_eau,j), & 2487 & ysnow(j),'pbl_surf_mod 1064') 2488 endif !if (iso_eau.gt.0) then 2489 enddo !do i=1,klon 2490 #endif 2491 END IF 2447 2492 CASE(is_oce) 2448 2493 CALL surf_ocean(rlon, rlat, ysolsw, ysollw, yalb_vis, & … … 2459 2504 y_flux_u1, y_flux_v1, ydelta_sst(:knon), ydelta_sal(:knon), & 2460 2505 yds_ns(:knon), ydt_ns(:knon), ydter(:knon), ydser(:knon), & 2461 y tkt(:knon), ytks(:knon), ytaur(:knon), ysss &2506 ydt_ds(:knon), ytkt(:knon), ytks(:knon), ytaur(:knon), ysss & 2462 2507 #ifdef ISO 2463 2508 & ,yxtrain_f, yxtsnow_f,yxt1,Roce, & … … 3391 3436 taur(ni(:knon)) = ytaur(:knon) 3392 3437 sss(ni(:knon)) = ysss(:knon) 3438 3439 if (activate_ocean_skin == 2 .and. type_ocean == "couple") then 3440 dt_ds = missing_val 3441 dt_ds(ni(:knon)) = ydt_ds(:knon) 3442 end if 3393 3443 end if 3394 3444 … … 4128 4178 4129 4179 USE indice_sol_mod 4130 use phys_state_var_mod, only: delta_sal, ds_ns, dt_ns, delta_sst 4180 use phys_state_var_mod, only: delta_sal, ds_ns, dt_ns, delta_sst, dter, & 4181 dser, dt_ds 4131 4182 use config_ocean_skin_m, only: activate_ocean_skin 4132 4183 … … 4234 4285 delta_sal(i) = 0. 4235 4286 delta_sst(i) = 0. 4287 dter(i) = 0. 4288 dser(i) = 0. 4289 dt_ds(i) = 0. 4236 4290 end if 4237 4291
Note: See TracChangeset
for help on using the changeset viewer.