Ignore:
Timestamp:
Mar 12, 2015, 12:45:17 PM (10 years ago)
Author:
emillour
Message:

All GCMS:
Some cleanup and tidying on the dynamics/physics interface.
Essentially affects the "iniphysiq" routine in all physics packages.
EM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.COMMON/libf/dyn3d/gcm.F

    r1391 r1395  
    3838! Ehouarn: the following are needed with (parallel) physics:
    3939#ifdef CPP_PHYS
    40       USE dimphy
    41       USE comgeomphy
     40!      USE dimphy
     41!      USE comgeomphy, ONLY: initcomgeomphy
    4242#endif
    4343#ifdef INCA
     
    127127      LOGICAL first
    128128
    129       LOGICAL call_iniphys
    130       data call_iniphys/.true./
     129!      LOGICAL call_iniphys
     130!      data call_iniphys/.true./
    131131
    132132c+jld variables test conservation energie
     
    153153c    variables pour l'initialisation de la physique :
    154154c    ------------------------------------------------
    155       INTEGER ngridmx
    156       PARAMETER( ngridmx = 2+(jjm-1)*iim - 1/jjm   )
    157       REAL zcufi(ngridmx),zcvfi(ngridmx)
    158       REAL latfi(ngridmx),lonfi(ngridmx)
    159       REAL airefi(ngridmx)
    160       SAVE latfi, lonfi, airefi
     155!      INTEGER ngridmx
     156!      PARAMETER( ngridmx = 2+(jjm-1)*iim - 1/jjm   )
     157!      REAL zcufi(ngridmx),zcvfi(ngridmx)
     158!      REAL latfi(ngridmx),lonfi(ngridmx)
     159!      REAL airefi(ngridmx)
     160!      SAVE latfi, lonfi, airefi
    161161
    162162c-----------------------------------------------------------------------
     
    201201#ifdef CPP_PHYS
    202202      CALL init_phys_lmdz(iim,jjp1,llm,1,(/(jjm-1)*iim+2/))
    203       call initcomgeomphy
     203!      call initcomgeomphy ! now done in iniphysiq
    204204#endif
    205205!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    457457c   -------------------------------
    458458
    459       IF (call_iniphys.and.(iflag_phys==1.or.iflag_phys>=100)) THEN
    460          latfi(1)=rlatu(1)
    461          lonfi(1)=0.
    462          zcufi(1) = cu(1)
    463          zcvfi(1) = cv(1)
    464          DO j=2,jjm
    465             DO i=1,iim
    466                latfi((j-2)*iim+1+i)= rlatu(j)
    467                lonfi((j-2)*iim+1+i)= rlonv(i)
    468                zcufi((j-2)*iim+1+i) = cu((j-1)*iip1+i)
    469                zcvfi((j-2)*iim+1+i) = cv((j-1)*iip1+i)
    470             ENDDO
    471          ENDDO
    472          latfi(ngridmx)= rlatu(jjp1)
    473          lonfi(ngridmx)= 0.
    474          zcufi(ngridmx) = cu(ip1jm+1)
    475          zcvfi(ngridmx) = cv(ip1jm-iim)
     459      IF ((iflag_phys==1).or.(iflag_phys>=100)) THEN
     460!      IF (call_iniphys.and.(iflag_phys==1.or.iflag_phys>=100)) THEN
     461!         latfi(1)=rlatu(1)
     462!         lonfi(1)=0.
     463!         zcufi(1) = cu(1)
     464!         zcvfi(1) = cv(1)
     465!         DO j=2,jjm
     466!            DO i=1,iim
     467!               latfi((j-2)*iim+1+i)= rlatu(j)
     468!               lonfi((j-2)*iim+1+i)= rlonv(i)
     469!               zcufi((j-2)*iim+1+i) = cu((j-1)*iip1+i)
     470!               zcvfi((j-2)*iim+1+i) = cv((j-1)*iip1+i)
     471!            ENDDO
     472!         ENDDO
     473!         latfi(ngridmx)= rlatu(jjp1)
     474!         lonfi(ngridmx)= 0.
     475!         zcufi(ngridmx) = cu(ip1jm+1)
     476!         zcvfi(ngridmx) = cv(ip1jm-iim)
    476477
    477478         ! build airefi(), mesh area on physics grid
    478          CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,aire,airefi)
     479!         CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,aire,airefi)
    479480         ! Poles are single points on physics grid
    480          airefi(1)=airefi(1)*iim
    481          airefi(ngridmx)=airefi(ngridmx)*iim
     481!         airefi(1)=airefi(1)*iim
     482!         airefi(ngridmx)=airefi(ngridmx)*iim
    482483
    483484! Initialisation de la physique: pose probleme quand on tourne
     
    485486! Il faut une cle CPP_PHYS
    486487#ifdef CPP_PHYS
    487          CALL iniphysiq(ngridmx,llm,daysec,day_ini,dtphys/nsplit_phys,
    488      &                latfi,lonfi,airefi,zcufi,zcvfi,rad,g,r,cpp,
     488!         CALL iniphysiq(ngridmx,llm,daysec,day_ini,dtphys/nsplit_phys,
     489!     &                latfi,lonfi,airefi,zcufi,zcvfi,rad,g,r,cpp,
     490!     &                iflag_phys)
     491         CALL iniphysiq(iim,jjm,llm,daysec,day_ini,dtphys/nsplit_phys,
     492     &                rlatu,rlonv,aire,cu,cv,rad,g,r,cpp,
    489493     &                iflag_phys)
    490494#endif
    491          call_iniphys=.false.
    492       ENDIF ! of IF (call_iniphys.and.(iflag_phys.eq.1))
     495!         call_iniphys=.false.
     496      ENDIF ! of IF ((iflag_phys==1).or.(iflag_phys>=100))
    493497
    494498c  numero de stockage pour les fichiers de redemarrage:
Note: See TracChangeset for help on using the changeset viewer.