Changeset 1545


Ignore:
Timestamp:
May 2, 2016, 8:31:27 AM (9 years ago)
Author:
emillour
Message:

Venus and Titan GCMs:

Adaptation wrt previous changes for Titan and Venus where
longitude and latitude arrays (in phycommon/geometry_mod) were overwritten
with values from startphy.nc files, where values are given in degrees.
For the sake of homegeneity with other physics package, revert to "default"
behaviour: longitude/latitude are in radians and longitude_deg/latitude_deg
are in degrees.
Also added checking in phyetat0 that the longitude/latitude read in the
restartphy.nc files match the ones provided by the dynamics.

EM

Location:
trunk
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/DOC/chantiers/commit_importants.log

    r1543 r1545  
    17181718- removed "init_phys_lmdz.F90", "comgeomphy.F90"; adapted routines to use
    17191719  geometry_mod (longitude, latitude, cell_area, etc.)
     1720
     1721**********************
     1722**** commit_v1545 ****
     1723**********************
     1724Ehouarn: Adaptation wrt previous changes for Titan and Venus where
     1725longitude and latitude arrays (in phycommon/geometry_mod) were overwritten
     1726with values from startphy.nc files, where values are given in degrees.
     1727For the sake of homegeneity with other physics package, revert to "default"
     1728behaviour: longitude/latitude are in radians and longitude_deg/latitude_deg
     1729are in degrees.
     1730Also added checking in phyetat0 that the longitude/latitude read in the
     1731restartphy.nc files match the ones provided by the dynamics.
  • trunk/LMDZ.TITAN/libf/phytitan/iophy.F90

    r1530 r1545  
    2929  USE ioipsl
    3030  implicit none
    31     real,dimension(klon),intent(in) :: rlon
    32     real,dimension(klon),intent(in) :: rlat
     31    real,dimension(klon),intent(in) :: rlon ! longitudes, in degrees
     32    real,dimension(klon),intent(in) :: rlat ! latitudes, in degrees
    3333
    3434    REAL,dimension(klon_glo)        :: rlat_glo
  • trunk/LMDZ.TITAN/libf/phytitan/muphys3D.F

    r1543 r1545  
    6565         use dimphy
    6666c         use radcommon_h, only : volume,rayon,vrat,drayon,dvolume
    67          USE geometry_mod,  only: latitude
     67         USE geometry_mod,  only: latitude ! in radians
    6868
    6969         IMPLICIT NONE
  • trunk/LMDZ.TITAN/libf/phytitan/pg2.old

    r1543 r1545  
    4242
    4343      use dimphy
    44       USE geometry_mod, ONLY: latitude
     44      USE geometry_mod, ONLY: latitude_deg
    4545#include "dimensions.h"
    4646#include "microtab.h"
     
    180180      lati(1)     = 0.5*RPI
    181181      DO ig=2,ngrid-1
    182         lati(ig)  = latitude(2+(ig-2)*iim)*RPI/180.
     182        lati(ig)  = latitude_deg(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,latitude(1),aire(1),aire(1)/airetot,' aires'
     199c     print*,1,latitude_deg(1),aire(1),aire(1)/airetot,' aires'
    200200c     DO ig=2,ngrid-1
    201 c     print*,ig,latitude(2+(ig-2)*iim),aire(ig),aire(ig)/airetot,' aires'
     201c     print*,ig,latitude_deg(2+(ig-2)*iim),aire(ig),aire(ig)/airetot,' aires'
    202202c     ENDDO
    203 c     print*,ngrid,latitude(klon),aire(ngrid),aire(ngrid)/airetot,' aires'
     203c     print*,ngrid,latitude_deg(klon),aire(ngrid),aire(ngrid)/airetot,' aires'
    204204c     stop
    205205     
  • trunk/LMDZ.TITAN/libf/phytitan/phyetat0.F90

    r1543 r1545  
    1313      USE iostart
    1414      USE infotrac
    15       USE geometry_mod,  only: latitude,longitude
     15      USE geometry_mod,  only: latitude_deg,longitude_deg
    1616      USE time_phylmdz_mod, only: itau_phy, raz_date
    1717
     
    3333integer :: i,isoil
    3434CHARACTER(len=2) :: str2
     35REAL :: lon_startphy(klon), lat_startphy(klon)
    3536
    3637! les variables globales lues dans le fichier restart
     
    7576      ENDIF
    7677
    77 ! read latitudes
    78 call get_field("latitude",latitude,found)
    79       IF (.not.found) THEN
    80          PRINT*, 'phyetat0: Le champ <latitude> est absent'
    81          CALL abort
    82       ENDIF
    83 
    84 ! read longitudes
    85 call get_field("longitude",longitude,found)
    86       IF (.not.found) THEN
    87          PRINT*, 'phyetat0: Le champ <longitude> est absent'
    88          CALL abort
    89       ENDIF
     78! read latitudes and make a sanity check (because already known from dyn)
     79call get_field("latitude",lat_startphy,found)
     80IF (.not.found) THEN
     81  PRINT*, 'phyetat0: Le champ <latitude> est absent'
     82  CALL abort
     83ENDIF
     84DO i=1,klon
     85  IF (ABS(lat_startphy(i)-latitude_deg(i))>=0.01) THEN
     86    WRITE(*,*) "phyetat0: Warning! Latitude discrepancy wrt startphy file:",&
     87               " i=",i," lat_startphy(i)=",lat_startphy(i),&
     88               " latitude_deg(i)=",latitude_deg(i)
     89    CALL abort
     90  ENDIF
     91ENDDO
     92
     93! read longitudes and make a sanity check (because already known from dyn)
     94call get_field("longitude",lon_startphy,found)
     95IF (.not.found) THEN
     96  PRINT*, 'phyetat0: Le champ <longitude> est absent'
     97  CALL abort
     98ENDIF
     99DO i=1,klon
     100  IF (ABS(lon_startphy(i)-longitude_deg(i))>=0.01) THEN
     101    WRITE(*,*) "phyetat0: Warning! Longitude discrepancy wrt startphy file:",&
     102               " i=",i," lon_startphy(i)=",lon_startphy(i),&
     103               " longitude_deg(i)=",longitude_deg(i)
     104    CALL abort
     105  ENDIF
     106ENDDO
    90107
    91108! read in other variables here ...
     
    319336      resch4(1) = 0.    ! pole nord = 1 point
    320337      DO i=2,klon
    321           if ((latitude(i).ge.75..and.latitude(i).le.85.).or.  &
    322               (latitude(i).ge.-85.and.latitude(i).le.-75.)) then
     338          if ((latitude_deg(i).ge.75..and.latitude_deg(i).le.85.).or.  &
     339              (latitude_deg(i).ge.-85.and.latitude_deg(i).le.-75.)) then
    323340            resch4(i) = 2.
    324341          else
     
    352369
    353370! do some more initializations
    354 call init_iophy_new(latitude,longitude)
     371call init_iophy_new(latitude_deg,longitude_deg)
    355372
    356373end subroutine phyetat0
  • trunk/LMDZ.TITAN/libf/phytitan/phyredem.F90

    r1543 r1545  
    1212                          put_var,put_field
    1313      USE infotrac
    14       USE geometry_mod,  only: longitude, latitude
     14      USE geometry_mod,  only: longitude_deg, latitude_deg
    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",longitude)
     66                     "Longitudes de la grille physique",longitude_deg)
    6767     
    6868      CALL put_field("latitude", &
    69                      "Latitudes de la grille physique",latitude)
     69                     "Latitudes de la grille physique",latitude_deg)
    7070
    7171! variables
  • trunk/LMDZ.TITAN/libf/phytitan/physiq.F

    r1543 r1545  
    5858      USE infotrac
    5959      use dimphy
    60       USE geometry_mod, ONLY: longitude, latitude, cell_area, dx, dy
     60      USE geometry_mod, ONLY: longitude, latitude, ! in radians
     61     &                        longitude_deg, latitude_deg, ! in degrees
     62     &                        cell_area, dx, dy
    6163      use cpdet_mod, only: cpdet, t2tpot
    6264      USE mod_phys_lmdz_para, only : is_parallel,jj_nb
     
    861863
    862864c dans zenang, Ls en degres ; dans mucorr, Ls en radians
    863       call mucorr(klon,zls,latitude,rmu0bar,fractbar)
     865      call mucorr(klon,zls,latitude_deg,rmu0bar,fractbar)
    864866      IF (cycle_diurne) THEN
    865867        zdtime=dtime*REAL(radpas) ! pas de temps du rayonnement (s)
    866         CALL zenang(zlsdeg,gmtime,zdtime,latitude,longitude,rmu0,fract)
     868        CALL zenang(zlsdeg,gmtime,zdtime,latitude_deg,longitude_deg,
     869     &              rmu0,fract)
    867870      ELSE
    868871        rmu0  = rmu0bar
     
    917920     $            paprs,pplay,ppk,radsol,falbe,
    918921     e            solsw, sollw, sollwdown, fder,
    919      e            longitude, latitude, dx, dy,   
     922     e            longitude_deg, latitude_deg, dx, dy,   
    920923     e            debut, lafin,
    921924     s            d_t_vdf,d_u_vdf,d_v_vdf,d_ts,
     
    13681371c A ADAPTER POUR VENUS ET TITAN!!!
    13691372c            CALL lift_noro(klon,klev,dtime,paprs,pplay,
    1370 c     e                   latitude,zmea,zstd,zpic,zgam,zthe,zpic,zval,
     1373c     e                   latitude_deg,zmea,zstd,zpic,zgam,zthe,zpic,zval,
    13711374c     e                   igwd,idx,itest,
    13721375c     e                   t_seri, u_seri, v_seri,
     
    14251428c====================================================================
    14261429      if (ballons.eq.1) then
    1427          CALL ballon(30,pdtphys,rjourvrai,gmtime,latitude,longitude,
     1430         CALL ballon(30,pdtphys,rjourvrai,gmtime,
     1431     &               latitude_deg,longitude_deg,
    14281432c    C               t,pplay,u,v,pphi)   ! alt above surface (smoothed for GCM)
    14291433     C               t,pplay,u,v,zphi)   ! alt above planet average radius
     
    14591463      CALL aaam_bud (27,klon,klev,rjourvrai,gmtime,
    14601464     C               ra,rg,romega,
    1461      C               latitude,longitude,pphis,
     1465     C               latitude_deg,longitude_deg,pphis,
    14621466     C               zustrdr,zustrli,zustrcl,
    14631467     C               zvstrdr,zvstrli,zvstrcl,
     
    15451549c     DO k = 1, klev
    15461550c     DO i = 1, klon
    1547 c       mang(i,k) = RA*cos(latitude(i)*RPI/180.)
    1548 c    .     *(u_seri(i,k)+RA*cos(latitude(i)*RPI/180.)*ROMEGA)
     1551c       mang(i,k) = RA*cos(latitude(i))
     1552c    .     *(u_seri(i,k)+RA*cos(latitude(i))*ROMEGA)
    15491553c    .     *cell_area(i)*(paprs(i,k)-paprs(i,k+1))/RG
    15501554c       mangtot=mangtot+mang(i,k)
  • trunk/LMDZ.TITAN/libf/phytitan/radtitan.F

    r1543 r1545  
    3333      USE infotrac
    3434      use dimphy
    35       USE geometry_mod, ONLY: latitude
     35      USE geometry_mod, ONLY: latitude ! in radians
    3636      USE optcld, only : iniqcld
    3737      use moyzon_mod, only:plevmoy
     
    214214          somcoslat=0.
    215215          do j=1,klon
    216             coslat(j) = cos(latitude(j)*RPI/180.)
     216            coslat(j) = cos(latitude(j))
    217217            somcoslat=somcoslat+coslat(j)
    218218          enddo
  • trunk/LMDZ.VENUS/libf/phyvenus/iophy.F90

    r1530 r1545  
    2929  USE ioipsl
    3030  implicit none
    31     real,dimension(klon),intent(in) :: rlon
    32     real,dimension(klon),intent(in) :: rlat
     31    real,dimension(klon),intent(in) :: rlon ! longitudes, in degrees
     32    real,dimension(klon),intent(in) :: rlat ! latitudes, in degrees
    3333
    3434    REAL,dimension(klon_glo)        :: rlat_glo
  • trunk/LMDZ.VENUS/libf/phyvenus/nirco2abs.F

    r1543 r1545  
    33
    44       use dimphy
    5        use geometry_mod, only: longitude, latitude
     5       use geometry_mod, only: longitude_deg, latitude_deg
    66       use chemparam_mod, only: i_co2, i_o
    77c       use compo_hedin83_mod2
     
    236236            zday_int = (n-1)/float(nstep)
    237237
    238             CALL zenang(0.,zday_int,RDAY/nstep,latitude,longitude,
    239      s             mu0_int,fract_int)
     238            CALL zenang(0.,zday_int,RDAY/nstep,
     239     &                  latitude_deg,longitude_deg,
     240     &                  mu0_int,fract_int)
    240241
    241242            do ig=1,nlon
  • trunk/LMDZ.VENUS/libf/phyvenus/phyetat0.F90

    r1543 r1545  
    1313      USE iostart
    1414      USE infotrac
    15       use geometry_mod, only: longitude, latitude
     15      use geometry_mod, only: longitude_deg, latitude_deg
    1616      USE time_phylmdz_mod, only: itau_phy, raz_date
    1717
     
    3333integer :: i,isoil
    3434CHARACTER(len=2) :: str2
     35REAL :: lon_startphy(klon), lat_startphy(klon)
    3536
    3637! les variables globales lues dans le fichier restart
     
    6465      ENDIF
    6566
    66 ! read latitudes
    67 call get_field("latitude",latitude,found)
    68       IF (.not.found) THEN
    69          PRINT*, 'phyetat0: Le champ <latitude> est absent'
    70          CALL abort
    71       ENDIF
    72 
    73 ! read longitudes
    74 call get_field("longitude",longitude,found)
    75       IF (.not.found) THEN
    76          PRINT*, 'phyetat0: Le champ <longitude> est absent'
    77          CALL abort
    78       ENDIF
     67! read latitudes and make a sanity check (because already known from dyn)
     68call get_field("latitude",lat_startphy,found)
     69IF (.not.found) THEN
     70  PRINT*, 'phyetat0: Le champ <latitude> est absent'
     71  CALL abort
     72ENDIF
     73DO i=1,klon
     74  IF (ABS(lat_startphy(i)-latitude_deg(i))>=0.01) THEN
     75    WRITE(*,*) "phyetat0: Warning! Latitude discrepancy wrt startphy file:",&
     76               " i=",i," lat_startphy(i)=",lat_startphy(i),&
     77               " latitude_deg(i)=",latitude_deg(i)
     78    CALL abort
     79  ENDIF
     80ENDDO
     81
     82! read longitudes and make a sanity check (because already known from dyn)
     83call get_field("longitude",lon_startphy,found)
     84IF (.not.found) THEN
     85  PRINT*, 'phyetat0: Le champ <longitude> est absent'
     86  CALL abort
     87ENDIF
     88DO i=1,klon
     89  IF (ABS(lon_startphy(i)-longitude_deg(i))>=0.01) THEN
     90    WRITE(*,*) "phyetat0: Warning! Longitude discrepancy wrt startphy file:",&
     91               " i=",i," lon_startphy(i)=",lon_startphy(i),&
     92               " longitude_deg(i)=",longitude_deg(i)
     93    CALL abort
     94  ENDIF
     95ENDDO
    7996
    8097! read in other variables here ...
     
    344361
    345362! do some more initializations
    346 call init_iophy_new(latitude,longitude)
     363call init_iophy_new(latitude_deg,longitude_deg)
    347364
    348365end subroutine phyetat0
  • trunk/LMDZ.VENUS/libf/phyvenus/phyredem.F90

    r1543 r1545  
    1212                          put_var,put_field
    1313      USE infotrac
    14       use geometry_mod, only: longitude, latitude
     14      use geometry_mod, only: longitude_deg, latitude_deg
    1515      USE time_phylmdz_mod, only: day_end, annee_ref, itau_phy, raz_date
    1616
     
    6262
    6363      CALL put_field("longitude", &
    64                      "Longitudes de la grille physique",longitude)
     64                     "Longitudes de la grille physique",longitude_deg)
    6565     
    6666      CALL put_field("latitude", &
    67                      "Latitudes de la grille physique",latitude)
     67                     "Latitudes de la grille physique",latitude_deg)
    6868
    6969! variables
  • trunk/LMDZ.VENUS/libf/phyvenus/physiq.F

    r1543 r1545  
    5858      USE infotrac
    5959      use dimphy
    60       USE geometry_mod, only: longitude, latitude, cell_area, dx, dy
     60      USE geometry_mod,only: longitude, latitude, ! in radians
     61     &                       longitude_deg,latitude_deg, ! in degrees
     62     &                       cell_area,dx,dy
    6163      USE mod_phys_lmdz_para, only : is_parallel,jj_nb
    6264      USE phys_state_var_mod ! Variables sauvegardees de la physique
     
    665667      DO k = 1, klev
    666668      DO i = 1, klon     
    667          ilat=(latitude(i)/5.625) + 17.
     669         ilat=(latitude_deg(i)/5.625) + 17.
    668670         delta_temp(i,k)=mat_dtemp(INT(ilat),k)
    669671      ENDDO
     
    832834      IF (cycle_diurne) THEN
    833835        zdtime=dtime*REAL(radpas) ! pas de temps du rayonnement (s)
    834         CALL zenang(zlongi,gmtime,zdtime,latitude,longitude,rmu0,fract)
     836        CALL zenang(zlongi,gmtime,zdtime,latitude_deg,longitude_deg,
     837     &              rmu0,fract)
    835838      ELSE
    836         call mucorr(klon,zlongi,latitude,rmu0,fract)
     839        call mucorr(klon,zlongi,latitude_deg,rmu0,fract)
    837840      ENDIF
    838841     
     
    859862     I                   debut,lafin,nqmax,
    860863     I                   nlon,nlev,dtime,paprs,
    861      I                   latitude,longitude,
     864     I                   latitude_deg,longitude_deg,
    862865     O                   tr_seri)
    863866
     
    869872           DO k = 1, klev
    870873           DO i = 1, klon     
    871              ilat=(latitude(i)/5.625) + 17.
    872 !             PRINT*,INT(ilat),latitude(i),mat_dtemp(INT(ilat),k)
     874             ilat=(latitude_deg(i)/5.625) + 17.
     875!             PRINT*,INT(ilat),latitude_deg(i),mat_dtemp(INT(ilat),k)
    873876             delta_temp(i,k)=mat_dtemp(INT(ilat),k)
    874877           ENDDO
     
    888891     I             nqmax,
    889892     I             klon,
    890      I             latitude,
    891      I             longitude,
     893     I             latitude_deg,
     894     I             longitude_deg,
    892895     I             nlev,
    893896     I             dtime,
     
    902905     I             nqmax,
    903906     I             klon,
    904      I             latitude,
    905      I             longitude,
     907     I             latitude_deg,
     908     I             longitude_deg,
    906909     I             nlev,
    907910     I             dtime,
     
    10321035     $            paprs,pplay,ppk,radsol,falbe,
    10331036     e            solsw, sollw, sollwdown, fder,
    1034      e            longitude, latitude, dx, dy,   
     1037     e            longitude_deg, latitude_deg, dx, dy,   
    10351038     e            debut, lafin,
    10361039     s            d_t_vdf,d_u_vdf,d_v_vdf,d_ts,
     
    15081511c A ADAPTER POUR VENUS!!!
    15091512c            CALL lift_noro(klon,klev,dtime,paprs,pplay,
    1510 c     e                   latitude,zmea,zstd,zpic,zgam,zthe,zpic,zval,
     1513c     e                   latitude_deg,zmea,zstd,zpic,zgam,zthe,zpic,zval,
    15111514c     e                   igwd,idx,itest,
    15121515c     e                   t_seri, u_seri, v_seri,
     
    15671570c====================================================================
    15681571      if (ballons.eq.1) then
    1569         CALL ballon(30,pdtphys,rjourvrai,gmtime*RDAY,latitude,longitude,
     1572        CALL ballon(30,pdtphys,rjourvrai,gmtime*RDAY,
     1573     &              latitude_deg,longitude_deg,
    15701574c    C              t,pplay,u,v,pphi)   ! alt above surface (smoothed for GCM)
    15711575     C              t,pplay,u,v,zphi)   ! alt above planet average radius
     
    16011605      CALL aaam_bud (27,klon,klev,rjourvrai,gmtime*RDAY,
    16021606     C               ra,rg,romega,
    1603      C               latitude,longitude,pphis,
     1607     C               latitude_deg,longitude_deg,pphis,
    16041608     C               zustrdr,zustrli,zustrcl,
    16051609     C               zvstrdr,zvstrli,zvstrcl,
     
    16871691c     DO k = 1, klev
    16881692c     DO i = 1, klon
    1689 c       mang(i,k) = RA*cos(latitude(i)*RPI/180.)
    1690 c    .     *(u_seri(i,k)+RA*cos(latitude(i)*RPI/180.)*ROMEGA)
     1693c       mang(i,k) = RA*cos(latitude(i))
     1694c    .     *(u_seri(i,k)+RA*cos(latitude(i))*ROMEGA)
    16911695c    .     *cell_area(i)*(paprs(i,k)-paprs(i,k+1))/RG
    16921696c       mangtot=mangtot+mang(i,k)
  • trunk/LMDZ.VENUS/libf/phyvenus/radlwsw.F

    r1543 r1545  
    2727c======================================================================
    2828      use dimphy
    29       USE geometry_mod, ONLY: latitude
     29      USE geometry_mod, ONLY: latitude_deg
    3030      USE phys_state_var_mod, only: heat,cool,radsol,
    3131     .      topsw,toplw,solsw,sollw,sollwdown,lwnet,swnet
     
    164164         lat=1
    165165       else
    166          if (abs(latitude(j)).le.50.) then
     166         if (abs(latitude_deg(j)).le.50.) then
    167167           lat=1
    168          elseif (abs(latitude(j)).le.60.) then
     168         elseif (abs(latitude_deg(j)).le.60.) then
    169169           lat=2
    170          elseif (abs(latitude(j)).le.70.) then
     170         elseif (abs(latitude_deg(j)).le.70.) then
    171171           lat=3
    172          elseif (abs(latitude(j)).le.80.) then
     172         elseif (abs(latitude_deg(j)).le.80.) then
    173173           lat=4
    174174         else
  • trunk/LMDZ.VENUS/libf/phyvenus/radlwsw.NewtonCool

    r1543 r1545  
    2424c======================================================================
    2525      use dimphy
    26       USE geometry_mod, ONLY: latitude
     26      USE geometry_mod, ONLY: latitude ! in radians
    2727      USE phys_state_var_mod, only: heat,cool,radsol,
    2828     .      topsw,toplw,solsw,sollw,sollwdown,lwnet,swnet
     
    9898            ztemp = tempCLee(level)*(1-fact)+tempCLee(level+1)*fact
    9999            zdt   = dt_epCLee(level)*(1-fact)+dt_epCLee(level+1)*fact
    100 c           zt_eq(i,k) = ztemp + zdt*(cos(latitude(i)*RPI/180.)-2./RPI)
    101             zt_eq(i,k) = ztemp + zdt*(cos(latitude(i)*RPI/180.)-RPI/4.)
     100c           zt_eq(i,k) = ztemp + zdt*(cos(latitude(i))-2./RPI)
     101            zt_eq(i,k) = ztemp + zdt*(cos(latitude(i))-RPI/4.)
    102102           
    103103          enddo
Note: See TracChangeset for help on using the changeset viewer.