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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.VENUS/libf/phyvenus/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 mod_phys_lmdz_para, only : is_parallel,jj_nb
    6262      USE phys_state_var_mod ! Variables sauvegardees de la physique
     
    665665      DO k = 1, klev
    666666      DO i = 1, klon     
    667          ilat=(rlatd(i)/5.625) + 17.
     667         ilat=(latitude(i)/5.625) + 17.
    668668         delta_temp(i,k)=mat_dtemp(INT(ilat),k)
    669669      ENDDO
     
    719719      IF (if_ebil.ge.1) THEN
    720720        ztit='after dynamic'
    721         CALL diagetpq(airephy,ztit,ip_ebil,1,1,dtime
     721        CALL diagetpq(cell_area,ztit,ip_ebil,1,1,dtime
    722722     e      , t_seri,zero_v2,zero_v2,zero_v2,u_seri,v_seri,paprs,pplay
    723723     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     
    726726C     est egale a la variation de la physique au pas de temps precedent.
    727727C     Donc la somme de ces 2 variations devrait etre nulle.
    728         call diagphy(airephy,ztit,ip_ebil
     728        call diagphy(cell_area,ztit,ip_ebil
    729729     e      , zero_v, zero_v, zero_v, zero_v, zero_v
    730730     e      , zero_v, zero_v, zero_v, ztsol
     
    767767      DO k = 1, klev
    768768       DO i = 1, klon
    769         omega(i,k) = RG*flxmw(i,k) / airephy(i)
     769        omega(i,k) = RG*flxmw(i,k) / cell_area(i)
    770770       END DO
    771771      END DO
     
    832832      IF (cycle_diurne) THEN
    833833        zdtime=dtime*REAL(radpas) ! pas de temps du rayonnement (s)
    834         CALL zenang(zlongi,gmtime,zdtime,rlatd,rlond,rmu0,fract)
     834        CALL zenang(zlongi,gmtime,zdtime,latitude,longitude,rmu0,fract)
    835835      ELSE
    836         call mucorr(klon,zlongi,rlatd,rmu0,fract)
     836        call mucorr(klon,zlongi,latitude,rmu0,fract)
    837837      ENDIF
    838838     
     
    859859     I                   debut,lafin,nqmax,
    860860     I                   nlon,nlev,dtime,paprs,
    861      I                   rlatd,rlond,
     861     I                   latitude,longitude,
    862862     O                   tr_seri)
    863863
     
    869869           DO k = 1, klev
    870870           DO i = 1, klon     
    871              ilat=(rlatd(i)/5.625) + 17.
    872 !             PRINT*,INT(ilat),rlatd(i),mat_dtemp(INT(ilat),k)
     871             ilat=(latitude(i)/5.625) + 17.
     872!             PRINT*,INT(ilat),latitude(i),mat_dtemp(INT(ilat),k)
    873873             delta_temp(i,k)=mat_dtemp(INT(ilat),k)
    874874           ENDDO
     
    888888     I             nqmax,
    889889     I             klon,
    890      I             rlatd,
    891      I             rlond,
     890     I             latitude,
     891     I             longitude,
    892892     I             nlev,
    893893     I             dtime,
     
    902902     I             nqmax,
    903903     I             klon,
    904      I             rlatd,
    905      I             rlond,
     904     I             latitude,
     905     I             longitude,
    906906     I             nlev,
    907907     I             dtime,
     
    926926           CALL new_cloud_sedim(
    927927     I                 klon,
    928      I               nlev,
    929      I               dtime,
     928     I                     nlev,
     929     I                     dtime,
    930930     I                 pplay,
    931      I               paprs,
    932      I               t_seri+delta_temp,
     931     I                     paprs,
     932     I                     t_seri+delta_temp,
    933933     I                 tr_seri,
    934      O               d_tr_sed,
    935      O               d_tr_ssed,
    936      I               nqmax,
     934     O                     d_tr_sed,
     935     O                     d_tr_ssed,
     936     I                     nqmax,
    937937     O                 Fsedim)
    938938         else
     
    940940           CALL new_cloud_sedim(
    941941     I                 klon,
    942      I               nlev,
    943      I               dtime,
     942     I                     nlev,
     943     I                     dtime,
    944944     I                 pplay,
    945      I               paprs,
    946      I               t_seri,
     945     I                     paprs,
     946     I                     t_seri,
    947947     I                 tr_seri,
    948      O               d_tr_sed,
    949      O               d_tr_ssed,
    950      I               nqmax,
     948     O                     d_tr_sed,
     949     O                     d_tr_ssed,
     950     I                     nqmax,
    951951     O                 Fsedim)
    952952
     
    10321032     $            paprs,pplay,ppk,radsol,falbe,
    10331033     e            solsw, sollw, sollwdown, fder,
    1034      e            rlond, rlatd, cuphy, cvphy,   
     1034     e            longitude, latitude, dx, dy,   
    10351035     e            debut, lafin,
    10361036     s            d_t_vdf,d_u_vdf,d_v_vdf,d_ts,
     
    10821082      IF (if_ebil.ge.2) THEN
    10831083        ztit='after clmain'
    1084         CALL diagetpq(airephy,ztit,ip_ebil,2,1,dtime
     1084        CALL diagetpq(cell_area,ztit,ip_ebil,2,1,dtime
    10851085     e      , t_seri,zero_v2,zero_v2,zero_v2,u_seri,v_seri,paprs,pplay
    10861086     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    1087          call diagphy(airephy,ztit,ip_ebil
     1087         call diagphy(cell_area,ztit,ip_ebil
    10881088     e      , zero_v, zero_v, zero_v, zero_v, sens
    10891089     e      , zero_v, zero_v, zero_v, ztsol
     
    11751175      IF (if_ebil.ge.2) THEN
    11761176        ztit='after dry_adjust'
    1177         CALL diagetpq(airephy,ztit,ip_ebil,2,2,dtime
     1177        CALL diagetpq(cell_area,ztit,ip_ebil,2,2,dtime
    11781178     e      , t_seri,zero_v2,zero_v2,zero_v2,u_seri,v_seri,paprs,pplay
    11791179     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    1180         call diagphy(airephy,ztit,ip_ebil
     1180        call diagphy(cell_area,ztit,ip_ebil
    11811181     e      , zero_v, zero_v, zero_v, zero_v, sens
    11821182     e      , zero_v, zero_v, zero_v, ztsol
     
    12151215      IF(callnlte.or.callthermos) THEN                                 
    12161216         call compo_hedin83_mod(pplay,rmu0,   
    1217      &           co2vmr_gcm,covmr_gcm,ovmr_gcm,n2vmr_gcm,nvmr_gcm)
     1217     &                 co2vmr_gcm,covmr_gcm,ovmr_gcm,n2vmr_gcm,nvmr_gcm)
    12181218
    12191219         IF(ok_chem) then
     
    12341234         ENDIF
    12351235
    1236        ENDIF   
     1236       ENDIF       
    12371237
    12381238c
     
    12611261          d_t_nlte(:,:)=0.
    12621262
    1263         ENDIF   
     1263        ENDIF       
    12641264
    12651265c      Find number of layers for LTE radiation calculations
     
    12931293     &          cool, d_t_nirco2,d_t_nlte, dtsw, dtlw)
    12941294        ELSE
    1295            dtsw(:,:)=heat(:,:)
    1296            dtlw(:,:)=-1*cool(:,:)
    1297         ENDIF
     1295           dtsw(:,:)=heat(:,:)
     1296           dtlw(:,:)=-1*cool(:,:)
     1297        ENDIF
    12981298
    12991299         DO k=1,klev
     
    13191319     $         rmu0,pdtphys,gmtime,rjourvrai,
    13201320     $         tr_seri, d_tr, d_t_euv )
    1321                 
     1321                
    13221322           DO k=1,klev
    13231323              DO ig=1,klon
     
    14051405      IF (if_ebil.ge.2) THEN
    14061406        ztit='after rad'
    1407         CALL diagetpq(airephy,ztit,ip_ebil,2,2,dtime
     1407        CALL diagetpq(cell_area,ztit,ip_ebil,2,2,dtime
    14081408     e      , t_seri,zero_v2,zero_v2,zero_v2,u_seri,v_seri,paprs,pplay
    14091409     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    1410         call diagphy(airephy,ztit,ip_ebil
     1410        call diagphy(cell_area,ztit,ip_ebil
    14111411     e      , topsw, toplw, solsw, sollw, zero_v
    14121412     e      , zero_v, zero_v, zero_v, ztsol
     
    14241424       do i=1,klon
    14251425        do k=2,klev
    1426           ztlev(i,k)  = (t_seri(i,k)+t_seri(i,k-1))/2.
    1427           zpklev(i,k) = sqrt(ppk(i,k)*ppk(i,k-1))
    1428         enddo
     1426          ztlev(i,k)  = (t_seri(i,k)+t_seri(i,k-1))/2.
     1427          zpklev(i,k) = sqrt(ppk(i,k)*ppk(i,k-1))
     1428        enddo
    14291429       enddo
    14301430       call t2tpot(klon*klev,ztlev, ztetalev,zpklev)
     
    14321432       do i=1,klon
    14331433        do k=2,klev
    1434           zdtetalev(i,k) = ztetalay(i,k)-ztetalay(i,k-1)
    1435           zdzlev(i,k)    = (zphi(i,k)-zphi(i,k-1))/RG
     1434          zdtetalev(i,k) = ztetalay(i,k)-ztetalay(i,k-1)
     1435          zdzlev(i,k)    = (zphi(i,k)-zphi(i,k-1))/RG
    14361436          zn2(i,k) = RG*zdtetalev(i,k)/(ztetalev(i,k)*zdzlev(i,k))
    14371437          zn2(i,k) = max(zn2(i,k),1.e-12)  ! securite
    1438         enddo
     1438        enddo
    14391439        zn2(i,1) = 1.e-12  ! securite
    14401440       enddo
     
    14791479         d_u_oro = 0.
    14801480         d_v_oro = 0.
    1481         zustrdr = 0.
    1482         zvstrdr = 0.
     1481        zustrdr = 0.
     1482        zvstrdr = 0.
    14831483c
    14841484      ENDIF ! fin de test sur ok_orodr
     
    15081508c A ADAPTER POUR VENUS!!!
    15091509c            CALL lift_noro(klon,klev,dtime,paprs,pplay,
    1510 c     e                   rlatd,zmea,zstd,zpic,zgam,zthe,zpic,zval,
     1510c     e                   latitude,zmea,zstd,zpic,zgam,zthe,zpic,zval,
    15111511c     e                   igwd,idx,itest,
    15121512c     e                   t_seri, u_seri, v_seri,
     
    15671567c====================================================================
    15681568      if (ballons.eq.1) then
    1569          CALL ballon(30,pdtphys,rjourvrai,gmtime*RDAY,rlatd,rlond,
    1570 c    C               t,pplay,u,v,pphi)   ! alt above surface (smoothed for GCM)
    1571      C               t,pplay,u,v,zphi)   ! alt above planet average radius
     1569        CALL ballon(30,pdtphys,rjourvrai,gmtime*RDAY,latitude,longitude,
     1570c    C              t,pplay,u,v,pphi)   ! alt above surface (smoothed for GCM)
     1571     C              t,pplay,u,v,zphi)   ! alt above planet average radius
    15721572      endif !ballons
    15731573
     
    16011601      CALL aaam_bud (27,klon,klev,rjourvrai,gmtime*RDAY,
    16021602     C               ra,rg,romega,
    1603      C               rlatd,rlond,pphis,
     1603     C               latitude,longitude,pphis,
    16041604     C               zustrdr,zustrli,zustrcl,
    16051605     C               zvstrdr,zvstrli,zvstrcl,
     
    16411641      IF (if_ebil.ge.1) THEN
    16421642        ztit='after physic'
    1643         CALL diagetpq(airephy,ztit,ip_ebil,1,1,dtime
     1643        CALL diagetpq(cell_area,ztit,ip_ebil,1,1,dtime
    16441644     e      , t_seri,zero_v2,zero_v2,zero_v2,u_seri,v_seri,paprs,pplay
    16451645     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     
    16481648C     est egale a la variation de la physique au pas de temps precedent.
    16491649C     Donc la somme de ces 2 variations devrait etre nulle.
    1650         call diagphy(airephy,ztit,ip_ebil
     1650        call diagphy(cell_area,ztit,ip_ebil
    16511651     e      , topsw, toplw, solsw, sollw, sens
    16521652     e      , zero_v, zero_v, zero_v, ztsol
     
    16871687c     DO k = 1, klev
    16881688c     DO i = 1, klon
    1689 c       mang(i,k) = RA*cos(rlatd(i)*RPI/180.)
    1690 c    .     *(u_seri(i,k)+RA*cos(rlatd(i)*RPI/180.)*ROMEGA)
    1691 c    .     *airephy(i)*(paprs(i,k)-paprs(i,k+1))/RG
     1689c       mang(i,k) = RA*cos(latitude(i)*RPI/180.)
     1690c    .     *(u_seri(i,k)+RA*cos(latitude(i)*RPI/180.)*ROMEGA)
     1691c    .     *cell_area(i)*(paprs(i,k)-paprs(i,k+1))/RG
    16921692c       mangtot=mangtot+mang(i,k)
    16931693c     ENDDO
Note: See TracChangeset for help on using the changeset viewer.