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

Location:
trunk/LMDZ.COMMON/libf
Files:
3 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:
  • trunk/LMDZ.COMMON/libf/dyn3dpar/gcm.F

    r1391 r1395  
    3434#ifdef CPP_PHYS
    3535      USE mod_grid_phy_lmdz
    36       USE mod_phys_lmdz_para, ONLY : klon_mpi_para_nb
     36!      USE mod_phys_lmdz_para, ONLY : klon_mpi_para_nb
    3737      USE mod_phys_lmdz_omp_data, ONLY: klon_omp
    3838      USE dimphy
     
    123123
    124124
    125       LOGICAL call_iniphys
    126       data call_iniphys/.true./
     125!      LOGICAL call_iniphys
     126!      data call_iniphys/.true./
    127127
    128128c      REAL alpha(ip1jmp1,llm),beta(ip1jmp1,llm)
     
    150150c    variables pour l'initialisation de la physique :
    151151c    ------------------------------------------------
    152       INTEGER ngridmx
    153       PARAMETER( ngridmx = 2+(jjm-1)*iim - 1/jjm   )
    154       REAL zcufi(ngridmx),zcvfi(ngridmx)
    155       REAL latfi(ngridmx),lonfi(ngridmx)
    156       REAL airefi(ngridmx)
    157       SAVE latfi, lonfi, airefi
     152!      INTEGER ngridmx
     153!      PARAMETER( ngridmx = 2+(jjm-1)*iim - 1/jjm   )
     154!      REAL zcufi(ngridmx),zcvfi(ngridmx)
     155!      REAL latfi(ngridmx),lonfi(ngridmx)
     156!      REAL airefi(ngridmx)
     157!      SAVE latfi, lonfi, airefi
    158158     
    159159      INTEGER :: ierr
     
    198198#ifdef CPP_PHYS
    199199        CALL init_phys_lmdz(iim,jjp1,llm,mpi_size,distrib_phys)
    200 #endif
     200!#endif
     201!      CALL set_bands
     202!#ifdef CPP_PHYS
     203      CALL Init_interface_dyn_phys
     204#endif
     205      CALL barrier
     206
    201207      CALL set_bands
    202 #ifdef CPP_PHYS
    203       CALL Init_interface_dyn_phys
    204 #endif
    205       CALL barrier
    206 
    207208      if (mpi_rank==0) call WriteBands
    208209      call SetDistrib(jj_Nb_Caldyn)
     
    213214
    214215#ifdef CPP_PHYS
    215 c$OMP PARALLEL
    216       call initcomgeomphy
    217 c$OMP END PARALLEL
     216!c$OMP PARALLEL
     217!      call initcomgeomphy
     218!c$OMP END PARALLEL
    218219#endif
    219220
     
    467468c   -------------------------------
    468469
    469       IF (call_iniphys.and.(iflag_phys==1.or.iflag_phys>=100)) THEN
    470          latfi(1)=rlatu(1)
    471          lonfi(1)=0.
    472          zcufi(1) = cu(1)
    473          zcvfi(1) = cv(1)
    474          DO j=2,jjm
    475             DO i=1,iim
    476                latfi((j-2)*iim+1+i)= rlatu(j)
    477                lonfi((j-2)*iim+1+i)= rlonv(i)
    478                zcufi((j-2)*iim+1+i) = cu((j-1)*iip1+i)
    479                zcvfi((j-2)*iim+1+i) = cv((j-1)*iip1+i)
    480             ENDDO
    481          ENDDO
    482          latfi(ngridmx)= rlatu(jjp1)
    483          lonfi(ngridmx)= 0.
    484          zcufi(ngridmx) = cu(ip1jm+1)
    485          zcvfi(ngridmx) = cv(ip1jm-iim)
     470      IF ((iflag_phys==1).or.(iflag_phys>=100)) THEN
     471!         latfi(1)=rlatu(1)
     472!         lonfi(1)=0.
     473!         zcufi(1) = cu(1)
     474!         zcvfi(1) = cv(1)
     475!         DO j=2,jjm
     476!            DO i=1,iim
     477!               latfi((j-2)*iim+1+i)= rlatu(j)
     478!               lonfi((j-2)*iim+1+i)= rlonv(i)
     479!               zcufi((j-2)*iim+1+i) = cu((j-1)*iip1+i)
     480!               zcvfi((j-2)*iim+1+i) = cv((j-1)*iip1+i)
     481!            ENDDO
     482!         ENDDO
     483!         latfi(ngridmx)= rlatu(jjp1)
     484!         lonfi(ngridmx)= 0.
     485!         zcufi(ngridmx) = cu(ip1jm+1)
     486!         zcvfi(ngridmx) = cv(ip1jm-iim)
    486487
    487488         ! build airefi(), mesh area on physics grid
    488          CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,aire,airefi)
     489!         CALL gr_dyn_fi(1,iip1,jjp1,ngridmx,aire,airefi)
    489490         ! Poles are single points on physics grid
    490          airefi(1)=airefi(1)*iim
    491          airefi(ngridmx)=airefi(ngridmx)*iim
     491!         airefi(1)=airefi(1)*iim
     492!         airefi(ngridmx)=airefi(ngridmx)*iim
    492493
    493494! Physics
    494495#ifdef CPP_PHYS
    495          CALL iniphysiq(ngridmx,llm,daysec,day_ini,dtphys/nsplit_phys,
    496      &                latfi,lonfi,airefi,zcufi,zcvfi,rad,g,r,cpp,
     496!         CALL iniphysiq(ngridmx,llm,daysec,day_ini,dtphys/nsplit_phys,
     497!     &                latfi,lonfi,airefi,zcufi,zcvfi,rad,g,r,cpp,
     498!     &                iflag_phys)
     499         CALL iniphysiq(iim,jjm,llm,daysec,day_ini,dtphys/nsplit_phys,
     500     &                rlatu,rlonv,aire,cu,cv,rad,g,r,cpp,
    497501     &                iflag_phys)
    498502#endif
    499          call_iniphys=.false.
     503!         call_iniphys=.false.
    500504      ENDIF ! of IF (call_iniphys.and.(iflag_phys==1.or.iflag_phys>=100))
    501505
  • trunk/LMDZ.COMMON/libf/dyn3dpar/mod_interface_dyn_phys.F90

    r776 r1395  
    1212 
    1313  SUBROUTINE Init_interface_dyn_phys
    14     USE mod_phys_lmdz_mpi_data
     14    USE mod_phys_lmdz_mpi_data, ONLY: klon_mpi, is_north_pole, is_south_pole, &
     15                                      ii_begin, jj_begin, ii_end, jj_end
    1516    IMPLICIT NONE
    1617    include 'dimensions.h'   
Note: See TracChangeset for help on using the changeset viewer.