Changeset 1545 for trunk/LMDZ.TITAN/libf


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/LMDZ.TITAN/libf/phytitan
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.