Ignore:
Timestamp:
Apr 6, 2016, 8:51:34 AM (9 years ago)
Author:
emillour
Message:

Venus and Titan GCMs:
Updates in the physics to keep up with updates in LMDZ5 (up to
LMDZ5 trunk, rev 2350) concerning dynamics/physics separation:

  • Adapted makelmdz and makelmdz_fcm script to stop if trying to compile 1d model or newstart or start2archive in parallel.
  • got rid of references to "dimensions.h" in physics. Within physics packages, use nbp_lon (=iim), nbp_lat (=jjmp1) and nbp_lev (=llm) from module mod_grid_phy_lmdz (in phy_common) instead. Only partially done for Titan, because of many hard-coded commons; a necessary first step will be to clean these up (using modules).

EM

File:
1 edited

Legend:

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

    r102 r1530  
    33
    44      use dimphy
     5      use mod_grid_phy_lmdz, only: nbp_lon, nbp_lat
    56      implicit none
    67
     
    9495c======================================================================
    9596
    96 #include "dimensions.h"
    9797#include "YOMCST.h"
    9898c
     
    110110      INTEGER jj,ii,ll
    111111
    112       REAL zlon(iim+1),zlat(jjm+1)
    113       save zlon,zlat
     112      REAL,SAVE,ALLOCATABLE :: zlon(:),zlat(:)
    114113
    115114      REAL time
     
    141140      print*,"BALLOONS ACTIVATED"
    142141
     142      allocate(zlon(nbp_lon+1))
     143      allocate(zlat(nbp_lat))
     144
    143145C Latitudes:
    144146      zlat(1)=plat(1)*RPI/180.
    145       do j = 2,jjm
    146          k=(j-2)*iim+2
     147      do j = 2,nbp_lat-1
     148         k=(j-2)*nbp_lon+2
    147149         zlat(j)=plat(k)*RPI/180.
    148150      enddo
    149       zlat(jjm+1)=plat(klon)*RPI/180.
     151      zlat(nbp_lat)=plat(klon)*RPI/180.
    150152
    151153C Longitudes:
    152       do i = 1,iim
     154      do i = 1,nbp_lon
    153155         k=i+1
    154156         zlon(i)=plon(k)*RPI/180.
    155157      enddo
    156       zlon(iim+1)=zlon(1)+2.*RPI
     158      zlon(nbp_lon+1)=zlon(1)+2.*RPI
    157159
    158160c verif init     lat de 90 à -90, lon de -180 à 180
     
    256258
    257259      use dimphy
     260      use mod_grid_phy_lmdz, only: nbp_lon, nbp_lat
    258261      implicit none
    259262
     
    283286c======================================================================
    284287
    285 #include "dimensions.h"
    286288#include "YOMCST.h"
    287289c
     
    289291c
    290292      real map_u(klon),map_v(klon),map_a(klon)
    291       real latit(jjm+1),longit(iim)
     293      real latit(nbp_lat),longit(nbp_lon)
    292294      real phi,lam,ubal,vbal,abal
    293295c
     
    296298      INTEGER i,j,k
    297299      INTEGER jj,ii
    298       REAL    ujj(iim+1),vjj(iim+1),ajj(iim+1)
     300      REAL    ujj(nbp_lon+1),vjj(nbp_lon+1),ajj(nbp_lon+1)
    299301      REAL    factlat,factlon
    300302
     
    302304c-------------------------------------------------
    303305        jj=1  ! POLE NORD
    304         do j=2,jjm
     306        do j=2,nbp_lat-1
    305307          if (phi.lt.latit(j)) jj=j
    306308        enddo
     
    309311c pole nord
    310312        if (jj.eq.1) then
    311          do i=1,iim
     313         do i=1,nbp_lon
    312314          ujj(i) = map_u(i+1)*factlat + map_u(1)*(1-factlat)
    313315          vjj(i) = map_v(i+1)*factlat + map_v(1)*(1-factlat)
     
    315317         enddo
    316318c pole sud
    317         elseif (jj.eq.jjm) then
    318          do i=1,iim
    319           k = (jj-2)*iim+1+i
     319        elseif (jj.eq.nbp_lat-1) then
     320         do i=1,nbp_lon
     321          k = (jj-2)*nbp_lon+1+i
    320322          ujj(i) = map_u(klon)*factlat + map_u(k)*(1-factlat)
    321323          vjj(i) = map_v(klon)*factlat + map_v(k)*(1-factlat)
     
    324326c autres latitudes
    325327        else
    326          do i=1,iim
    327           k = (jj-2)*iim+1+i
    328           ujj(i) = map_u(k+iim)*factlat + map_u(k)*(1-factlat)
    329           vjj(i) = map_v(k+iim)*factlat + map_v(k)*(1-factlat)
    330           ajj(i) = map_a(k+iim)*factlat + map_a(k)*(1-factlat)
     328         do i=1,nbp_lon
     329          k = (jj-2)*nbp_lon+1+i
     330          ujj(i) = map_u(k+nbp_lon)*factlat + map_u(k)*(1-factlat)
     331          vjj(i) = map_v(k+nbp_lon)*factlat + map_v(k)*(1-factlat)
     332          ajj(i) = map_a(k+nbp_lon)*factlat + map_a(k)*(1-factlat)
    331333         enddo
    332334        endif
    333         ujj(iim+1)=ujj(1)
    334         vjj(iim+1)=vjj(1)
    335         ajj(iim+1)=ajj(1)
     335        ujj(nbp_lon+1)=ujj(1)
     336        vjj(nbp_lon+1)=vjj(1)
     337        ajj(nbp_lon+1)=ajj(1)
    336338
    337339c Interpolation in longitudes
    338340c-------------------------------------------------
    339341        ii=1  ! lon=-180
    340         do i=2,iim
     342        do i=2,nbp_lon
    341343          if (lam.gt.longit(i)) ii=i
    342344        enddo
     
    370372c======================================================================
    371373
    372 #include "dimensions.h"
    373374#include "YOMCST.h"
    374375c
Note: See TracChangeset for help on using the changeset viewer.