Changeset 3767 for LMDZ6/branches
- Timestamp:
- Jul 19, 2020, 5:25:06 PM (4 years ago)
- Location:
- LMDZ6/branches/Ocean_skin/libf/phylmd
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Ocean_skin/libf/phylmd/cpl_mod.F90
r3744 r3767 49 49 !$OMP THREADPRIVATE(cpl_snow,cpl_evap,cpl_tsol) 50 50 51 REAL, ALLOCATABLE, SAVE:: cpl_delta_sst(:), cpl_ s_int(:)52 !$OMP THREADPRIVATE(cpl_delta_sst, cpl_ s_int)51 REAL, ALLOCATABLE, SAVE:: cpl_delta_sst(:), cpl_delta_sal(:) 52 !$OMP THREADPRIVATE(cpl_delta_sst, cpl_delta_sal) 53 53 54 54 REAL, ALLOCATABLE, DIMENSION(:,:), SAVE :: cpl_fder, cpl_albe, cpl_taux, cpl_tauy … … 94 94 !$OMP THREADPRIVATE(cpl_snow2D, cpl_evap2D, cpl_tsol2D) 95 95 96 REAL, ALLOCATABLE, SAVE:: cpl_delta_sst_2D(:,:), cpl_ s_int_2D(:,:)97 !$OMP THREADPRIVATE(cpl_delta_sst_2D, cpl_ s_int_2D)96 REAL, ALLOCATABLE, SAVE:: cpl_delta_sst_2D(:,:), cpl_delta_sal_2D(:,:) 97 !$OMP THREADPRIVATE(cpl_delta_sst_2D, cpl_delta_sal_2D) 98 98 99 99 REAL, ALLOCATABLE, DIMENSION(:,:,:), SAVE :: cpl_fder2D, cpl_albe2D … … 237 237 238 238 if (activate_ocean_skin == 2) then 239 ALLOCATE(cpl_delta_sst(klon), cpl_ s_int(klon), stat = error)239 ALLOCATE(cpl_delta_sst(klon), cpl_delta_sal(klon), stat = error) 240 240 sum_error = sum_error + error 241 241 end if … … 646 646 precip_rain, precip_snow, evap, tsurf, fder, albsol, taux, tauy, windsp,& 647 647 sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol, delta_sst, & 648 s_int)648 delta_sal) 649 649 650 650 ! This subroutine cumulates some fields for each time-step during … … 677 677 ! K. Defined only if activate_ocean_skin >= 1. 678 678 679 real, intent(in):: s_int(:) ! (knon) ocean-air interface salinity, in ppt 679 real, intent(in):: delta_sal(:) ! (knon) 680 ! Ocean-air interface salinity minus bulk salinity, in ppt. 680 681 681 682 ! Local variables … … 715 716 716 717 if (activate_ocean_skin == 2) then 717 cpl_delta_sst (:knon)= 0.718 cpl_ s_int= 0.718 cpl_delta_sst = 0. 719 cpl_delta_sal = 0. 719 720 end if 720 721 ENDIF … … 762 763 if (activate_ocean_skin == 2) then 763 764 cpl_delta_sst(ig) = cpl_delta_sst(ig) + delta_sst(ig) / REAL(nexca) 764 cpl_ s_int(ig) = cpl_s_int(ig) + s_int(ig) / REAL(nexca)765 cpl_delta_sal(ig) = cpl_delta_sal(ig) + delta_sal(ig) / REAL(nexca) 765 766 end if 766 767 ENDDO … … 812 813 if (activate_ocean_skin == 2) then 813 814 ALLOCATE(cpl_delta_sst_2D(nbp_lon, jj_nb), & 814 cpl_ s_int_2D(nbp_lon, jj_nb), stat = error)815 cpl_delta_sal_2D(nbp_lon, jj_nb), stat = error) 815 816 sum_error = sum_error + error 816 817 end if … … 872 873 if (activate_ocean_skin == 2) then 873 874 CALL gath2cpl(cpl_delta_sst, cpl_delta_sst_2D, knon, knindex) 874 CALL gath2cpl(cpl_ s_int, cpl_s_int_2D, knon, knindex)875 CALL gath2cpl(cpl_delta_sal, cpl_delta_sal_2D, knon, knindex) 875 876 end if 876 877 ENDIF … … 1270 1271 if (activate_ocean_skin == 2) then 1271 1272 tab_flds(:, :, ids_delta_sst) = cpl_delta_sst_2D 1272 tab_flds(:, :, ids_ s_int) = cpl_s_int_2D1273 tab_flds(:, :, ids_delta_sal) = cpl_delta_sal_2D 1273 1274 end if 1274 1275 … … 1508 1509 ENDIF 1509 1510 1510 if (activate_ocean_skin == 2) deallocate(cpl_delta_sst_2d, cpl_ s_int_2d)1511 if (activate_ocean_skin == 2) deallocate(cpl_delta_sst_2d, cpl_delta_sal_2d) 1511 1512 1512 1513 IF (sum_error /= 0) THEN -
LMDZ6/branches/Ocean_skin/libf/phylmd/oasis.F90
r3744 r3767 59 59 INTEGER, PARAMETER :: ids_qraiic = 28 60 60 INTEGER, PARAMETER :: ids_qsnoic = 29 61 INTEGER, PARAMETER :: ids_delta_sst = 30, ids_ s_int= 3161 INTEGER, PARAMETER :: ids_delta_sst = 30, ids_delta_sal = 31 62 62 63 63 INTEGER, PARAMETER :: maxsend = 31 ! Maximum number of fields to send … … 192 192 infosend(ids_delta_sst)%action = .TRUE. 193 193 infosend(ids_delta_sst)%name = 'CODELSST' 194 infosend(ids_ s_int)%action = .TRUE.195 infosend(ids_ s_int)%name = 'COSSSSKN'194 infosend(ids_delta_sal)%action = .TRUE. 195 infosend(ids_delta_sal)%name = 'CODELSSS' 196 196 end if 197 197 -
LMDZ6/branches/Ocean_skin/libf/phylmd/ocean_cpl_mod.F90
r3744 r3767 55 55 radsol, snow, agesno, & 56 56 qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, & 57 tsurf_new, dflux_s, dflux_l, sens_prec_liq, sss, s_int, rhoa, delta_sst) 57 tsurf_new, dflux_s, dflux_l, sens_prec_liq, sss, delta_sal, rhoa, & 58 delta_sst) 58 59 59 60 ! … … 92 93 REAL, DIMENSION(klon), INTENT(IN) :: u1, v1, gustiness 93 94 REAL, INTENT(IN) :: tsurf_in(:) ! (klon) 94 real, intent(in):: s_int(:) ! (knon) ocean-air interface salinity, in ppt 95 96 real, intent(in):: delta_sal(:) ! (knon) 97 ! ocean-air interface salinity minus bulk salinity, in ppt 98 95 99 real, intent(in):: rhoa(:) ! (knon) density of moist air (kg / m3) 96 100 … … 215 219 fluxsens, precip_rain, precip_snow, evap, tsurf_new, fder_new, alb1, & 216 220 flux_u1, flux_v1, windsp, sens_prec_liq, sens_prec_sol, lat_prec_liq, & 217 lat_prec_sol, delta_sst, s_int)221 lat_prec_sol, delta_sst, delta_sal) 218 222 219 223 END SUBROUTINE ocean_cpl_noice -
LMDZ6/branches/Ocean_skin/libf/phylmd/pbl_surface_mod.F90
r3744 r3767 292 292 USE print_control_mod, ONLY : prt_level,lunout 293 293 USE ioipsl_getin_p_mod, ONLY : getin_p 294 use phys_state_var_mod, only: s_int, ds_ns, dt_ns, delta_sst294 use phys_state_var_mod, only: ds_ns, dt_ns, delta_sst, delta_sal 295 295 use phys_output_var_mod, only: dter, dser, tkt, tks, taur, sss 296 296 #ifdef CPP_XIOS … … 830 830 ! Martin 831 831 832 real, DIMENSION(klon):: ydelta_sst, y s_int, yds_ns, ydt_ns, ydter, ydser, &832 real, DIMENSION(klon):: ydelta_sst, ydelta_sal, yds_ns, ydt_ns, ydter, ydser, & 833 833 ytkt, ytks, ytaur, ysss 834 ! compression of delta_sst, s_int, ds_ns, dt_ns, dter, dser, tkt, tks,834 ! compression of delta_sst, delta_sal, ds_ns, dt_ns, dter, dser, tkt, tks, 835 835 ! taur, sss on ocean points 836 836 … … 1430 1430 if (nsrf == is_oce .and. activate_ocean_skin >= 1) then 1431 1431 if (activate_ocean_skin == 2 .and. type_ocean == "couple") then 1432 y s_int(:knon) = s_int(ni(:knon))1432 ydelta_sal(:knon) = delta_sal(ni(:knon)) 1433 1433 ydelta_sst(:knon) = delta_sst(ni(:knon)) 1434 1434 end if … … 1957 1957 yz0m, yz0h, SFRWL,yalb_dir_new, yalb_dif_new, yevap, yfluxsens,yfluxlat,& 1958 1958 ytsurf_new, y_dflux_t, y_dflux_q, slab_wfbils, & 1959 y_flux_u1, y_flux_v1, ydelta_sst(:knon), y s_int(:knon), &1959 y_flux_u1, y_flux_v1, ydelta_sst(:knon), ydelta_sal(:knon), & 1960 1960 yds_ns(:knon), ydt_ns(:knon), ydter(:knon), ydser(:knon), & 1961 1961 ytkt(:knon), ytks(:knon), ytaur(:knon), ysss) … … 2564 2564 2565 2565 if (nsrf == is_oce .and. activate_ocean_skin >= 1) then 2566 s_int= missing_val2566 delta_sal = missing_val 2567 2567 ds_ns = missing_val 2568 2568 dt_ns = missing_val … … 2575 2575 sss = missing_val 2576 2576 2577 s_int(ni(:knon)) = ys_int(:knon)2577 delta_sal(ni(:knon)) = ydelta_sal(:knon) 2578 2578 ds_ns(ni(:knon)) = yds_ns(:knon) 2579 2579 dt_ns(ni(:knon)) = ydt_ns(:knon) … … 3197 3197 3198 3198 USE indice_sol_mod 3199 use phys_state_var_mod, only: s_int, ds_ns, dt_ns, delta_sst3199 use phys_state_var_mod, only: delta_sal, ds_ns, dt_ns, delta_sst 3200 3200 use config_ocean_skin_m, only: activate_ocean_skin 3201 3201 … … 3288 3288 if (activate_ocean_skin == 2 & 3289 3289 .and. type_ocean == "couple") then 3290 s_int(i) = 35.3290 delta_sal(i) = 0. 3291 3291 delta_sst(i) = 0. 3292 3292 end if -
LMDZ6/branches/Ocean_skin/libf/phylmd/phyetat0.F90
r3766 r3767 19 19 wake_s, wake_dens, zgam, zmax0, zmea, zpic, zsig, & 20 20 zstd, zthe, zval, ale_bl, ale_bl_trig, alp_bl, u10m, v10m, treedrg, & 21 ale_wake, ale_bl_stat, s_int, ds_ns, dt_ns, delta_sst21 ale_wake, ale_bl_stat, ds_ns, dt_ns, delta_sst, delta_sal 22 22 !FC 23 23 USE geometry_mod, ONLY : longitude_deg, latitude_deg … … 525 525 if (activate_ocean_skin >= 1) then 526 526 if (activate_ocean_skin == 2 .and. type_ocean == 'couple') then 527 found = phyetat0_get(1, s_int, "S_int", &528 " salinity at air-ocean interface", 35.)527 found = phyetat0_get(1, delta_sal, "delta_sal", & 528 "ocean-air interface salinity minus bulk salinity", 0.) 529 529 found = phyetat0_get(1, delta_sst, "delta_SST", & 530 530 "ocean-air interface temperature minus bulk SST", 0.) … … 536 536 537 537 where (pctsrf(:, is_oce) == 0.) 538 s_int = missing_val539 538 ds_ns = missing_val 540 539 dt_ns = missing_val 541 540 delta_sst = missing_val 541 delta_sal = missing_val 542 542 end where 543 543 end if -
LMDZ6/branches/Ocean_skin/libf/phylmd/phyredem.F90
r3744 r3767 27 27 ale_wake, ale_bl_stat, & 28 28 du_gwd_rando, du_gwd_front, u10m, v10m, & 29 treedrg, s_int, ds_ns, dt_ns, delta_sst29 treedrg, delta_sal, ds_ns, dt_ns, delta_sst 30 30 USE geometry_mod, ONLY : longitude_deg, latitude_deg 31 31 USE iostart, ONLY: open_restartphy, close_restartphy, enddef_restartphy, put_field, put_var … … 343 343 if (activate_ocean_skin >= 1) then 344 344 if (activate_ocean_skin == 2 .and. type_ocean == 'couple') then 345 CALL put_field(pass, " S_int", "salinity at air-ocean interface", &346 s_int)345 CALL put_field(pass, "delta_sal", & 346 "ocean-air interface salinity minus bulk salinity", delta_sal) 347 347 CALL put_field(pass, "delta_SST", & 348 348 "ocean-air interface temperature minus bulk SST", delta_sst) -
LMDZ6/branches/Ocean_skin/libf/phylmd/phys_output_ctrlout_mod.F90
r3747 r3767 1951 1951 "ocean-air interface temperature minus bulk SST", "K", '') 1952 1952 1953 type(ctrl_out), save:: o_ s_int&1954 = ctrl_out([1, 10, 10, 1, 10, 10, 11, 11, 11, 11], ' S_int', &1955 "ocean-air interface salinity ", "ppt", '')1953 type(ctrl_out), save:: o_delta_sal & 1954 = ctrl_out([1, 10, 10, 1, 10, 10, 11, 11, 11, 11], 'delta_sal', & 1955 "ocean-air interface salinity minus bulk salinity", "ppt", '') 1956 1956 1957 1957 type(ctrl_out), save:: o_ds_ns & 1958 1958 = ctrl_out([1, 10, 10, 1, 10, 10, 11, 11, 11, 11], 'dS_ns', & 1959 " delta salinity near surface", "ppt", '')1959 "subskin salinity minus foundation salinity", "ppt", '') 1960 1960 1961 1961 type(ctrl_out), save:: o_dt_ns & 1962 1962 = ctrl_out([1, 10, 10, 1, 10, 10, 11, 11, 11, 11], 'dT_ns', & 1963 "sub -skin temperature minus foundation temperature", "K", '')1963 "subskin temperature minus foundation temperature", "K", '') 1964 1964 1965 1965 type(ctrl_out), save:: o_dter & 1966 1966 = ctrl_out([1, 10, 10, 1, 10, 10, 11, 11, 11, 11], 'dTer', & 1967 " interface temperature minus sub-skin temperature", "K", '')1967 "ocean-air interface temperature minus sub-skin temperature", "K", '') 1968 1968 1969 1969 type(ctrl_out), save:: o_dser & 1970 1970 = ctrl_out([1, 10, 10, 1, 10, 10, 11, 11, 11, 11], 'dSer', & 1971 " salinity variation in the diffusive microlayer", "ppt", '')1971 "ocean-air interface salinity minus sub-skin salinity", "ppt", '') 1972 1972 1973 1973 type(ctrl_out), save:: o_tkt & -
LMDZ6/branches/Ocean_skin/libf/phylmd/phys_output_write_mod.F90
r3747 r3767 202 202 !--interactive CO2 203 203 o_flx_co2_ocean, o_flx_co2_land, o_flx_co2_ff, o_flx_co2_bb, & 204 o_delta_sst, o_ s_int, o_ds_ns, o_dt_ns, o_dter, o_dser, o_tkt, o_tks, &205 o_t aur, o_sss204 o_delta_sst, o_delta_sal, o_ds_ns, o_dt_ns, o_dter, o_dser, o_tkt, & 205 o_tks, o_taur, o_sss 206 206 207 207 #ifdef CPP_StratAer … … 249 249 ulevSTD, vlevSTD, wlevSTD, philevSTD, qlevSTD, tlevSTD, & 250 250 rhlevSTD, O3STD, O3daySTD, uvSTD, vqSTD, vTSTD, wqSTD, vphiSTD, & 251 wTSTD, u2STD, v2STD, T2STD, missing_val_nf90, s_int, ds_ns, dt_ns, &252 d elta_sst251 wTSTD, u2STD, v2STD, T2STD, missing_val_nf90, delta_sal, ds_ns, & 252 dt_ns, delta_sst 253 253 254 254 USE phys_local_var_mod, ONLY: zxfluxlat, slp, ptstar, pt0, zxtsol, zt2m, & … … 2304 2304 if (activate_ocean_skin >= 1) then 2305 2305 CALL histwrite_phy(o_delta_sst, delta_sst) 2306 CALL histwrite_phy(o_ s_int, s_int)2306 CALL histwrite_phy(o_delta_sal, delta_sal) 2307 2307 CALL histwrite_phy(o_ds_ns, ds_ns) 2308 2308 CALL histwrite_phy(o_dt_ns, dt_ns) -
LMDZ6/branches/Ocean_skin/libf/phylmd/phys_state_var_mod.F90
r3744 r3767 430 430 !$OMP THREADPRIVATE(is_initialized) 431 431 432 ! Ocean-atmosphere interface, subskin ocean and near-surface ocean: 433 434 REAL, ALLOCATABLE, SAVE:: s_int(:) ! interface salinity, in ppt 435 432 ! Ocean-atmosphere interface: 433 436 434 REAL, ALLOCATABLE, SAVE:: ds_ns(:) ! (klon) 437 435 ! "delta salinity near surface". Salinity variation in the … … 448 446 ! K. Allocated and defined only if activate_ocean_skin >= 1. 449 447 450 !$OMP THREADPRIVATE(s_int, ds_ns, dt_ns, delta_sst) 448 REAL, ALLOCATABLE, SAVE:: delta_sal(:) ! (klon) 449 ! Ocean-air interface salinity minus bulk salinity, in ppt 450 451 !$OMP THREADPRIVATE(delta_sal, ds_ns, dt_ns, delta_sst) 451 452 452 453 CONTAINS … … 656 657 du_gwd_front(:,:) = 0 !ym missing init 657 658 ENDIF 658 if (activate_ocean_skin >= 1) ALLOCATE( s_int(klon), ds_ns(klon), &659 if (activate_ocean_skin >= 1) ALLOCATE(delta_sal(klon), ds_ns(klon), & 659 660 dt_ns(klon), delta_sst(klon)) 660 661 … … 795 796 !!! fin nrlmd le 10/04/2012 796 797 797 if (activate_ocean_skin >= 1) deALLOCATE(s_int, ds_ns, dt_ns, delta_sst) 798 if (activate_ocean_skin >= 1) deALLOCATE(delta_sal, ds_ns, dt_ns, & 799 delta_sst) 798 800 799 801 is_initialized=.FALSE. -
LMDZ6/branches/Ocean_skin/libf/phylmd/surf_ocean_mod.F90
r3744 r3767 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, s_int, ds_ns, dt_ns, dter, dser, tkt, tks, &22 flux_u1, flux_v1, delta_sst, delta_sal, ds_ns, dt_ns, dter, dser, tkt, tks, & 23 23 taur, sss) 24 24 … … 76 76 REAL, DIMENSION(klon), INTENT(inOUT):: z0h 77 77 78 real, intent(inout):: s_int(:) ! (knon) ocean-air interface salinity, in ppt 78 REAL, intent(inout):: delta_sst(:) ! (knon) 79 ! Ocean-air interface temperature minus bulk SST, in K. Defined 80 ! only if activate_ocean_skin >= 1. 81 82 real, intent(inout):: delta_sal(:) ! (knon) 83 ! Ocean-air interface salinity minus bulk salinity, in ppt. 79 84 80 85 REAL, intent(inout):: ds_ns(:) ! (knon) … … 88 93 ! minus foundation temperature. (Can be negative.) In K. 89 94 90 REAL, intent(inout):: delta_sst(:) ! (knon)91 ! Ocean-air interface temperature minus bulk SST, in K. Defined92 ! only if activate_ocean_skin >= 1.93 94 95 ! Output variables 95 !************************************************************************** ****96 !************************************************************************** 96 97 REAL, DIMENSION(klon), INTENT(OUT) :: z0m 97 98 !albedo SB >>> … … 132 133 133 134 ! Local variables 134 !************************************************************************* *****135 !************************************************************************* 135 136 INTEGER :: i, k 136 137 REAL :: tmp … … 144 145 145 146 REAL t_int(knon) ! ocean-air interface temperature, in K 146 147 !****************************************************************************** 147 real s_int(knon) ! ocean-air interface salinity, in ppt 148 149 !************************************************************************** 148 150 149 151 … … 188 190 radsol, snow, agesno, & 189 191 qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, & 190 tsurf_new, dflux_s, dflux_l, sens_prec_liq, sss, s_int, rhoa, &192 tsurf_new, dflux_s, dflux_l, sens_prec_liq, sss, delta_sal, rhoa, & 191 193 delta_sst) 192 194 … … 327 329 rns = swnet(:knon)) 328 330 delta_sst = t_int - tsurf_new(:knon) 331 delta_sal = s_int - sss(:knon) 329 332 if (activate_ocean_skin >= 2) tsurf_new(:knon) = t_int 330 333 end if
Note: See TracChangeset
for help on using the changeset viewer.