Ignore:
Timestamp:
Sep 26, 2022, 2:43:00 PM (19 months ago)
Author:
jghattas
Message:

Added landice_opt=2 : Treat continental land ice fractions in ORCHIDEE => pctsrf(:,is_lic) = 0.0 in LMDZ.

For this option, some more variables are needed from ORCHIDEE. Therfor change in the interface LMDZ-ORCHIDEE in surf_land_orchidee_mod is done. Previous interface is moved to surf_land_orchidee_nolic_mod.f90. To compile with previous interface, cpp key ORCHIDEE_NOLIC is added. Previous interface is compiled with argument orchidee2.1 in makelmdz and makelmdz_fcm.

At the same time, when the interface was changed, the variable yrmu0(coszang) was added in the call to intersurf_initialize_gathered. This is needed in ORCHIDEE to better initialize the model.

Modifications done by Etienne Vignon and Josefine Ghattas

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/cpl_mod.F90

    r3815 r4283  
    6464  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: cpl_rriv2D, cpl_rcoa2D, cpl_rlic2D
    6565  !$OMP THREADPRIVATE(cpl_rriv2D,cpl_rcoa2D,cpl_rlic2D)
     66  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: rlic_in_frac2D  ! fraction for continental ice
     67  !$OMP THREADPRIVATE(rlic_in_frac2D)
    6668
    6769! variables read from coupler :
     
    225227    sum_error = sum_error + error
    226228    ALLOCATE(cpl_rlic2D(nbp_lon,jj_nb), stat=error)
     229    sum_error = sum_error + error
     230    ALLOCATE(rlic_in_frac2D(nbp_lon,jj_nb), stat=error)
    227231    sum_error = sum_error + error
    228232    ALLOCATE(read_sst(nbp_lon, jj_nb), stat = error)
     
    11511155!
    11521156
    1153   SUBROUTINE cpl_send_landice_fields(itime, knon, knindex, rlic_in)
     1157  SUBROUTINE cpl_send_landice_fields(itime, knon, knindex, rlic_in, rlic_in_frac)
    11541158! This subroutine cumulates the field for melting ice for each time-step
    11551159! during a coupling period. This routine will not send to coupler. Sending
     
    11651169    INTEGER, DIMENSION(klon), INTENT(IN)      :: knindex
    11661170    REAL, DIMENSION(klon), INTENT(IN)         :: rlic_in
     1171    REAL, DIMENSION(klon), INTENT(IN)         :: rlic_in_frac  ! Fraction for continental ice, can be equal to
     1172                                                               ! pctsrf(:,is_lic) or not, depending on landice_opt
     1173   
    11671174
    11681175! Local varibales
     
    11791186!$OMP END MASTER
    11801187    CALL gath2cpl(rlic_in, rlic2D, knon, knindex)
    1181 
     1188    CALL gath2cpl(rlic_in_frac(:), rlic_in_frac2D(:,:), knon, knindex)
    11821189!*************************************************************************************
    11831190! Reset field to zero in the beginning of a new coupling period
     
    12981305    CALL gath2cpl(pctsrf(:,is_oce), pctsrf2D(:,:,is_oce), klon, unity)
    12991306    CALL gath2cpl(pctsrf(:,is_sic), pctsrf2D(:,:,is_sic), klon, unity)
    1300     CALL gath2cpl(pctsrf(:,is_lic), pctsrf2D(:,:,is_lic), klon, unity)
     1307
     1308
     1309
    13011310
    13021311!*************************************************************************************
     
    13111320        DO j = 1, jj_nb
    13121321           tmp_calv(:,j) = DOT_PRODUCT (cpl_rlic2D(1:nbp_lon,j), &
    1313                 pctsrf2D(1:nbp_lon,j,is_lic)) / REAL(nbp_lon)
     1322                rlic_in_frac2D(1:nbp_lon,j)) / REAL(nbp_lon)
    13141323        ENDDO
    13151324   
     
    13481357            calving(k)=0
    13491358            DO j = 1, jj_nb
    1350                calving(k)= calving(k)+DOT_PRODUCT(cpl_rlic2D(:,j)*area_calving(:,j,k),pctsrf2D(:,j,is_lic))
     1359               calving(k)= calving(k)+DOT_PRODUCT(cpl_rlic2D(:,j)*area_calving(:,j,k),rlic_in_frac2D(:,j))
    13511360            ENDDO
    13521361         ENDDO
Note: See TracChangeset for help on using the changeset viewer.