Changeset 4374
- Timestamp:
- Dec 12, 2022, 10:11:56 PM (2 years ago)
- Location:
- LMDZ6/trunk/libf/phylmdiso
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmdiso/pbl_surface_mod.F90
r4285 r4374 406 406 #endif 407 407 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 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 410 411 #ifdef CPP_XIOS 411 412 USE wxios, ONLY: missing_val … … 1029 1030 ! Martin 1030 1031 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):: 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 1035 1036 1036 1037 #ifdef ISO … … 1813 1814 ydelta_sal(:knon) = delta_sal(ni(:knon)) 1814 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)) 1815 1819 end if 1816 1820 … … 2462 2466 y_flux_u1, y_flux_v1, ydelta_sst(:knon), ydelta_sal(:knon), & 2463 2467 yds_ns(:knon), ydt_ns(:knon), ydter(:knon), ydser(:knon), & 2464 y tkt(:knon), ytks(:knon), ytaur(:knon), ysss &2468 ydt_ds(:knon), ytkt(:knon), ytks(:knon), ytaur(:knon), ysss & 2465 2469 #ifdef ISO 2466 2470 & ,yxtrain_f, yxtsnow_f,yxt1,Roce, & … … 3394 3398 taur(ni(:knon)) = ytaur(:knon) 3395 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 3396 3405 end if 3397 3406 … … 4131 4140 4132 4141 USE indice_sol_mod 4133 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 4134 4144 use config_ocean_skin_m, only: activate_ocean_skin 4135 4145 … … 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 -
LMDZ6/trunk/libf/phylmdiso/phyetat0_mod.F90
r4367 r4374 35 35 #endif 36 36 zstd, zthe, zval, ale_bl, ale_bl_trig, alp_bl, u10m, v10m, treedrg, & 37 ale_wake, ale_bl_stat, ds_ns, dt_ns, delta_sst, delta_sal, ratqs_inter 37 ale_wake, ale_bl_stat, ds_ns, dt_ns, delta_sst, delta_sal, dter, dser, & 38 dt_ds, ratqs_inter 38 39 !FC 39 40 USE geometry_mod, ONLY: longitude_deg, latitude_deg … … 599 600 found = phyetat0_get(delta_sst, "delta_SST", & 600 601 "ocean-air interface temperature minus bulk SST", 0.) 602 found = phyetat0_get(dter, "dter", & 603 "ocean-air interface temperature minus subskin temperature", 0.) 604 found = phyetat0_get(dser, "dser", & 605 "ocean-air interface salinity minus subskin salinity", 0.) 606 found = phyetat0_get(dt_ds, "dt_ds", "(tks / tkt) * dTer", 0.) 607 608 where (pctsrf(:, is_oce) == 0.) 609 delta_sst = missing_val 610 delta_sal = missing_val 611 dter = missing_val 612 dser = missing_val 613 dt_ds = missing_val 614 end where 601 615 end if 602 616 -
LMDZ6/trunk/libf/phylmdiso/phyredem.F90
r4298 r4374 30 30 du_gwd_rando, du_gwd_front, u10m, v10m, & 31 31 treedrg, solswfdiff, delta_sal, ds_ns, dt_ns, & 32 delta_sst, ratqs_inter 32 delta_sst, ratqs_inter, dter, dser, dt_ds 33 33 #ifdef ISO 34 34 USE phys_state_var_mod, ONLY: xtsol, fxtevap,xtrain_fall, xtsnow_fall, & … … 399 399 CALL put_field(pass, "delta_SST", & 400 400 "ocean-air interface temperature minus bulk SST", delta_sst) 401 CALL put_field(pass, "dter", & 402 "ocean-air interface temperature minus subskin temperature", & 403 dter) 404 CALL put_field(pass, "dser", & 405 "ocean-air interface salinity minus subskin salinity", dser) 406 CALL put_field(pass, "dt_ds", & 407 "(tks / tkt) * dTer", dt_ds) 401 408 end if 402 409 -
LMDZ6/trunk/libf/phylmdiso/phys_output_var_mod.F90
r3940 r4374 135 135 ! Ocean-atmosphere interface, subskin ocean and near-surface ocean: 136 136 137 REAL, ALLOCATABLE, SAVE:: dter(:) 138 ! Temperature variation in the diffusive microlayer, that is 139 ! ocean-air interface temperature minus subskin temperature. In K. 140 141 REAL, SAVE, ALLOCATABLE:: dser(:) 142 ! Temperature variation in the diffusive microlayer, that is 143 ! subskin temperature minus ocean-air interface temperature. In K. 144 145 REAL, SAVE, ALLOCATABLE:: tkt(:) 137 REAL, SAVE, ALLOCATABLE:: tkt(:) ! (klon) 146 138 ! épaisseur (m) de la couche de diffusion thermique (microlayer) 147 139 ! cool skin thickness 148 140 149 REAL, SAVE, ALLOCATABLE:: tks(:) 141 REAL, SAVE, ALLOCATABLE:: tks(:) ! (klon) 150 142 ! épaisseur (m) de la couche de diffusion de masse (microlayer) 151 143 152 REAL, SAVE, ALLOCATABLE:: taur(:) ! momentum flux due to rain, in Pa153 154 REAL, SAVE, ALLOCATABLE:: sss(:) 144 REAL, SAVE, ALLOCATABLE:: taur(:) ! (klon) momentum flux due to rain, in Pa 145 146 REAL, SAVE, ALLOCATABLE:: sss(:) ! (klon) 155 147 ! bulk salinity of the surface layer of the ocean, in ppt 156 148 157 !$OMP THREADPRIVATE( dter, dser,tkt, tks, taur, sss)149 !$OMP THREADPRIVATE(tkt, tks, taur, sss) 158 150 159 151 CONTAINS … … 216 208 IF (ok_gwd_rando) allocate(zustr_gwd_rando(klon), zvstr_gwd_rando(klon)) 217 209 218 if (activate_ocean_skin >= 1) allocate( dter(klon), dser(klon), tkt(klon), &219 tks(klon), taur(klon),sss(klon))210 if (activate_ocean_skin >= 1) allocate(tkt(klon), tks(klon), taur(klon), & 211 sss(klon)) 220 212 221 213 END SUBROUTINE phys_output_var_init -
LMDZ6/trunk/libf/phylmdiso/surf_ocean_mod.F90
r4143 r4374 20 20 z0m, z0h, SFRWL, alb_dir_new, alb_dif_new, evap, fluxsens, fluxlat, & 21 21 tsurf_new, dflux_s, dflux_l, lmt_bils, & 22 flux_u1, flux_v1, delta_sst, delta_sal, ds_ns, dt_ns, dter, dser, tkt, tks,&23 taur, sss &22 flux_u1, flux_v1, delta_sst, delta_sal, ds_ns, dt_ns, dter, dser, & 23 dt_ds, tkt, tks, taur, sss & 24 24 #ifdef ISO 25 25 & ,xtprecip_rain, xtprecip_snow,xtspechum,Roce, & … … 114 114 ! minus foundation temperature. (Can be negative.) In K. 115 115 116 REAL, intent(inout):: dter(:) ! (knon) 117 ! Temperature variation in the diffusive microlayer, that is 118 ! ocean-air interface temperature minus subskin temperature. In 119 ! K. 120 121 REAL, intent(inout):: dser(:) ! (knon) 122 ! Salinity variation in the diffusive microlayer, that is 123 ! ocean-air interface salinity minus subskin salinity. In ppt. 124 125 real, intent(inout):: dt_ds(:) ! (knon) 126 ! (tks / tkt) * dTer, in K 127 116 128 ! Output variables 117 129 !************************************************************************** … … 129 141 REAL, DIMENSION(klon), INTENT(OUT) :: flux_u1, flux_v1 130 142 131 REAL, intent(out):: dter(:) ! (knon)132 ! Temperature variation in the diffusive microlayer, that is133 ! ocean-air interface temperature minus subskin temperature. In134 ! K.135 136 REAL, intent(out):: dser(:) ! (knon)137 ! Salinity variation in the diffusive microlayer, that is138 ! ocean-air interface salinity minus subskin salinity. In ppt.139 140 143 REAL, intent(out):: tkt(:) ! (knon) 141 144 ! épaisseur (m) de la couche de diffusion thermique (microlayer) … … 152 155 ! defined for subscripts 1:knon, but we have to declare it with 153 156 ! size klon because of the coupling machinery.) 157 154 158 #ifdef ISO 155 159 REAL, DIMENSION(ntraciso,klon), INTENT(out) :: xtevap ! isotopes in surface evaporation flux … … 172 176 real s_int(knon) ! ocean-air interface salinity, in ppt 173 177 174 !************************************************************************** ****178 !************************************************************************** 175 179 176 180 #ifdef ISO … … 213 217 ENDIF 214 218 215 216 219 rhoa = PS(:KNON) / (Rd * temp_air(:knon) * (1. + retv * spechum(:knon))) 217 218 220 !****************************************************************************** 219 221 ! Switch according to type of ocean (couple, slab or forced) … … 232 234 qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, & 233 235 tsurf_new, dflux_s, dflux_l, sens_prec_liq, sss, delta_sal, rhoa, & 234 delta_sst )236 delta_sst, dTer, dSer, dt_ds) 235 237 236 238 CASE('slab') … … 376 378 delta_sst = t_int - tsurf_new(:knon) 377 379 delta_sal = s_int - sss(:knon) 378 if (activate_ocean_skin >= 2) tsurf_new(:knon) = t_int 380 381 if (activate_ocean_skin == 2) then 382 tsurf_new(:knon) = t_int 383 if (type_ocean == 'couple') dt_ds = (tks / tkt) * dter 384 end if 379 385 end if 380 386 381 387 END SUBROUTINE surf_ocean 382 388 !**************************************************************************** -
LMDZ6/trunk/libf/phylmdiso/wake.F90
r4143 r4374 2550 2550 d_deltaqw, sigmaw, d_sigmaw, alpha) 2551 2551 ! ------------------------------------------------------ 2552 ! D termination du coefficient alpha tel que les tendances2552 ! D\'etermination du coefficient alpha tel que les tendances 2553 2553 ! corriges alpha*d_G, pour toutes les grandeurs G, correspondent 2554 2554 ! a une humidite positive dans la zone (x) et dans la zone (w).
Note: See TracChangeset
for help on using the changeset viewer.