Ignore:
Timestamp:
Jan 3, 2016, 11:16:34 AM (8 years ago)
Author:
Ehouarn Millour
Message:

Improving the physics/dynamics interface:

  • added module callphysiq_mod.F90 in dynphy_lonlat/phy* which contains the routine "call_physiq" which is called by calfis* and calls the physics. This way different "physiq" routine from different physics packages may be called: The calfis* routines now exposes all available fields that might be transmitted to physiq but which is actually send (ie: expected/needed by physiq) is decided in call_physiq.
  • turned "physiq.F90" into module "physiq_mod.F90" for better control of "physiq" arguments. Extracted embeded "gr_fi_ecrit" as self-standing routine (but note that this routine actually only works in serial mode).

EM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/dynphy_lonlat/calfis_loc.F

    r2351 r2418  
    4747      USE infotrac, ONLY: nqtot, niadv, tname
    4848      USE control_mod, ONLY: planet_type, nsplit_phys
     49#ifdef CPP_PHYS
     50      USE callphysiq_mod, ONLY: call_physiq
     51#endif
    4952
    5053#ifdef CPP_PARA
     
    138141      REAL,INTENT(IN) :: pp(iip1,jjb_u:jje_u,llmp1) ! pressure at mesh interfaces (Pa)
    139142      REAL,INTENT(IN) :: ppk(iip1,jjb_u:jje_u,llm) ! Exner at mid-layer
    140       REAL,INTENT(IN) :: flxw(iip1,jjb_u:jje_u,llm)  ! Vertical mass flux on dynamics grid
     143      REAL,INTENT(IN) :: flxw(iip1,jjb_u:jje_u,llm) ! Vertical mass flux on lower mesh interfaces (kg/s) (on llm because flxw(:,:,llm+1)=0)
    141144
    142145      ! tendencies (in */s) from the physics
     
    240243      INTEGER :: jjb,jje
    241244
    242       LOGICAL tracerdyn 
    243245c
    244246c-----------------------------------------------------------------------
     
    709711         lafin_split=lafin.and.isplit==nsplit_phys
    710712
    711       if (planet_type=="earth") then
    712 
    713       CALL physiq (klon,
    714      .             llm,
    715      .             debut_split,
    716      .             lafin_split,
    717      .             jD_cur,
    718      .             jH_cur_split,
    719      .             zdt_split,
    720      .             zplev_omp,
    721      .             zplay_omp,
    722      .             zphi_omp,
    723      .             zphis_omp,
    724      .             presnivs_omp,
    725      .             zufi_omp,
    726      .             zvfi_omp,
    727      .             zrfi_omp,
    728      .             ztfi_omp,
    729      .             zqfi_omp,
    730      .             flxwfi_omp,
    731      .             zdufi_omp,
    732      .             zdvfi_omp,
    733      .             zdtfi_omp,
    734      .             zdqfi_omp,
    735      .             zdpsrf_omp,
    736      .             pducov)
    737 
    738       else if ( planet_type=="generic" ) then
    739 
    740       CALL physiq (klon,     !! ngrid
    741      .             llm,            !! nlayer
    742      .             nqtot,          !! nq
    743      .             tname,          !! tracer names from dynamical core (given in infotrac)
    744      .             debut_split,    !! firstcall
    745      .             lafin_split,    !! lastcall
    746      .             jD_cur,         !! pday. see leapfrog_p
    747      .             jH_cur_split,   !! ptime "fraction of day"
    748      .             zdt_split,      !! ptimestep
    749      .             zplev_omp,  !! pplev
    750      .             zplay_omp,  !! pplay
    751      .             zphi_omp,   !! pphi
    752      .             zufi_omp,   !! pu
    753      .             zvfi_omp,   !! pv
    754      .             ztfi_omp,   !! pt
    755      .             zqfi_omp,   !! pq
    756      .             flxwfi_omp, !! pw !! or 0. anyway this is for diagnostic. not used in physiq.
    757      .             zdufi_omp,  !! pdu
    758      .             zdvfi_omp,  !! pdv
    759      .             zdtfi_omp,  !! pdt
    760      .             zdqfi_omp,  !! pdq
    761      .             zdpsrf_omp, !! pdpsrf
    762      .             tracerdyn)      !! tracerdyn <-- utilite ???
    763 
    764       endif ! of if (planet_type=="earth")
     713        CALL call_physiq(klon,llm,nqtot,tname,
     714     &                   debut_split,lafin_split,
     715     &                   jD_cur,jH_cur_split,zdt_split,
     716     &                   zplev_omp,zplay_omp,
     717     &                   zphi_omp,zphis_omp,
     718     &                   presnivs_omp,
     719     &                   zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp,
     720     &                   flxwfi_omp,pducov,
     721     &                   zdufi_omp,zdvfi_omp,zdtfi_omp,zdqfi_omp,
     722     &                   zdpsrf_omp)
    765723
    766724
Note: See TracChangeset for help on using the changeset viewer.