Changeset 1543 for trunk/LMDZ.TITAN/libf


Ignore:
Timestamp:
Apr 22, 2016, 9:02:11 AM (9 years ago)
Author:
emillour
Message:

All models: Further adaptations to keep up with changes in LMDZ5 concerning
physics/dynamics separation:

  • dyn3d:
  • adapted gcm.F so that all physics initializations are now done in iniphysiq.
  • dyn3dpar:
  • adapted gcm.F so that all physics initializations are now done in iniphysiq.
  • updated calfis_p.F to follow up with changes.
  • copied over updated "bands.F90" from LMDZ5.
  • dynphy_lonlat:
  • calfis_p.F90, mod_interface_dyn_phys.F90, follow up of changes in phy_common/mod_* routines
  • phy_common:
  • added "geometry_mod.F90" to store information about the grid (replaces phy*/comgeomphy.F90) and give variables friendlier names: rlond => longitude , rlatd => latitude, airephy => cell_area, cuphy => dx , cvphy => dy
  • added "physics_distribution_mod.F90"
  • updated "mod_grid_phy_lmdz.F90", "mod_phys_lmdz_mpi_data.F90", "mod_phys_lmdz_para.F90", "mod_phys_lmdz_mpi_transfert.F90", "mod_grid_phy_lmdz.F90", "mod_phys_lmdz_omp_data.F90", "mod_phys_lmdz_omp_transfert.F90", "write_field_phy.F90" and "ioipsl_getin_p_mod.F90" to LMDZ5 versions.
  • phy[venus/titan/mars/std]:
  • removed "init_phys_lmdz.F90", "comgeomphy.F90"; adapted routines to use geometry_mod (longitude, latitude, cell_area, etc.)

EM

Location:
trunk/LMDZ.TITAN/libf/phytitan
Files:
2 deleted
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.TITAN/libf/phytitan/calchim.F

    r1530 r1543  
    1717      use common_mod, only:utilaer,maer,prodaer,csn,csh,psurfhaze,
    1818     .                     NLEV,NLRT,NC,ND,NR
    19       USE comgeomphy,  only: rlatd
    2019      USE moyzon_mod, only: tmoy,playmoy,zlaymoy,zlevmoy,klat
    2120      use mod_grid_phy_lmdz, only: nbp_lat
  • trunk/LMDZ.TITAN/libf/phytitan/muphys3D.F

    r1056 r1543  
    6565         use dimphy
    6666c         use radcommon_h, only : volume,rayon,vrat,drayon,dvolume
    67          USE comgeomphy,  only: rlatd
     67         USE geometry_mod,  only: latitude
    6868
    6969         IMPLICIT NONE
     
    235235c***************************************************************
    236236        if((IHOR.eq.1)   
    237      & .or.(rlatd(IHOR).ne.rlatd(im1))
     237     & .or.(latitude(IHOR).ne.latitude(im1))
    238238     & .or.(microfi.eq.2)) then
    239239c***************************************************************
  • trunk/LMDZ.TITAN/libf/phytitan/pg2.old

    r175 r1543  
    4242
    4343      use dimphy
    44       USE comgeomphy
     44      USE geometry_mod, ONLY: latitude
    4545#include "dimensions.h"
    4646#include "microtab.h"
     
    180180      lati(1)     = 0.5*RPI
    181181      DO ig=2,ngrid-1
    182         lati(ig)  = rlatd(2+(ig-2)*iim)*RPI/180.
     182        lati(ig)  = latitude(2+(ig-2)*iim)*RPI/180.
    183183      ENDDO
    184184      lati(ngrid) = -0.5*RPI
     
    197197c     print*,"ENTREE PG2 PREMIER APPEL"
    198198c     print*,airetot,' airetot?= ',4.*RPI*RA*RA
    199 c     print*,1,rlatd(1),aire(1),aire(1)/airetot,' aires'
     199c     print*,1,latitude(1),aire(1),aire(1)/airetot,' aires'
    200200c     DO ig=2,ngrid-1
    201 c     print*,ig,rlatd(2+(ig-2)*iim),aire(ig),aire(ig)/airetot,' aires'
     201c     print*,ig,latitude(2+(ig-2)*iim),aire(ig),aire(ig)/airetot,' aires'
    202202c     ENDDO
    203 c     print*,ngrid,rlatd(klon),aire(ngrid),aire(ngrid)/airetot,' aires'
     203c     print*,ngrid,latitude(klon),aire(ngrid),aire(ngrid)/airetot,' aires'
    204204c     stop
    205205     
  • trunk/LMDZ.TITAN/libf/phytitan/phyetat0.F90

    r1530 r1543  
    1313      USE iostart
    1414      USE infotrac
    15       USE comgeomphy,  only: rlatd,rlond
     15      USE geometry_mod,  only: latitude,longitude
    1616      USE time_phylmdz_mod, only: itau_phy, raz_date
    1717
     
    7676
    7777! read latitudes
    78 call get_field("latitude",rlatd,found)
     78call get_field("latitude",latitude,found)
    7979      IF (.not.found) THEN
    8080         PRINT*, 'phyetat0: Le champ <latitude> est absent'
     
    8383
    8484! read longitudes
    85 call get_field("longitude",rlond,found)
     85call get_field("longitude",longitude,found)
    8686      IF (.not.found) THEN
    8787         PRINT*, 'phyetat0: Le champ <longitude> est absent'
     
    319319      resch4(1) = 0.    ! pole nord = 1 point
    320320      DO i=2,klon
    321           if ((rlatd(i).ge.75..and.rlatd(i).le.85.).or.  &
    322               (rlatd(i).ge.-85.and.rlatd(i).le.-75.)) then
     321          if ((latitude(i).ge.75..and.latitude(i).le.85.).or.  &
     322              (latitude(i).ge.-85.and.latitude(i).le.-75.)) then
    323323            resch4(i) = 2.
    324324          else
     
    352352
    353353! do some more initializations
    354 call init_iophy_new(rlatd,rlond)
     354call init_iophy_new(latitude,longitude)
    355355
    356356end subroutine phyetat0
  • trunk/LMDZ.TITAN/libf/phytitan/phyredem.F90

    r1530 r1543  
    1212                          put_var,put_field
    1313      USE infotrac
    14       USE comgeomphy,  only: rlatd,rlond
     14      USE geometry_mod,  only: longitude, latitude
    1515      USE time_phylmdz_mod, only: day_end, annee_ref, itau_phy, raz_date
    1616
     
    6464
    6565      CALL put_field("longitude", &
    66                      "Longitudes de la grille physique",rlond)
     66                     "Longitudes de la grille physique",longitude)
    6767     
    68       CALL put_field("latitude","Latitudes de la grille physique",rlatd)
     68      CALL put_field("latitude", &
     69                     "Latitudes de la grille physique",latitude)
    6970
    7071! variables
  • trunk/LMDZ.TITAN/libf/phytitan/physiq.F

    r1530 r1543  
    5858      USE infotrac
    5959      use dimphy
    60       USE comgeomphy
     60      USE geometry_mod, ONLY: longitude, latitude, cell_area, dx, dy
    6161      use cpdet_mod, only: cpdet, t2tpot
    6262      USE mod_phys_lmdz_para, only : is_parallel,jj_nb
     
    678678      IF (if_ebil.ge.1) THEN
    679679        ztit='after dynamic'
    680         CALL diagetpq(airephy,ztit,ip_ebil,1,1,dtime
     680        CALL diagetpq(cell_area,ztit,ip_ebil,1,1,dtime
    681681     e      , t_seri,zero_v2,zero_v2,zero_v2,u_seri,v_seri,paprs,pplay
    682682     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     
    685685C     est egale a la variation de la physique au pas de temps precedent.
    686686C     Donc la somme de ces 2 variations devrait etre nulle.
    687         call diagphy(airephy,ztit,ip_ebil
     687        call diagphy(cell_area,ztit,ip_ebil
    688688     e      , zero_v, zero_v, zero_v, zero_v, zero_v
    689689     e      , zero_v, zero_v, zero_v, ztsol
     
    726726      DO k = 1, klev
    727727       DO i = 1, klon
    728         omega(i,k) = RG*flxmw(i,k) / airephy(i)
     728        omega(i,k) = RG*flxmw(i,k) / cell_area(i)
    729729       END DO
    730730      END DO
     
    786786
    787787       DO i=2,klon
    788         if (rlatd(i).ne.rlatd(i-1)) then
     788        if (latitude(i).ne.latitude(i-1)) then
    789789         DO l=1,klev
    790790c         zzlaybar(i,l)=(zphibar(i,l)+zphisbar(i))/RG
     
    861861
    862862c dans zenang, Ls en degres ; dans mucorr, Ls en radians
    863       call mucorr(klon,zls,rlatd,rmu0bar,fractbar)
     863      call mucorr(klon,zls,latitude,rmu0bar,fractbar)
    864864      IF (cycle_diurne) THEN
    865865        zdtime=dtime*REAL(radpas) ! pas de temps du rayonnement (s)
    866         CALL zenang(zlsdeg,gmtime,zdtime,rlatd,rlond,rmu0,fract)
     866        CALL zenang(zlsdeg,gmtime,zdtime,latitude,longitude,rmu0,fract)
    867867      ELSE
    868868        rmu0  = rmu0bar
     
    917917     $            paprs,pplay,ppk,radsol,falbe,
    918918     e            solsw, sollw, sollwdown, fder,
    919      e            rlond, rlatd, cuphy, cvphy,   
     919     e            longitude, latitude, dx, dy,   
    920920     e            debut, lafin,
    921921     s            d_t_vdf,d_u_vdf,d_v_vdf,d_ts,
     
    966966      IF (if_ebil.ge.2) THEN
    967967        ztit='after clmain'
    968         CALL diagetpq(airephy,ztit,ip_ebil,2,1,dtime
     968        CALL diagetpq(cell_area,ztit,ip_ebil,2,1,dtime
    969969     e      , t_seri,zero_v2,zero_v2,zero_v2,u_seri,v_seri,paprs,pplay
    970970     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    971          call diagphy(airephy,ztit,ip_ebil
     971         call diagphy(cell_area,ztit,ip_ebil
    972972     e      , zero_v, zero_v, zero_v, zero_v, sens
    973973     e      , zero_v, zero_v, zero_v, ztsol
     
    10551055      IF (if_ebil.ge.2) THEN
    10561056        ztit='after dry_adjust'
    1057         CALL diagetpq(airephy,ztit,ip_ebil,2,2,dtime
     1057        CALL diagetpq(cell_area,ztit,ip_ebil,2,2,dtime
    10581058     e      , t_seri,zero_v2,zero_v2,zero_v2,u_seri,v_seri,paprs,pplay
    10591059     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    1060         call diagphy(airephy,ztit,ip_ebil
     1060        call diagphy(cell_area,ztit,ip_ebil
    10611061     e      , zero_v, zero_v, zero_v, zero_v, sens
    10621062     e      , zero_v, zero_v, zero_v, ztsol
     
    12701270      IF (if_ebil.ge.2) THEN
    12711271        ztit='after rad'
    1272         CALL diagetpq(airephy,ztit,ip_ebil,2,2,dtime
     1272        CALL diagetpq(cell_area,ztit,ip_ebil,2,2,dtime
    12731273     e      , t_seri,zero_v2,zero_v2,zero_v2,u_seri,v_seri,paprs,pplay
    12741274     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    1275         call diagphy(airephy,ztit,ip_ebil
     1275        call diagphy(cell_area,ztit,ip_ebil
    12761276     e      , topsw, toplw, solsw, sollw, zero_v
    12771277     e      , zero_v, zero_v, zero_v, ztsol
     
    13681368c A ADAPTER POUR VENUS ET TITAN!!!
    13691369c            CALL lift_noro(klon,klev,dtime,paprs,pplay,
    1370 c     e                   rlatd,zmea,zstd,zpic,zgam,zthe,zpic,zval,
     1370c     e                   latitude,zmea,zstd,zpic,zgam,zthe,zpic,zval,
    13711371c     e                   igwd,idx,itest,
    13721372c     e                   t_seri, u_seri, v_seri,
     
    14251425c====================================================================
    14261426      if (ballons.eq.1) then
    1427          CALL ballon(30,pdtphys,rjourvrai,gmtime,rlatd,rlond,
     1427         CALL ballon(30,pdtphys,rjourvrai,gmtime,latitude,longitude,
    14281428c    C               t,pplay,u,v,pphi)   ! alt above surface (smoothed for GCM)
    14291429     C               t,pplay,u,v,zphi)   ! alt above planet average radius
     
    14591459      CALL aaam_bud (27,klon,klev,rjourvrai,gmtime,
    14601460     C               ra,rg,romega,
    1461      C               rlatd,rlond,pphis,
     1461     C               latitude,longitude,pphis,
    14621462     C               zustrdr,zustrli,zustrcl,
    14631463     C               zvstrdr,zvstrli,zvstrcl,
     
    14991499      IF (if_ebil.ge.1) THEN
    15001500        ztit='after physic'
    1501         CALL diagetpq(airephy,ztit,ip_ebil,1,1,dtime
     1501        CALL diagetpq(cell_area,ztit,ip_ebil,1,1,dtime
    15021502     e      , t_seri,zero_v2,zero_v2,zero_v2,u_seri,v_seri,paprs,pplay
    15031503     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     
    15061506C     est egale a la variation de la physique au pas de temps precedent.
    15071507C     Donc la somme de ces 2 variations devrait etre nulle.
    1508         call diagphy(airephy,ztit,ip_ebil
     1508        call diagphy(cell_area,ztit,ip_ebil
    15091509     e      , topsw, toplw, solsw, sollw, sens
    15101510     e      , zero_v, zero_v, zero_v, ztsol
     
    15451545c     DO k = 1, klev
    15461546c     DO i = 1, klon
    1547 c       mang(i,k) = RA*cos(rlatd(i)*RPI/180.)
    1548 c    .     *(u_seri(i,k)+RA*cos(rlatd(i)*RPI/180.)*ROMEGA)
    1549 c    .     *airephy(i)*(paprs(i,k)-paprs(i,k+1))/RG
     1547c       mang(i,k) = RA*cos(latitude(i)*RPI/180.)
     1548c    .     *(u_seri(i,k)+RA*cos(latitude(i)*RPI/180.)*ROMEGA)
     1549c    .     *cell_area(i)*(paprs(i,k)-paprs(i,k+1))/RG
    15501550c       mangtot=mangtot+mang(i,k)
    15511551c     ENDDO
  • trunk/LMDZ.TITAN/libf/phytitan/radlwsw.F

    r1530 r1543  
    3535c======================================================================
    3636      use dimphy
    37       USE comgeomphy
    3837      USE phys_state_var_mod, only: falbe,heat,cool,radsol,
    3938     .      topsw,toplw,solsw,sollw,sollwdown,lwnet,swnet,
  • trunk/LMDZ.TITAN/libf/phytitan/radtitan.F

    r1461 r1543  
    3333      USE infotrac
    3434      use dimphy
    35       USE comgeomphy
     35      USE geometry_mod, ONLY: latitude
    3636      USE optcld, only : iniqcld
    3737      use moyzon_mod, only:plevmoy
     
    214214          somcoslat=0.
    215215          do j=1,klon
    216             coslat(j) = cos(rlatd(j)*RPI/180.)
     216            coslat(j) = cos(latitude(j)*RPI/180.)
    217217            somcoslat=somcoslat+coslat(j)
    218218          enddo
  • trunk/LMDZ.TITAN/libf/phytitan/write_histday.h

    r1056 r1543  
    1414
    1515      call histwrite_phy(nid_day,.false.,"phis",itau_w,pphis)
    16       call histwrite_phy(nid_day,.false.,"aire",itau_w,airephy)
     16      call histwrite_phy(nid_day,.false.,"aire",itau_w,cell_area)
    1717
    1818ccccccc axe Ls ... Faudrait le reduire a axe temporel seulement...
  • trunk/LMDZ.TITAN/libf/phytitan/write_histins.h

    r1056 r1543  
    1414
    1515      call histwrite_phy(nid_ins,.false.,"phis",itau_w,pphis)
    16       call histwrite_phy(nid_ins,.false.,"aire",itau_w,airephy)
     16      call histwrite_phy(nid_ins,.false.,"aire",itau_w,cell_area)
    1717
    1818ccccccc axe Ls ... Faudrait le reduire a axe temporel seulement...
  • trunk/LMDZ.TITAN/libf/phytitan/write_histmth.h

    r1356 r1543  
    1111
    1212      call histwrite_phy(nid_mth,.false.,"phis",itau_w,pphis)
    13       call histwrite_phy(nid_mth,.false.,"aire",itau_w,airephy)
     13      call histwrite_phy(nid_mth,.false.,"aire",itau_w,cell_area)
    1414
    1515ccccccc axe Ls ... Faudrait le reduire a axe temporel seulement...
Note: See TracChangeset for help on using the changeset viewer.