Ignore:
Timestamp:
Dec 6, 2022, 4:23:49 PM (17 months ago)
Author:
lguez
Message:

Merge branch Ocean_skin back into trunk

Location:
LMDZ6/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk

  • LMDZ6/trunk/libf/phylmd/cpl_mod.F90

    r4283 r4370  
    4949  !$OMP THREADPRIVATE(cpl_snow,cpl_evap,cpl_tsol)
    5050
    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)
    5355 
    5456  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_fder, cpl_albe, cpl_taux, cpl_tauy
     
    9698  !$OMP THREADPRIVATE(cpl_snow2D, cpl_evap2D, cpl_tsol2D)
    9799
    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(:, :)
    99102  !$OMP THREADPRIVATE(cpl_delta_sst_2D, cpl_delta_sal_2D)
     103  !$OMP THREADPRIVATE(cpl_dter_2D, cpl_dser_2D, cpl_dt_ds_2D)
    100104
    101105  REAL, ALLOCATABLE, DIMENSION(:,:,:), SAVE :: cpl_fder2D, cpl_albe2D
     
    242246   
    243247       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)
    245250          sum_error = sum_error + error
    246251       end if
     
    654659       precip_rain, precip_snow, evap, tsurf, fder, albsol, taux, tauy, windsp,&
    655660       sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol, delta_sst, &
    656        delta_sal)
     661       delta_sal, dTer, dSer, dt_ds)
    657662
    658663    ! This subroutine cumulates some fields for each time-step during
     
    687692    real, intent(in):: delta_sal(:) ! (knon)
    688693    ! 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
    689706
    690707! Local variables
     
    726743          cpl_delta_sst = 0.
    727744          cpl_delta_sal = 0.
     745          cpl_dter = 0.
     746          cpl_dser = 0.
     747          cpl_dt_ds = 0.
    728748       end if
    729749    ENDIF
     
    772792          cpl_delta_sst(ig) = cpl_delta_sst(ig) + delta_sst(ig) / REAL(nexca)
    773793          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)
    774797       end if
    775798     ENDDO
     
    821844          if (activate_ocean_skin == 2) then
    822845             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)
    824849             sum_error = sum_error + error
    825850          end if
     
    882907          CALL gath2cpl(cpl_delta_sst, cpl_delta_sst_2D, knon, knindex)
    883908          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)
    884912       end if
    885913    ENDIF
     
    12831311       tab_flds(:, :, ids_delta_sst) = cpl_delta_sst_2D
    12841312       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
    12851316    end if
    12861317   
     
    15221553    ENDIF
    15231554
    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)
    15251557
    15261558    IF (sum_error /= 0) THEN
Note: See TracChangeset for help on using the changeset viewer.