Ignore:
Timestamp:
Dec 6, 2022, 12:01:16 AM (22 months ago)
Author:
lguez
Message:

Sync latest trunk changes to Ocean_skin

Location:
LMDZ6/branches/Ocean_skin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/Ocean_skin

  • LMDZ6/branches/Ocean_skin/libf/phylmdiso/phyredem.F90

    r3940 r4368  
    2323                                wake_delta_pbl_tke, zmax0, f0, sig1, w01,    &
    2424                                wake_deltat, wake_deltaq, wake_s, wake_dens, &
     25                                awake_dens, cv_gen,                          &
    2526                                wake_cstar,                                  &
    2627                                wake_pe, wake_fip, fm_therm, entr_therm,     &
     
    3839  USE iostart, ONLY: open_restartphy, close_restartphy, enddef_restartphy, put_field, put_var
    3940  USE traclmdz_mod, ONLY : traclmdz_to_restart
    40   USE infotrac_phy, ONLY: type_trac, niadv, tname, nbtr, nqo,itr_indice
     41  USE infotrac_phy, ONLY: types_trac, nqtot, tracers, nbtr, niso
    4142#ifdef ISO
    42   USE infotrac_phy, ONLY: itr_indice,niso,ntraciso
    4343#ifdef ISOVERIF
    4444  USE isotopes_verif_mod
    4545#endif
    4646#endif
    47   USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send
     47  USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send, carbon_cycle_rad, RCO2_glo
    4848  USE indice_sol_mod, ONLY: nbsrf, is_oce, is_sic, is_ter, is_lic, epsfra
    4949  USE surface_data, ONLY: type_ocean, version_ocean
     
    5656  include "dimsoil.h"
    5757  include "clesphys.h"
    58   include "thermcell.h"
     58  include "alpale.h"
    5959  include "compbl.h"
    6060  !======================================================================
     
    7474  REAL Rland_ice(niso,klon)
    7575#endif
    76   INTEGER iq ! C Risi
    7776
    7877  INTEGER nid, nvarid, idim1, idim2, idim3
     
    8584  CHARACTER (len=2) :: str2
    8685  CHARACTER (len=256) :: nam, lnam
    87   INTEGER           :: it, iiq, pass
     86  INTEGER           :: it, iq, pass
    8887
    8988  !======================================================================
     
    131130
    132131  ! co2_ppm0 : initial value of atmospheric CO2
    133   tab_cntrl(16) = co2_ppm0
     132  ! tab_cntrl(16) = co2_ppm0
     133
     134  !  PC -- initial value of RCO2 for the radiation scheme
     135  !  tab_cntrl(17) = co2_ppm * 1.0e-06 * RMCO2 / RMD
     136  IF (carbon_cycle_rad) tab_cntrl(17) = RCO2_glo
     137  !PRINT*, "PC : phyredem RCO2_glo =",RCO2_glo
    134138
    135139  DO pass=1,2   ! pass=1 netcdf definition ; pass=2 netcdf write
     
    185189    CALL put_field_srf1(pass,"TS","Temperature",ftsol(:,:))
    186190
    187 !!    CALL put_field_srf1(pass,"DELTA_TS","w-x surface temperature difference", delta_tsurf(:,:))
    188     CALL put_field_srf1(pass,"DELTATS","w-x surface temperature difference", delta_tsurf(:,:))
    189 
    190 !    CALL put_field_srf1(pass,"BETA_S","Aridity factor", beta_aridity(:,:))
    191     CALL put_field_srf1(pass,"BETAS","Aridity factor", beta_aridity(:,:))
     191    IF (iflag_pbl>1 .AND. iflag_wake>=1  .AND. iflag_pbl_split >=1) then
     192       CALL put_field_srf1(pass, "DELTATS", &
     193                      "w-x surface temperature difference",  delta_tsurf(:,:))
     194       CALL put_field_srf1(pass, "BETAS", "Aridity factor", beta_aridity(:,:))
     195    end IF
    192196!    End surface variables
    193197
     
    313317    CALL put_field(pass,"WAKE_DENS", "Wake num. /unit area", wake_dens)
    314318
     319    CALL put_field(pass,"AWAKE_DENS", "Active Wake num. /unit area", awake_dens)
     320
     321    CALL put_field(pass,"CV_GEN", "CB birth rate", cv_gen)
     322
    315323    CALL put_field(pass,"WAKE_CSTAR", "WAKE_CSTAR", wake_cstar)
    316324
     
    342350
    343351
    344     ! trs from traclmdz_mod
    345     IF (type_trac == 'lmdz') THEN
    346        CALL traclmdz_to_restart(trs)
    347        DO it=1, nbtr
    348 !!        iiq=niadv(it+2)                                                           ! jyg
    349           !iiq=niadv(it+nqo) ! C Risi: on efface pour remplacer:
    350           iq=itr_indice(it)                                                           ! jyg
    351           iiq=niadv(iq)                                                           ! jyg
    352           CALL put_field(pass,"trs_"//tname(iiq), "", trs(:, it))
    353        END DO
     352    IF (ANY(types_trac == 'co2i') .OR. ANY(types_trac == 'inco')) THEN
    354353       IF (carbon_cycle_cpl) THEN
    355354          IF (.NOT. ALLOCATED(co2_send)) THEN
     
    360359          CALL put_field(pass,"co2_send", "co2_ppm for coupling", co2_send)
    361360       END IF
     361
     362    ! trs from traclmdz_mod
     363    ELSE IF (ANY(types_trac == 'lmdz')) THEN
     364       CALL traclmdz_to_restart(trs)
     365       it = 0
     366       DO iq = 1, nqtot
     367          IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
     368          it = it+1
     369          CALL put_field(pass,"trs_"//tracers(iq)%name, "", trs(:, it))
     370       END DO
    362371    END IF
    363372
     
    408417  ENDDO ! DO pass=1,2   ! pass=1 netcdf definition ; pass=2 netcdf write
    409418 
    410 
    411  
    412419  !$OMP BARRIER
    413420
     
    419426
    420427  IMPLICIT NONE
    421   INTEGER, INTENT(IN)            :: pass
     428  INTEGER, INTENT(IN)           :: pass
    422429  CHARACTER(LEN=*),  INTENT(IN) :: nam, lnam
    423430  REAL,              INTENT(IN) :: field(:,:)
     
    482489        xtrain_fall,xtsnow_fall, ql_ancien,xtl_ancien,qs_ancien,xts_ancien, &
    483490        xtsol,fxtevap
    484       USE infotrac_phy,ONLY: niso, ntraciso
     491      USE infotrac_phy,ONLY: niso, ntiso
    485492      !USE control_mod
    486493      USE indice_sol_mod, ONLY: nbsrf
    487494      USE iostart, ONLY: put_field
    488       USE isotopes_mod, ONLY: striso,iso_eau
     495      USE isotopes_mod, ONLY: isoName,iso_eau
    489496#ifdef ISOVERIF
    490497      USE isotopes_verif_mod
     
    501508#include "dimsoil.h"
    502509#include "clesphys.h"
    503 #include "thermcell.h"
     510#include "alpale.h"
    504511#include "compbl.h"     
    505512      ! inputs
    506513      !REAL xtsol(niso,klon)
    507514      REAL xtsnow(niso,klon,nbsrf)
    508       !REAL xtevap(ntraciso,klon,nbsrf)     
     515      !REAL xtevap(ntiso,klon,nbsrf)     
    509516      REAL xtrun_off_lic_0(niso,klon)
    510517      REAL Rland_ice(niso,klon)
     
    521528      CHARACTER*7 str7
    522529      CHARACTER*2 str2
    523       CHARACTER*50 striso_sortie
     530      CHARACTER*50 outiso
    524531      integer lnblnk
    525532#ifdef ISOTRAC
     
    563570#endif
    564571
    565    do ixt=1,ntraciso
    566 
    567      if (ixt.le.niso) then
    568         striso_sortie=striso(ixt)
    569      else
    570 #ifdef ISOTRAC
    571         iiso=index_iso(ixt)
    572         izone=index_zone(ixt)       
    573         striso_sortie=striso(iiso)//strtrac(izone)
    574 #else
    575         write(*,*) 'phyredem 546: ixt,ntraciso=', ixt,ntraciso
    576         stop
    577 #endif
    578      endif !if (ixt.le.niso) then
    579       write(*,*) 'phyredem 550: ixt,striso_sortie=',ixt,striso_sortie(1:lnblnk(striso_sortie))
     572   do ixt=1,ntiso
     573
     574      outiso = TRIM(isoName(ixt))
     575      i = INDEX(outiso, '_', .TRUE.)
     576      outiso = outiso(1:i-1)//outiso(i+1:LEN_TRIM(outiso))
     577      write(*,*) 'phyredem 550: ixt,outiso=',ixt,TRIM(outiso)
    580578     
    581579      iso_tmp_lonsrf(:,:)=fxtevap(ixt,:,:)
    582       CALL put_field_srf1(pass,"XTEVAP"//striso_sortie(1:lnblnk(striso_sortie)), &
    583      &           "Evaporation de surface",iso_tmp_lonsrf)
     580      CALL put_field_srf1(pass, "XTEVAP"//TRIM(outiso), "Evaporation de surface",iso_tmp_lonsrf)
    584581
    585582      iso_tmp_lonsrf(:,:)=xtsnow(ixt,:,:)
    586       CALL put_field_srf1(pass,"XTSNOW"//striso_sortie(1:lnblnk(striso_sortie)), &
    587      &           "NEIGE",iso_tmp_lonsrf)       
     583      CALL put_field_srf1(pass, "XTSNOW"//TRIM(outiso), "NEIGE",       iso_tmp_lonsrf)       
    588584
    589585      iso_tmp(:)=xtrain_fall(ixt,:)
    590       CALL put_field(pass,"xtrain_f"//striso_sortie(1:lnblnk(striso_sortie)), &
    591      &   "precipitation liquide",iso_tmp)
     586      CALL put_field(pass,    "xtrain_f"//TRIM(outiso), "precipitation liquide",iso_tmp)
    592587
    593588      iso_tmp(:)=xtsnow_fall(ixt,:)
    594       CALL put_field(pass,"xtsnow_f"//striso_sortie(1:lnblnk(striso_sortie)), &
    595      &    "precipitation solide",iso_tmp)
     589      CALL put_field(pass,    "xtsnow_f"//TRIM(outiso), "precipitation solide",iso_tmp)
    596590
    597591      iso_tmp_lonlev(:,:)=xt_ancien(ixt,:,:)
    598       CALL put_field(pass,"XTANCIEN"//striso_sortie(1:lnblnk(striso_sortie)), &
    599      &   "QANCIEN",iso_tmp_lonlev)
     592      CALL put_field(pass,    "XTANCIEN"//TRIM(outiso), "QANCIEN",     iso_tmp_lonlev)
    600593
    601594      iso_tmp_lonlev(:,:)=xtl_ancien(ixt,:,:)
    602       CALL put_field(pass,"XTLANCIEN"//striso_sortie(1:lnblnk(striso_sortie)), &
    603      &   "QLANCIEN",iso_tmp_lonlev)
     595      CALL put_field(pass,   "XTLANCIEN"//TRIM(outiso), "QLANCIEN",    iso_tmp_lonlev)
    604596
    605597      iso_tmp_lonlev(:,:)=xts_ancien(ixt,:,:)
    606       CALL put_field(pass,"XTSANCIEN"//striso_sortie(1:lnblnk(striso_sortie)), &
    607      &   "QSANCIEN",iso_tmp_lonlev)
     598      CALL put_field(pass,   "XTSANCIEN"//TRIM(outiso), "QSANCIEN",    iso_tmp_lonlev)
    608599
    609600      iso_tmp_lonlev(:,:)=wake_deltaxt(ixt,:,:)
    610       CALL put_field(pass,"WAKE_DELTAXT"//striso_sortie(1:lnblnk(striso_sortie)), &
    611      &   "WAKE_DELTAQ",iso_tmp_lonlev)
     601      CALL put_field(pass,"WAKE_DELTAXT"//TRIM(outiso), "WAKE_DELTAQ", iso_tmp_lonlev)
    612602
    613603      iso_tmp(:)=xtrun_off_lic_0(ixt,:)
    614       CALL put_field(pass,"XTRUNOFFLIC0"//striso_sortie(1:lnblnk(striso_sortie)), &
    615      &   "Runofflic0",iso_tmp)
     604      CALL put_field(pass,"XTRUNOFFLIC0"//TRIM(outiso), "Runofflic0",  iso_tmp)
    616605
    617606      iso_tmp_lonlev(:,:)=wake_deltaxt(ixt,:,:)
    618       CALL put_field(pass,"WAKE_DELTAXT"//striso_sortie(1:lnblnk(striso_sortie)), &
    619      &   "WAKE_DELTAXT",iso_tmp_lonlev)
     607      CALL put_field(pass,"WAKE_DELTAXT"//TRIM(outiso), "WAKE_DELTAXT",iso_tmp_lonlev)
    620608
    621609      ! variables seulement pour niso:
     
    623611
    624612      iso_tmp(:)=xtsol(ixt,:)
    625       CALL put_field(pass,"XTSOL"//striso_sortie(1:lnblnk(striso_sortie)), &
    626      &   "Eau dans le sol (mm)",iso_tmp)
     613      CALL put_field(pass,      "XTSOL"//TRIM(outiso), "Eau dans le sol (mm)",iso_tmp)
    627614
    628615      iso_tmp(:)=Rland_ice(ixt,:)
    629       CALL put_field(pass,"Rland_ice"//striso_sortie(1:lnblnk(striso_sortie)), &
    630      &   "ratio land ice",iso_tmp)
     616      CALL put_field(pass,  "Rland_ice"//TRIM(outiso), "ratio land ice",      iso_tmp)
    631617
    632618      endif ! if (ixt.le.niso) then
Note: See TracChangeset for help on using the changeset viewer.