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.VENUS/libf/phyvenus
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • 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.