Changeset 4370
- Timestamp:
- Dec 6, 2022, 4:23:49 PM (2 years ago)
- Location:
- LMDZ6/trunk
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk ¶
- Property svn:mergeinfo changed
/LMDZ6/branches/Ocean_skin merged: 4013,4020-4021,4024-4025,4368-4369
- Property svn:mergeinfo changed
-
TabularUnified LMDZ6/trunk/libf/phylmd/cpl_mod.F90 ¶
r4283 r4370 49 49 !$OMP THREADPRIVATE(cpl_snow,cpl_evap,cpl_tsol) 50 50 51 REAL, ALLOCATABLE, SAVE:: cpl_delta_sst(:), cpl_delta_sal(:) 52 !$OMP THREADPRIVATE(cpl_delta_sst, cpl_delta_sal) 51 REAL, ALLOCATABLE, SAVE:: cpl_delta_sst(:), cpl_delta_sal(:), cpl_dter(:), & 52 cpl_dser(:), cpl_dt_ds(:) 53 !$OMP THREADPRIVATE(cpl_delta_sst, cpl_delta_sal, cpl_dter, cpl_dser) 54 !$OMP THREADPRIVATE(cpl_dt_ds) 53 55 54 56 REAL, ALLOCATABLE, DIMENSION(:,:), SAVE :: cpl_fder, cpl_albe, cpl_taux, cpl_tauy … … 96 98 !$OMP THREADPRIVATE(cpl_snow2D, cpl_evap2D, cpl_tsol2D) 97 99 98 REAL, ALLOCATABLE, SAVE:: cpl_delta_sst_2D(:,:), cpl_delta_sal_2D(:,:) 100 REAL, ALLOCATABLE, SAVE:: cpl_delta_sst_2D(:, :), cpl_delta_sal_2D(:, :), & 101 cpl_dter_2D(:, :), cpl_dser_2D(:, :), cpl_dt_ds_2D(:, :) 99 102 !$OMP THREADPRIVATE(cpl_delta_sst_2D, cpl_delta_sal_2D) 103 !$OMP THREADPRIVATE(cpl_dter_2D, cpl_dser_2D, cpl_dt_ds_2D) 100 104 101 105 REAL, ALLOCATABLE, DIMENSION(:,:,:), SAVE :: cpl_fder2D, cpl_albe2D … … 242 246 243 247 if (activate_ocean_skin == 2) then 244 ALLOCATE(cpl_delta_sst(klon), cpl_delta_sal(klon), stat = error) 248 ALLOCATE(cpl_delta_sst(klon), cpl_delta_sal(klon), cpl_dter(klon), & 249 cpl_dser(klon), cpl_dt_ds(klon), stat = error) 245 250 sum_error = sum_error + error 246 251 end if … … 654 659 precip_rain, precip_snow, evap, tsurf, fder, albsol, taux, tauy, windsp,& 655 660 sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol, delta_sst, & 656 delta_sal )661 delta_sal, dTer, dSer, dt_ds) 657 662 658 663 ! This subroutine cumulates some fields for each time-step during … … 687 692 real, intent(in):: delta_sal(:) ! (knon) 688 693 ! Ocean-air interface salinity minus bulk salinity, in ppt. 694 695 REAL, intent(in):: dter(:) ! (knon) 696 ! Temperature variation in the diffusive microlayer, that is 697 ! ocean-air interface temperature minus subskin temperature. In 698 ! K. 699 700 REAL, intent(in):: dser(:) ! (knon) 701 ! Salinity variation in the diffusive microlayer, that is 702 ! ocean-air interface salinity minus subskin salinity. In ppt. 703 704 real, intent(in):: dt_ds(:) ! (knon) 705 ! (tks / tkt) * dTer, in K 689 706 690 707 ! Local variables … … 726 743 cpl_delta_sst = 0. 727 744 cpl_delta_sal = 0. 745 cpl_dter = 0. 746 cpl_dser = 0. 747 cpl_dt_ds = 0. 728 748 end if 729 749 ENDIF … … 772 792 cpl_delta_sst(ig) = cpl_delta_sst(ig) + delta_sst(ig) / REAL(nexca) 773 793 cpl_delta_sal(ig) = cpl_delta_sal(ig) + delta_sal(ig) / REAL(nexca) 794 cpl_dter(ig) = cpl_dter(ig) + dter(ig) / REAL(nexca) 795 cpl_dser(ig) = cpl_dser(ig) + dser(ig) / REAL(nexca) 796 cpl_dt_ds(ig) = cpl_dt_ds(ig) + dt_ds(ig) / REAL(nexca) 774 797 end if 775 798 ENDDO … … 821 844 if (activate_ocean_skin == 2) then 822 845 ALLOCATE(cpl_delta_sst_2D(nbp_lon, jj_nb), & 823 cpl_delta_sal_2D(nbp_lon, jj_nb), stat = error) 846 cpl_delta_sal_2D(nbp_lon, jj_nb), & 847 cpl_dter_2D(nbp_lon, jj_nb), cpl_dser_2D(nbp_lon, jj_nb), & 848 cpl_dt_ds_2D(nbp_lon, jj_nb), stat = error) 824 849 sum_error = sum_error + error 825 850 end if … … 882 907 CALL gath2cpl(cpl_delta_sst, cpl_delta_sst_2D, knon, knindex) 883 908 CALL gath2cpl(cpl_delta_sal, cpl_delta_sal_2D, knon, knindex) 909 CALL gath2cpl(cpl_dter, cpl_dter_2D, knon, knindex) 910 CALL gath2cpl(cpl_dser, cpl_dser_2D, knon, knindex) 911 CALL gath2cpl(cpl_dt_ds, cpl_dt_ds_2D, knon, knindex) 884 912 end if 885 913 ENDIF … … 1283 1311 tab_flds(:, :, ids_delta_sst) = cpl_delta_sst_2D 1284 1312 tab_flds(:, :, ids_delta_sal) = cpl_delta_sal_2D 1313 tab_flds(:, :, ids_dter) = cpl_dter_2D 1314 tab_flds(:, :, ids_dser) = cpl_dser_2D 1315 tab_flds(:, :, ids_dt_ds) = cpl_dt_ds_2D 1285 1316 end if 1286 1317 … … 1522 1553 ENDIF 1523 1554 1524 if (activate_ocean_skin == 2) deallocate(cpl_delta_sst_2d, cpl_delta_sal_2d) 1555 if (activate_ocean_skin == 2) deallocate(cpl_delta_sst_2d, & 1556 cpl_delta_sal_2d, cpl_dter_2d, cpl_dser_2d, cpl_dt_ds_2d) 1525 1557 1526 1558 IF (sum_error /= 0) THEN -
TabularUnified LMDZ6/trunk/libf/phylmd/oasis.F90 ¶
r4247 r4370 62 62 INTEGER, PARAMETER :: ids_qraiic = 28 63 63 INTEGER, PARAMETER :: ids_qsnoic = 29 64 INTEGER, PARAMETER :: ids_delta_sst = 30, ids_delta_sal = 31 65 66 INTEGER, PARAMETER :: maxsend = 31 ! Maximum number of fields to send 64 INTEGER, PARAMETER :: ids_delta_sst = 30, ids_delta_sal = 31, ids_dter = 32, & 65 ids_dser = 33, ids_dt_ds = 34 66 67 INTEGER, PARAMETER :: maxsend = 34 ! Maximum number of fields to send 67 68 68 69 ! Id for fields received from ocean … … 201 202 infosend(ids_delta_sal)%action = .TRUE. 202 203 infosend(ids_delta_sal)%name = 'CODELSSS' 204 infosend(ids_dter)%action = .TRUE. 205 infosend(ids_dter)%name = 'CODELTER' 206 infosend(ids_dser)%action = .TRUE. 207 infosend(ids_dser)%name = 'CODELSER' 208 infosend(ids_dt_ds)%action = .TRUE. 209 infosend(ids_dt_ds)%name = 'CODTDS' 203 210 end if 204 211 -
TabularUnified LMDZ6/trunk/libf/phylmd/ocean_cpl_mod.F90 ¶
r3815 r4370 56 56 qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, & 57 57 tsurf_new, dflux_s, dflux_l, sens_prec_liq, sss, delta_sal, rhoa, & 58 delta_sst )58 delta_sst, dTer, dSer, dt_ds) 59 59 60 60 ! … … 103 103 ! only if activate_ocean_skin >= 1. 104 104 105 REAL, intent(in):: dter(:) ! (knon) 106 ! Temperature variation in the diffusive microlayer, that is 107 ! ocean-air interface temperature minus subskin temperature. In 108 ! K. 109 110 REAL, intent(in):: dser(:) ! (knon) 111 ! Salinity variation in the diffusive microlayer, that is 112 ! ocean-air interface salinity minus subskin salinity. In ppt. 113 114 real, intent(in):: dt_ds(:) ! (knon) 115 ! (tks / tkt) * dTer, in K 116 105 117 ! In/Output arguments 106 118 !**************************************************************************************** … … 219 231 fluxsens, precip_rain, precip_snow, evap, tsurf_new, fder_new, alb1, & 220 232 flux_u1, flux_v1, windsp, sens_prec_liq, sens_prec_sol, lat_prec_liq, & 221 lat_prec_sol, delta_sst, delta_sal )233 lat_prec_sol, delta_sst, delta_sal, dTer, dSer, dt_ds) 222 234 223 235 END SUBROUTINE ocean_cpl_noice -
TabularUnified LMDZ6/trunk/libf/phylmd/pbl_surface_mod.F90 ¶
r4283 r4370 313 313 USE print_control_mod, ONLY : prt_level,lunout 314 314 USE ioipsl_getin_p_mod, ONLY : getin_p 315 use phys_state_var_mod, only: ds_ns, dt_ns, delta_sst, delta_sal, zsig, zmea 316 use phys_output_var_mod, only: dter, dser, tkt, tks, taur, sss 315 use phys_state_var_mod, only: ds_ns, dt_ns, delta_sst, delta_sal, dter, & 316 dser, dt_ds, zsig, zmea 317 use phys_output_var_mod, only: tkt, tks, taur, sss 317 318 #ifdef CPP_XIOS 318 319 USE wxios, ONLY: missing_val … … 875 876 ! Martin 876 877 877 REAL, DIMENSION(klon):: ydelta_sst, ydelta_sal, yds_ns, ydt_ns, ydter, ydser,&878 y tkt, ytks, ytaur, ysss879 ! compression of delta_sst, delta_sal, ds_ns, dt_ns, dter, dser, tkt, tks,880 ! taur, sss on ocean points878 REAL, DIMENSION(klon):: ydelta_sst, ydelta_sal, yds_ns, ydt_ns, ydter, & 879 ydser, ydt_ds, ytkt, ytks, ytaur, ysss 880 ! compression of delta_sst, delta_sal, ds_ns, dt_ns, dter, dser, 881 ! dt_ds, tkt, tks, taur, sss on ocean points 881 882 882 883 !**************************************************************************************** … … 1533 1534 ydelta_sal(:knon) = delta_sal(ni(:knon)) 1534 1535 ydelta_sst(:knon) = delta_sst(ni(:knon)) 1536 ydter(:knon) = dter(ni(:knon)) 1537 ydser(:knon) = dser(ni(:knon)) 1538 ydt_ds(:knon) = dt_ds(ni(:knon)) 1535 1539 end if 1536 1540 … … 2113 2117 y_flux_u1, y_flux_v1, ydelta_sst(:knon), ydelta_sal(:knon), & 2114 2118 yds_ns(:knon), ydt_ns(:knon), ydter(:knon), ydser(:knon), & 2115 y tkt(:knon), ytks(:knon), ytaur(:knon), ysss)2119 ydt_ds(:knon), ytkt(:knon), ytks(:knon), ytaur(:knon), ysss) 2116 2120 IF (prt_level >=10) THEN 2117 2121 print *,'arg de surf_ocean: ycdragh ',ycdragh … … 2860 2864 taur(ni(:knon)) = ytaur(:knon) 2861 2865 sss(ni(:knon)) = ysss(:knon) 2866 2867 if (activate_ocean_skin == 2 .and. type_ocean == "couple") then 2868 dt_ds = missing_val 2869 dt_ds(ni(:knon)) = ydt_ds(:knon) 2870 end if 2862 2871 end if 2863 2872 … … 3527 3536 3528 3537 USE indice_sol_mod 3529 use phys_state_var_mod, only: delta_sal, ds_ns, dt_ns, delta_sst 3538 use phys_state_var_mod, only: delta_sal, ds_ns, dt_ns, delta_sst, dter, & 3539 dser, dt_ds 3530 3540 use config_ocean_skin_m, only: activate_ocean_skin 3531 3541 … … 3620 3630 delta_sal(i) = 0. 3621 3631 delta_sst(i) = 0. 3632 dter(i) = 0. 3633 dser(i) = 0. 3634 dt_ds(i) = 0. 3622 3635 end if 3623 3636 -
TabularUnified LMDZ6/trunk/libf/phylmd/phyetat0_mod.F90 ¶
r4367 r4370 27 27 wake_s, wake_dens, awake_dens, cv_gen, zgam, zmax0, zmea, zpic, zsig, & 28 28 zstd, zthe, zval, ale_bl, ale_bl_trig, alp_bl, u10m, v10m, treedrg, & 29 ale_wake, ale_bl_stat, ds_ns, dt_ns, delta_sst, delta_sal, ratqs_inter 29 ale_wake, ale_bl_stat, ds_ns, dt_ns, delta_sst, delta_sal, dter, dser, & 30 dt_ds, ratqs_inter 30 31 !FC 31 32 USE geometry_mod, ONLY: longitude_deg, latitude_deg … … 558 559 found = phyetat0_get(delta_sst, "delta_SST", & 559 560 "ocean-air interface temperature minus bulk SST", 0.) 561 found = phyetat0_get(dter, "dter", & 562 "ocean-air interface temperature minus subskin temperature", 0.) 563 found = phyetat0_get(dser, "dser", & 564 "ocean-air interface salinity minus subskin salinity", 0.) 565 found = phyetat0_get(dt_ds, "dt_ds", "(tks / tkt) * dTer", 0.) 566 567 where (pctsrf(:, is_oce) == 0.) 568 delta_sst = missing_val 569 delta_sal = missing_val 570 dter = missing_val 571 dser = missing_val 572 dt_ds = missing_val 573 end where 560 574 end if 561 575 -
TabularUnified LMDZ6/trunk/libf/phylmd/phyredem.F90 ¶
r4298 r4370 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 34 34 USE geometry_mod, ONLY : longitude_deg, latitude_deg … … 378 378 CALL put_field(pass, "delta_SST", & 379 379 "ocean-air interface temperature minus bulk SST", delta_sst) 380 CALL put_field(pass, "dter", & 381 "ocean-air interface temperature minus subskin temperature", & 382 dter) 383 CALL put_field(pass, "dser", & 384 "ocean-air interface salinity minus subskin salinity", dser) 385 CALL put_field(pass, "dt_ds", & 386 "(tks / tkt) * dTer", dt_ds) 380 387 end if 381 388 -
TabularUnified LMDZ6/trunk/libf/phylmd/phys_output_var_mod.F90 ¶
r4046 r4370 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 -
TabularUnified LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90 ¶
r4293 r4370 271 271 xtrain_con, xtsnow_con, xtrain_fall, xtsnow_fall, & 272 272 #endif 273 dt_ns, delta_sst 273 dt_ns, delta_sst, dter, dser 274 274 275 275 USE phys_local_var_mod, ONLY: zxfluxlat, slp, ptstar, pt0, zxtsol, zt2m, & … … 390 390 alt_tropo, & 391 391 !Ionela 392 ok_4xCO2atm, dter, dser,tkt, tks, taur, sss392 ok_4xCO2atm, tkt, tks, taur, sss 393 393 394 394 USE ocean_slab_mod, ONLY: nslay, tslab, slab_bilg, tice, seaice, & -
TabularUnified LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90 ¶
r4296 r4370 489 489 ! Ocean-air interface salinity minus bulk salinity, in ppt 490 490 491 !$OMP THREADPRIVATE(delta_sal, ds_ns, dt_ns, delta_sst) 491 REAL, ALLOCATABLE, SAVE:: dter(:) ! (klon) 492 ! Temperature variation in the diffusive microlayer, that is 493 ! ocean-air interface temperature minus subskin temperature. In K. 494 495 REAL, SAVE, ALLOCATABLE:: dser(:) ! (klon) 496 ! Salinity variation in the diffusive microlayer, that is 497 ! ocean-air interface salinity minus subskin salinity. In ppt. 498 499 real, SAVE, ALLOCATABLE:: dt_ds(:) ! (klon) 500 ! (tks / tkt) * dTer, in K 501 502 !$OMP THREADPRIVATE(delta_sal, ds_ns, dt_ns, delta_sst, dter, dser, dt_ds) 492 503 493 504 CONTAINS … … 503 514 USE indice_sol_mod 504 515 use config_ocean_skin_m, only: activate_ocean_skin 516 use surface_data, only: type_ocean 505 517 IMPLICIT NONE 506 518 … … 726 738 du_gwd_front(:,:) = 0 !ym missing init 727 739 ENDIF 728 if (activate_ocean_skin >= 1) ALLOCATE(delta_sal(klon), ds_ns(klon), & 729 dt_ns(klon), delta_sst(klon)) 740 741 if (activate_ocean_skin >= 1) then 742 ALLOCATE(delta_sal(klon), ds_ns(klon), dt_ns(klon), delta_sst(klon), & 743 dter(klon), dser(klon)) 744 if (activate_ocean_skin == 2 .and. type_ocean == "couple") & 745 allocate(dt_ds(klon)) 746 end if 730 747 731 748 END SUBROUTINE phys_state_var_init … … 737 754 USE indice_sol_mod 738 755 use config_ocean_skin_m, only: activate_ocean_skin 756 use surface_data, only: type_ocean 739 757 IMPLICIT NONE 740 758 include "clesphys.h" … … 865 883 DEALLOCATE(ratqs_inter) 866 884 867 if (activate_ocean_skin >= 1) deALLOCATE(delta_sal, ds_ns, dt_ns, & 868 delta_sst) 885 if (activate_ocean_skin >= 1) then 886 deALLOCATE(delta_sal, ds_ns, dt_ns, delta_sst, dter, dser) 887 if (activate_ocean_skin == 2 .and. type_ocean == "couple") & 888 deALLOCATE(dt_ds) 889 end if 869 890 870 891 #ifdef ISO -
TabularUnified LMDZ6/trunk/libf/phylmd/surf_ocean_mod.F90 ¶
r3906 r4370 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 25 25 use albedo, only: alboc, alboc_cd … … 94 94 ! minus foundation temperature. (Can be negative.) In K. 95 95 96 REAL, intent(inout):: dter(:) ! (knon) 97 ! Temperature variation in the diffusive microlayer, that is 98 ! ocean-air interface temperature minus subskin temperature. In 99 ! K. 100 101 REAL, intent(inout):: dser(:) ! (knon) 102 ! Salinity variation in the diffusive microlayer, that is 103 ! ocean-air interface salinity minus subskin salinity. In ppt. 104 105 real, intent(inout):: dt_ds(:) ! (knon) 106 ! (tks / tkt) * dTer, in K 107 96 108 ! Output variables 97 109 !************************************************************************** … … 109 121 REAL, DIMENSION(klon), INTENT(OUT) :: flux_u1, flux_v1 110 122 111 REAL, intent(out):: dter(:) ! (knon)112 ! Temperature variation in the diffusive microlayer, that is113 ! ocean-air interface temperature minus subskin temperature. In114 ! K.115 116 REAL, intent(out):: dser(:) ! (knon)117 ! Salinity variation in the diffusive microlayer, that is118 ! ocean-air interface salinity minus subskin salinity. In ppt.119 120 123 REAL, intent(out):: tkt(:) ! (knon) 121 124 ! épaisseur (m) de la couche de diffusion thermique (microlayer) … … 192 195 qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, & 193 196 tsurf_new, dflux_s, dflux_l, sens_prec_liq, sss, delta_sal, rhoa, & 194 delta_sst )197 delta_sst, dTer, dSer, dt_ds) 195 198 196 199 CASE('slab') … … 331 334 delta_sst = t_int - tsurf_new(:knon) 332 335 delta_sal = s_int - sss(:knon) 333 if (activate_ocean_skin >= 2) tsurf_new(:knon) = t_int 336 337 if (activate_ocean_skin == 2) then 338 tsurf_new(:knon) = t_int 339 if (type_ocean == 'couple') dt_ds = (tks / tkt) * dter 340 end if 334 341 end if 335 342 -
TabularUnified LMDZ6/trunk/libf/phylmd/wake.F90 ¶
r4295 r4370 2238 2238 d_deltaqw, sigmaw, d_sigmaw, alpha) 2239 2239 ! ------------------------------------------------------ 2240 ! D termination du coefficient alpha tel que les tendances2240 ! D\'etermination du coefficient alpha tel que les tendances 2241 2241 ! corriges alpha*d_G, pour toutes les grandeurs G, correspondent 2242 2242 ! a une humidite positive dans la zone (x) et dans la zone (w).
Note: See TracChangeset
for help on using the changeset viewer.