Changeset 4600 for LMDZ6


Ignore:
Timestamp:
Jun 30, 2023, 8:18:43 PM (17 months ago)
Author:
yann meurdesoif
Message:

Suppress CPP_MPI key usage in source code. MPI wrappers is used to supress missing symbol if the mpi library is not linked

YM

Location:
LMDZ6/trunk/libf
Files:
2 added
19 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/dyn3dmem/abort_gcm.F

    r4593 r4600  
    4747      else
    4848        write(lunout,*) 'Houston, we have a problem, ierr = ', ierr
    49 #ifdef CPP_MPI
     49
     50        if (using_mpi) THEN
    5051C$OMP CRITICAL (MPI_ABORT_GCM)
    51         call MPI_ABORT(COMM_LMDZ, 1, ierror_mpi)
     52          call MPI_ABORT(COMM_LMDZ, 1, ierror_mpi)
    5253C$OMP END CRITICAL (MPI_ABORT_GCM)
    53 #else
    54         stop 1
    55 #endif         
     54        else
     55         stop 1
     56        endif         
     57     
    5658      endif
    5759      END
  • LMDZ6/trunk/libf/dyn3dmem/mod_const_mpi.F90

    r4146 r4600  
    1111
    1212  SUBROUTINE Init_const_mpi
     13    USE lmdz_mpi
     14
    1315#ifdef CPP_IOIPSL
    1416    USE IOIPSL, ONLY: getin
     
    2527#endif
    2628    IMPLICIT NONE
    27 #ifdef CPP_MPI
    28     INCLUDE 'mpif.h'
    29 #endif
    3029
    3130    INTEGER             :: ierr
     
    5251!$OMP END MASTER
    5352#endif
    54 #ifdef CPP_MPI
    5553      MPI_REAL_LMDZ=MPI_REAL8
    56 #endif
    5754    ELSE
    5855      CALL init_mpi
     
    6259 
    6360  SUBROUTINE Init_mpi
     61    USE lmdz_mpi
     62
    6463#ifdef CPP_XIOS
    6564    USE wxios, only: wxios_init
    6665#endif
    6766  IMPLICIT NONE
    68 #ifdef CPP_MPI
    69      INCLUDE 'mpif.h'
    70 #endif
    7167    INTEGER             :: ierr
    7268    INTEGER             :: thread_required
    7369    INTEGER             :: thread_provided
    7470
    75 #ifdef CPP_MPI
    7671!$OMP MASTER
    7772      thread_required=MPI_THREAD_SERIALIZED
     
    9287#endif
    9388!$OMP END MASTER
    94 #else
    95 #ifdef CPP_XIOS
    96 !$OMP MASTER
    97       CALL wxios_init("LMDZ")
    98 !$OMP END MASTER
    99 #endif
    100 #endif
    10189
    102    END SUBROUTINE Init_mpi
     90END SUBROUTINE Init_mpi
    10391   
    10492END MODULE mod_const_mpi
  • LMDZ6/trunk/libf/dyn3dmem/mod_hallo.F90

    r4469 r4600  
    106106 
    107107  SUBROUTINE create_global_mpi_buffer
     108  USE lmdz_mpi
    108109  IMPLICIT NONE
    109 #ifdef CPP_MPI
    110   INCLUDE 'mpif.h'
    111 #endif 
    112110    POINTER (Pbuffer,MPI_Buffer(MaxBufferSize))
    113111    REAL :: MPI_Buffer
    114 #ifdef CPP_MPI
    115112    INTEGER(KIND=MPI_ADDRESS_KIND) :: BS
    116 #else
    117     INTEGER(KIND=8) :: BS
    118 #endif
    119113    INTEGER :: i,ierr
    120114
     
    122116      Bs=8*MaxBufferSize
    123117!$OMP CRITICAL (MPI)
    124 #ifdef CPP_MPI
    125118      CALL MPI_ALLOC_MEM(BS,MPI_INFO_NULL,Pbuffer,ierr)
    126 #endif
    127119!$OMP END CRITICAL (MPI)
    128120      DO i=1,MaxBufferSize
     
    11571149  subroutine Register_Hallo(Field,ij,ll,RUp,Rdown,SUp,SDown,a_request)
    11581150  USE dimensions_mod
     1151  USE lmdz_mpi
    11591152      implicit none
    11601153
    1161 #ifdef CPP_MPI
    1162     include 'mpif.h'
    1163 #endif   
    11641154      INTEGER :: ij,ll
    11651155      REAL, dimension(ij,ll) :: Field
     
    12241214  subroutine Register_Hallo_u(Field,ll,RUp,Rdown,SUp,SDown,a_request)
    12251215  USE dimensions_mod
     1216  USE lmdz_mpi
    12261217      implicit none
    1227 #ifdef CPP_MPI
    1228     include 'mpif.h'
    1229 #endif   
    12301218      INTEGER :: ll
    12311219      REAL, dimension(ijb_u:ije_u,ll) :: Field
     
    12891277  subroutine Register_Hallo_v(Field,ll,RUp,Rdown,SUp,SDown,a_request)
    12901278  USE dimensions_mod
     1279  USE lmdz_mpi
    12911280      implicit none
    1292 #ifdef CPP_MPI
    1293     include 'mpif.h'
    1294 #endif   
    12951281      INTEGER :: ll
    12961282      REAL, dimension(ijb_v:ije_v,ll) :: Field
     
    13541340    subroutine SendRequest(a_Request)
    13551341    USE dimensions_mod
     1342    USE lmdz_mpi
    13561343      implicit none
    1357 
    1358 #ifdef CPP_MPI
    1359       include 'mpif.h'
    1360 #endif
    13611344
    13621345      type(request),target :: a_request
     
    14101393!$OMP CRITICAL (MPI)
    14111394         
    1412 #ifdef CPP_MPI
    14131395         call MPI_ISEND(Buffer(req%Pos),SizeBuffer,MPI_REAL_LMDZ,rank,a_request%tag+1000*omp_rank,     &
    14141396                         COMM_LMDZ,Req%MSG_Request,ierr)
    1415 #endif
    14161397         IF (.NOT.using_mpi) THEN
    14171398           PRINT *,'Erreur, echange MPI en mode sequentiel !!!'
     
    14531434!$OMP CRITICAL (MPI)
    14541435
    1455 #ifdef CPP_MPI
    14561436             call MPI_IRECV(Buffer(Req%Pos),SizeBuffer,MPI_REAL_LMDZ,rank,a_request%tag+1000*omp_rank,     &
    14571437                           COMM_LMDZ,Req%MSG_Request,ierr)
    1458 #endif             
     1438
    14591439             IF (.NOT.using_mpi) THEN
    14601440               PRINT *,'Erreur, echange MPI en mode sequentiel !!!'
     
    14781458   subroutine WaitRequest(a_Request)
    14791459   USE dimensions_mod
     1460   USE lmdz_mpi
    14801461   implicit none
    1481    
    1482 #ifdef CPP_MPI
    1483       include 'mpif.h'   
    1484 #endif
    14851462     
    14861463      type(request),target :: a_request
     
    14881465      type(Hallo),pointer :: PtrHallo
    14891466      integer, dimension(2*mpi_size) :: TabRequest
    1490 #ifdef CPP_MPI
    14911467      integer, dimension(MPI_STATUS_SIZE,2*mpi_size) :: TabStatus
    1492 #else
    1493       integer, dimension(1,2*mpi_size) :: TabStatus
    1494 #endif
    14951468      integer :: NbRequest
    14961469      integer :: i,rank,pos,ij,l,ierr
     
    15211494!        PRINT *,"Process de rang",mpi_rank,"Task : ",omp_rank,"--->",NbRequest,"en attente"
    15221495!        PRINT *,"No des requetes :",TabRequest(1:NbRequest)
    1523 #ifdef CPP_MPI
    15241496        call MPI_WAITALL(NbRequest,TabRequest,TabStatus,ierr)
    1525 #endif
    15261497!        PRINT *,"Process de rang",mpi_rank,"Task : ",omp_rank,"--->",NbRequest,"complete"
    15271498!        PRINT *,"-------------------------------------------------------------------"
     
    15711542     
    15721543   subroutine WaitSendRequest(a_Request)
     1544   USE lmdz_mpi
    15731545   USE dimensions_mod
    15741546   implicit none
    15751547   
    1576 #ifdef CPP_MPI
    1577       include 'mpif.h'   
    1578 #endif     
    15791548      type(request),target :: a_request
    15801549      type(request_SR),pointer :: Req
    15811550      type(Hallo),pointer :: PtrHallo
    15821551      integer, dimension(mpi_size) :: TabRequest
    1583 #ifdef CPP_MPI
    15841552      integer, dimension(MPI_STATUS_SIZE,mpi_size) :: TabStatus
    1585 #else
    1586       integer, dimension(1,mpi_size) :: TabStatus
    1587 #endif
    15881553      integer :: NbRequest
    15891554      integer :: i,rank,pos,ij,l,ierr
     
    16061571!        PRINT *,"Process de rang",mpi_rank,"Task : ",omp_rank,"--->",NbRequest,"en attente"
    16071572!        PRINT *,"No des requetes :",TabRequest(1:NbRequest)
    1608 #ifdef CPP_MPI
    1609         call MPI_WAITALL(NbRequest,TabRequest,TabStatus,ierr)
    1610 #endif
     1573         call MPI_WAITALL(NbRequest,TabRequest,TabStatus,ierr)
    16111574!        PRINT *,"Process de rang",mpi_rank,"Task : ",omp_rank,"--->",NbRequest,"complete"
    16121575!        PRINT *,"-------------------------------------------------------------------"
     
    16281591   subroutine WaitRecvRequest(a_Request)
    16291592   USE dimensions_mod
     1593   USE lmdz_mpi
    16301594   implicit none
    1631    
    1632 #ifdef CPP_MPI
    1633       include 'mpif.h'   
    1634 #endif
    1635      
    16361595      type(request),target :: a_request
    16371596      type(request_SR),pointer :: Req
    16381597      type(Hallo),pointer :: PtrHallo
    16391598      integer, dimension(mpi_size) :: TabRequest
    1640 #ifdef CPP_MPI
    16411599      integer, dimension(MPI_STATUS_SIZE,mpi_size) :: TabStatus
    1642 #else
    1643       integer, dimension(1,mpi_size) :: TabStatus
    1644 #endif
    16451600      integer :: NbRequest
    16461601      integer :: i,rank,pos,ij,l,ierr
     
    16641619!        PRINT *,"Process de rang",mpi_rank,"Task : ",omp_rank,"--->",NbRequest,"en attente"
    16651620!        PRINT *,"No des requetes :",TabRequest(1:NbRequest)
    1666 #ifdef CPP_MPI
    1667         call MPI_WAITALL(NbRequest,TabRequest,TabStatus,ierr)
    1668 #endif
     1621         call MPI_WAITALL(NbRequest,TabRequest,TabStatus,ierr)
    16691622!        PRINT *,"Process de rang",mpi_rank,"Task : ",omp_rank,"--->",NbRequest,"complete"
    16701623!        PRINT *,"-------------------------------------------------------------------"
  • LMDZ6/trunk/libf/dyn3dmem/parallel_lmdz.F90

    r4593 r4600  
    44  MODULE parallel_lmdz
    55  USE mod_const_mpi
     6  USE lmdz_mpi, ONLY : using_mpi
    67#ifdef CPP_IOIPSL
    78      use IOIPSL
     
    1213    INTEGER,PARAMETER :: halo_max=3
    1314   
    14     LOGICAL,SAVE :: using_mpi ! .true. if using MPI
    1515    LOGICAL,SAVE :: using_omp ! .true. if using OpenMP
    1616    LOGICAL,SAVE :: is_master ! .true. if the core is both MPI & OpenMP master
     
    8888    subroutine init_parallel
    8989    USE vampir
     90    USE lmdz_mpi
    9091    implicit none
    91 #ifdef CPP_MPI
    92       include 'mpif.h'
    93 #endif
    9492      INCLUDE "dimensions.h"
    9593      INCLUDE "paramet.h"
     
    111109#endif 
    112110
    113 #ifdef CPP_MPI
    114        using_mpi=.TRUE.
    115 #else
    116        using_mpi=.FALSE.
    117 #endif
    118      
    119 
    120111#ifdef CPP_OMP
    121112       using_OMP=.TRUE.
     
    127118     
    128119      IF (using_mpi) THEN
    129 #ifdef CPP_MPI
    130120        call MPI_COMM_SIZE(COMM_LMDZ,mpi_size,ierr)
    131121        call MPI_COMM_RANK(COMM_LMDZ,mpi_rank,ierr)
    132 #endif
    133122      ELSE
    134123        mpi_size=1
     
    161150         write(lunout,*)" ---> diminuez le nombre de CPU ou augmentez la taille en lattitude"
    162151         
    163 #ifdef CPP_MPI
    164152          IF (using_mpi) call MPI_ABORT(COMM_LMDZ,-1, ierr)
    165 #endif         
     153
    166154        endif
    167155       
     
    395383   
    396384    subroutine Finalize_parallel
     385    USE lmdz_mpi
    397386#ifdef CPP_XIOS
    398387    ! ug Pour les sorties XIOS
     
    418407      include "dimensions.h"
    419408      include "paramet.h"
    420 #ifdef CPP_MPI
    421       include 'mpif.h'
    422 #endif     
    423409
    424410      integer :: ierr
     
    446432      CALL wxios_close()
    447433#endif
    448 #ifdef CPP_MPI
    449          IF (using_mpi) call MPI_FINALIZE(ierr)
    450 #endif
     434      IF (using_mpi) call MPI_FINALIZE(ierr)
    451435      end if
    452436     
     
    502486   
    503487    SUBROUTINE barrier
     488    USE lmdz_mpi
    504489    IMPLICIT NONE
    505 #ifdef CPP_MPI
    506     INCLUDE 'mpif.h'
    507 #endif
    508490    INTEGER :: ierr
    509491   
    510492!$OMP CRITICAL (MPI)     
    511 #ifdef CPP_MPI
    512493      IF (using_mpi) CALL MPI_Barrier(COMM_LMDZ,ierr)
    513 #endif
    514494!$OMP END CRITICAL (MPI)
    515495   
     
    518498     
    519499    subroutine exchange_hallo(Field,ij,ll,up,down)
     500    USE lmdz_mpi
    520501    USE Vampir
    521502    implicit none
    522503      INCLUDE "dimensions.h"
    523504      INCLUDE "paramet.h"   
    524 #ifdef CPP_MPI
    525     include 'mpif.h'
    526 #endif   
    527505      INTEGER :: ij,ll
    528506      REAL, dimension(ij,ll) :: Field
     
    533511      LOGICAL :: RecvUp,RecvDown
    534512      INTEGER, DIMENSION(4) :: Request
    535 #ifdef CPP_MPI
    536513      INTEGER, DIMENSION(MPI_STATUS_SIZE,4) :: Status
    537 #else
    538       INTEGER, DIMENSION(1,4) :: Status
    539 #endif
     514
    540515      INTEGER :: NbRequest
    541516      REAL, dimension(:),allocatable :: Buffer_Send_up,Buffer_Send_down
     
    582557          call PACK_Data(Field(ij_begin,1),ij,ll,down,Buffer_Send_up)
    583558!$OMP CRITICAL (MPI)
    584 #ifdef CPP_MPI
    585559          call MPI_ISEND(Buffer_send_up,Buffer_Size,MPI_REAL8,MPI_Rank-1,1,     &
    586560                          COMM_LMDZ,Request(NbRequest),ierr)
    587 #endif
    588561!$OMP END CRITICAL (MPI)
    589562        ENDIF
     
    597570       
    598571!$OMP CRITICAL (MPI)
    599 #ifdef CPP_MPI
    600572          call MPI_ISEND(Buffer_send_down,Buffer_Size,MPI_REAL8,MPI_Rank+1,1,     &
    601573                          COMM_LMDZ,Request(NbRequest),ierr)
    602 #endif
    603574!$OMP END CRITICAL (MPI)
    604575        ENDIF
     
    611582             
    612583!$OMP CRITICAL (MPI)
    613 #ifdef CPP_MPI
    614584          call MPI_IRECV(Buffer_recv_up,Buffer_size,MPI_REAL8,MPI_Rank-1,1,  &
    615585                          COMM_LMDZ,Request(NbRequest),ierr)
    616 #endif
    617586!$OMP END CRITICAL (MPI)
    618587     
     
    626595       
    627596!$OMP CRITICAL (MPI)
    628 #ifdef CPP_MPI
    629597          call MPI_IRECV(Buffer_recv_down,Buffer_size,MPI_REAL8,MPI_Rank+1,1,     &
    630598                          COMM_LMDZ,Request(NbRequest),ierr)
    631 #endif
    632599!$OMP END CRITICAL (MPI)
    633600       
    634601        ENDIF
    635602 
    636 #ifdef CPP_MPI
    637603        if (NbRequest > 0) call MPI_WAITALL(NbRequest,Request,Status,ierr)
    638 #endif
    639604        IF (RecvUp)  call Unpack_Data(Field(ij_begin-up*iip1,1),ij,ll,up,Buffer_Recv_up)
    640605        IF (RecvDown) call Unpack_Data(Field(ij_end+1,1),ij,ll,down,Buffer_Recv_down) 
     
    651616
    652617    subroutine Gather_Field(Field,ij,ll,rank)
     618    USE lmdz_mpi
    653619    implicit none
    654620    INCLUDE "dimensions.h"
    655621    INCLUDE "paramet.h"
    656622    INCLUDE "iniprint.h"
    657 #ifdef CPP_MPI
    658     include 'mpif.h'
    659 #endif   
    660623      INTEGER :: ij,ll,rank
    661624      REAL, dimension(ij,ll) :: Field
     
    709672 
    710673!$OMP CRITICAL (MPI)
    711 #ifdef CPP_MPI
    712674        call MPI_GATHERV(Buffer_send,(min(ij_end,ij)-ij_begin+1)*ll,MPI_REAL8,   &
    713675                          Buffer_Recv,Recv_count,displ,MPI_REAL8,rank,COMM_LMDZ,ierr)
    714 #endif
    715676!$OMP END CRITICAL (MPI)
    716677     
     
    735696
    736697    subroutine AllGather_Field(Field,ij,ll)
     698    USE lmdz_mpi
    737699    implicit none
    738700    INCLUDE "dimensions.h"
    739701    INCLUDE "paramet.h"   
    740 #ifdef CPP_MPI
    741     include 'mpif.h'
    742 #endif   
    743702      INTEGER :: ij,ll
    744703      REAL, dimension(ij,ll) :: Field
     
    748707        call Gather_Field(Field,ij,ll,0)
    749708!$OMP CRITICAL (MPI)
    750 #ifdef CPP_MPI
    751709      call MPI_BCAST(Field,ij*ll,MPI_REAL8,0,COMM_LMDZ,ierr)
    752 #endif
    753710!$OMP END CRITICAL (MPI)
    754711      ENDIF
     
    757714   
    758715   subroutine Broadcast_Field(Field,ij,ll,rank)
     716    USE lmdz_mpi
    759717    implicit none
    760718    INCLUDE "dimensions.h"
    761719    INCLUDE "paramet.h"   
    762 #ifdef CPP_MPI
    763     include 'mpif.h'
    764 #endif   
    765720      INTEGER :: ij,ll
    766721      REAL, dimension(ij,ll) :: Field
     
    771726     
    772727!$OMP CRITICAL (MPI)
    773 #ifdef CPP_MPI
    774728      call MPI_BCAST(Field,ij*ll,MPI_REAL8,rank,COMM_LMDZ,ierr)
    775 #endif
    776729!$OMP END CRITICAL (MPI)
    777730     
     
    781734   
    782735!  Subroutine verif_hallo(Field,ij,ll,up,down)
     736!    USE lmdz_mpi
    783737!    implicit none
    784738!      INCLUDE "dimensions.h"
    785739!      INCLUDE "paramet.h"   
    786 !    include 'mpif.h'
    787740!   
    788741!      INTEGER :: ij,ll
  • LMDZ6/trunk/libf/dyn3dmem/times.F90

    r4593 r4600  
    137137  subroutine allgather_timer
    138138    USE parallel_lmdz
    139     implicit none
    140 #ifdef CPP_MPI   
    141     include 'mpif.h'
    142 #endif
     139    USE lmdz_mpi
     140    implicit none
     141
    143142    integer :: ierr
    144143    integer :: data_size
     
    155154   
    156155      tmp_table(:,:)=timer_table(:,:,mpi_rank)
    157 #ifdef CPP_MPI
    158156      call mpi_allgather(tmp_table(1,1),data_size,MPI_REAL_LMDZ,timer_table(1,1,0),data_size,MPI_REAL_LMDZ,COMM_LMDZ,ierr)
    159 #endif
    160157      tmp_table(:,:)=timer_table_sqr(:,:,mpi_rank)
    161 #ifdef CPP_MPI
    162158      call mpi_allgather(tmp_table(1,1),data_size,MPI_REAL_LMDZ,timer_table_sqr(1,1,0),data_size,MPI_REAL_LMDZ,COMM_LMDZ,ierr)
    163 #endif   
    164159      deallocate(tmp_table)
    165160   
     
    172167  subroutine allgather_timer_average
    173168    USE parallel_lmdz
    174     implicit none
    175 #ifdef CPP_MPI
    176     include 'mpif.h'
    177 #endif
     169    USE lmdz_mpi
     170    implicit none
    178171    integer :: ierr
    179172    integer :: data_size
     
    192185
    193186      tmp_table(:,:)=timer_average(:,:,mpi_rank)
    194 #ifdef CPP_MPI
    195187      call mpi_allgather(tmp_table(1,1),data_size,MPI_REAL_LMDZ,timer_average(1,1,0),data_size,MPI_REAL_LMDZ,COMM_LMDZ,ierr)
    196 #endif
    197188      tmp_table(:,:)=timer_delta(:,:,mpi_rank)
    198 #ifdef CPP_MPI
    199189      call mpi_allgather(tmp_table(1,1),data_size,MPI_REAL_LMDZ,timer_delta(1,1,0),data_size,MPI_REAL_LMDZ,COMM_LMDZ,ierr)
    200 #endif
    201190      tmp_iter(:,:)=timer_iteration(:,:,mpi_rank)
    202 #ifdef CPP_MPI
    203191      call mpi_allgather(tmp_iter(1,1),data_size,MPI_INTEGER,timer_iteration(1,1,0),data_size,MPI_INTEGER,COMM_LMDZ,ierr)
    204 #endif   
    205192      deallocate(tmp_table)
    206193   
  • LMDZ6/trunk/libf/dynphy_lonlat/calfis_loc.F

    r4464 r4600  
    3838      USE IOPHY
    3939#endif
     40      USE lmdz_mpi
     41
    4042#ifdef CPP_PARA
    4143      USE parallel_lmdz,ONLY:omp_chunk,using_mpi,jjb_u,jje_u,jjb_v,jje_v
     
    117119      include "comgeom2.h"
    118120      include "iniprint.h"
    119 #ifdef CPP_MPI
    120       include 'mpif.h'
    121 #endif
    122121c    Arguments :
    123122c    -----------
     
    233232      REAL,SAVE,dimension(1:iim,1:llm):: du_send,du_recv,dv_send,dv_recv
    234233      INTEGER :: ierr
    235 #ifdef CPP_MPI
    236234      INTEGER,dimension(MPI_STATUS_SIZE,4) :: Status
    237 #else
    238       INTEGER,dimension(1,4) :: Status
    239 #endif
    240235      INTEGER, dimension(4) :: Req
    241236      REAL,ALLOCATABLE,SAVE:: zdufi2(:,:),zdvfi2(:,:)
     
    873868
    874869c$OMP BARRIER
    875 #ifdef CPP_MPI
     870
    876871c$OMP MASTER
    877872!$OMP CRITICAL (MPI)
     
    882877!$OMP END CRITICAL (MPI)
    883878c$OMP END MASTER
    884 #endif
     879
    885880c$OMP BARRIER
    886881     
     
    889884      if (MPI_rank<MPI_Size-1) then
    890885c$OMP BARRIER
    891 #ifdef CPP_MPI
     886
    892887c$OMP MASTER     
    893888!$OMP CRITICAL (MPI)
     
    898893!$OMP END CRITICAL (MPI)
    899894c$OMP END MASTER
    900 #endif
     895
    901896      endif
    902897
     
    904899
    905900
    906 #ifdef CPP_MPI
    907901c$OMP MASTER   
    908902!$OMP CRITICAL (MPI)
     
    916910!$OMP END CRITICAL (MPI)
    917911c$OMP END MASTER
    918 #endif
    919912
    920913c$OMP BARRIER     
  • LMDZ6/trunk/libf/dynphy_lonlat/phylmd/ce0l.F90

    r4389 r4600  
    4646  USE comvert_mod, ONLY: pa, preff, pressure_exner
    4747  USE temps_mod, ONLY: calend, day_ini, dt
     48  USE lmdz_mpi
    4849
    4950  IMPLICIT NONE
     
    5556  include "comgeom2.h"
    5657  include "iniprint.h"
    57 #ifdef CPP_MPI
    58   include 'mpif.h'
    59 #endif
    6058 
    6159  REAL               :: masque(iip1,jjp1)             !--- CONTINENTAL MASK
     
    255253  CALL xios_finalize
    256254#endif
    257 #ifdef CPP_MPI
    258255  IF (using_mpi) call MPI_FINALIZE(ierr)
    259 #endif
    260256#endif
    261257
  • LMDZ6/trunk/libf/phy_common/abort_physic.F90

    r4460 r4600  
    3838      if (ierr .eq. 0) then
    3939        write(lunout,*) 'Everything is cool'
    40 #ifdef CPP_MPI
    41         !$OMP CRITICAL (MPI_ABORT_PHYSIC)
    42         call MPI_ABORT(COMM_LMDZ_PHY, 0, ierror_mpi)
    43         !$OMP END CRITICAL (MPI_ABORT_PHYSIC)
    44 #else
    45         stop 0
    46 #endif         
     40        if (using_mpi) then
     41          !$OMP CRITICAL (MPI_ABORT_PHYSIC)
     42          call MPI_ABORT(COMM_LMDZ_PHY, 0, ierror_mpi)
     43          !$OMP END CRITICAL (MPI_ABORT_PHYSIC)
     44        else
     45          stop 0
     46        endif         
    4747      else
    4848        write(lunout,*) 'Houston, we have a problem, ierr = ', ierr
    49 #ifdef CPP_MPI
    50 !$OMP CRITICAL (MPI_ABORT_PHYSIC)
    51         call MPI_ABORT(COMM_LMDZ_PHY, 1, ierror_mpi)
    52 !$OMP END CRITICAL (MPI_ABORT_PHYSIC)
    53 #else
    54         stop 1
    55 #endif         
     49        if (using_mpi) then
     50          !$OMP CRITICAL (MPI_ABORT_PHYSIC)
     51          call MPI_ABORT(COMM_LMDZ_PHY, 1, ierror_mpi)
     52          !$OMP END CRITICAL (MPI_ABORT_PHYSIC)
     53        else
     54          stop 1
     55        endif         
    5656      endif
    5757      END
  • LMDZ6/trunk/libf/phy_common/mod_phys_lmdz_mpi_data.F90

    r4127 r4600  
    33!
    44MODULE mod_phys_lmdz_mpi_data
    5  
     5  USE lmdz_mpi
     6
    67  INTEGER,SAVE :: ii_begin
    78  INTEGER,SAVE :: ii_end
     
    4748 
    4849  SUBROUTINE init_phys_lmdz_mpi_data(nbp, nbp_lon, nbp_lat, nbp_lev, grid_type, nvertex, communicator)
    49 
     50  USE lmdz_mpi
    5051  IMPLICIT NONE
    51 #ifdef CPP_MPI
    52     INCLUDE 'mpif.h'
    53 #endif
    5452    INTEGER,INTENT(IN) :: nbp
    5553    INTEGER,INTENT(IN) :: nbp_lon
     
    6563    INTEGER :: i
    6664   
    67 #ifdef CPP_MPI
    68     is_using_mpi=.TRUE.
    69 #else
    70     is_using_mpi=.FALSE.
    71 #endif
    72    
    7365    if ((nbp_lon.eq.1).and.(nbp_lat.eq.1)) then ! running 1D column model
    7466       klon_glo=1
     
    8274
    8375    IF (is_using_mpi) THEN   
    84 #ifdef CPP_MPI
    8576      MPI_REAL_LMDZ=MPI_REAL8
    8677      CALL MPI_COMM_SIZE(COMM_LMDZ_PHY,mpi_size,ierr)   
    8778      CALL MPI_COMM_RANK(COMM_LMDZ_PHY,mpi_rank,ierr)
    88 #endif
    8979    ELSE
    9080      mpi_size=1
     
    9585
    9686    IF (is_using_mpi) THEN   
    97 #ifdef CPP_MPI
    98     CALL MPI_ALLGATHER(nbp,1,MPI_INTEGER,distrib,1,MPI_INTEGER,COMM_LMDZ_PHY,ierr)
    99 #endif
     87      CALL MPI_ALLGATHER(nbp,1,MPI_INTEGER,distrib,1,MPI_INTEGER,COMM_LMDZ_PHY,ierr)
    10088    ELSE
    10189     distrib(:)=nbp
  • LMDZ6/trunk/libf/phy_common/mod_phys_lmdz_mpi_transfert.F90

    r3465 r4600  
    13671367  SUBROUTINE bcast_mpi_cgen(var,nb)
    13681368    USE mod_phys_lmdz_mpi_data
     1369    USE lmdz_mpi
    13691370    IMPLICIT NONE
    13701371   
     
    13721373    INTEGER,INTENT(IN) :: nb
    13731374   
    1374 #ifdef CPP_MPI
    1375     INCLUDE 'mpif.h'
    1376 #endif
    13771375    INTEGER :: ierr
    13781376
    13791377    IF (.not.is_using_mpi) RETURN
    13801378   
    1381 #ifdef CPP_MPI
    13821379    CALL MPI_BCAST(Var,nb,MPI_CHARACTER,mpi_master,COMM_LMDZ_PHY,ierr)
    1383 #endif
    13841380       
    13851381  END SUBROUTINE bcast_mpi_cgen
     
    13891385  SUBROUTINE bcast_mpi_igen(var,nb)
    13901386    USE mod_phys_lmdz_mpi_data
     1387    USE lmdz_mpi
    13911388    IMPLICIT NONE
    13921389   
     
    13941391    INTEGER,DIMENSION(nb),INTENT(INOUT) :: Var
    13951392   
    1396 #ifdef CPP_MPI
    1397     INCLUDE 'mpif.h'
    1398 #endif
    13991393    INTEGER :: ierr
    14001394
    14011395    IF (.not.is_using_mpi) RETURN
    14021396
    1403 #ifdef CPP_MPI
    14041397    CALL MPI_BCAST(Var,nb,MPI_INTEGER,mpi_master,COMM_LMDZ_PHY,ierr)
    1405 #endif
    14061398       
    14071399  END SUBROUTINE bcast_mpi_igen
     
    14121404  SUBROUTINE bcast_mpi_rgen(var,nb)
    14131405    USE mod_phys_lmdz_mpi_data
     1406    USE lmdz_mpi
    14141407    IMPLICIT NONE
    14151408   
     
    14171410    REAL,DIMENSION(nb),INTENT(INOUT) :: Var
    14181411   
    1419 #ifdef CPP_MPI
    1420     INCLUDE 'mpif.h'
    1421 #endif
    14221412    INTEGER :: ierr
    14231413
    14241414    IF (.not.is_using_mpi) RETURN
    14251415
    1426 #ifdef CPP_MPI
    14271416    CALL MPI_BCAST(Var,nb,MPI_REAL_LMDZ,mpi_master,COMM_LMDZ_PHY,ierr)
    1428 #endif
    14291417   
    14301418  END SUBROUTINE bcast_mpi_rgen
     
    14351423  SUBROUTINE bcast_mpi_lgen(var,nb)
    14361424    USE mod_phys_lmdz_mpi_data
     1425    USE lmdz_mpi
    14371426    IMPLICIT NONE
    14381427   
     
    14401429    LOGICAL,DIMENSION(nb),INTENT(INOUT) :: Var
    14411430   
    1442 #ifdef CPP_MPI
    1443     INCLUDE 'mpif.h'
    1444 #endif
    14451431    INTEGER :: ierr
    14461432
    14471433    IF (.not.is_using_mpi) RETURN
    14481434
    1449 #ifdef CPP_MPI
    14501435    CALL MPI_BCAST(Var,nb,MPI_LOGICAL,mpi_master,COMM_LMDZ_PHY,ierr)
    1451 #endif
    14521436
    14531437  END SUBROUTINE bcast_mpi_lgen
     
    14581442    USE mod_phys_lmdz_mpi_data
    14591443    USE mod_grid_phy_lmdz
     1444    USE lmdz_mpi
    14601445    IMPLICIT NONE
    14611446 
     
    14641449    INTEGER,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut
    14651450 
    1466 #ifdef CPP_MPI
    1467     INCLUDE 'mpif.h'
    1468 #endif
    14691451    INTEGER,DIMENSION(0:mpi_size-1) :: displs
    14701452    INTEGER,DIMENSION(0:mpi_size-1) :: counts
     
    14931475    ENDIF
    14941476     
    1495 #ifdef CPP_MPI
    14961477    CALL MPI_SCATTERV(VarTmp,counts,displs,MPI_INTEGER,VarOut,klon_mpi*dimsize,   &
    14971478                      MPI_INTEGER,mpi_master, COMM_LMDZ_PHY,ierr)
    1498 #endif
    14991479
    15001480  END SUBROUTINE scatter_mpi_igen
     
    15031483    USE mod_phys_lmdz_mpi_data
    15041484    USE mod_grid_phy_lmdz
     1485    USE lmdz_mpi
    15051486    IMPLICIT NONE
    15061487 
     
    15081489    REAL,INTENT(IN),DIMENSION(klon_glo,dimsize) :: VarIn
    15091490    REAL,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut
    1510  
    1511 #ifdef CPP_MPI
    1512     INCLUDE 'mpif.h'
    1513 #endif
    15141491
    15151492    INTEGER,DIMENSION(0:mpi_size-1) :: displs
     
    15371514    ENDIF
    15381515     
    1539 #ifdef CPP_MPI
    15401516    CALL MPI_SCATTERV(VarTmp,counts,displs,MPI_REAL_LMDZ,VarOut,klon_mpi*dimsize,   &
    15411517                      MPI_REAL_LMDZ,mpi_master, COMM_LMDZ_PHY,ierr)
    15421518
    1543 #endif
    1544 
    15451519  END SUBROUTINE scatter_mpi_rgen
    15461520
     
    15491523    USE mod_phys_lmdz_mpi_data
    15501524    USE mod_grid_phy_lmdz
     1525    USE lmdz_mpi
    15511526    IMPLICIT NONE
    15521527 
     
    15551530    LOGICAL,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut
    15561531 
    1557 #ifdef CPP_MPI
    1558     INCLUDE 'mpif.h'
    1559 #endif
    15601532
    15611533    INTEGER,DIMENSION(0:mpi_size-1) :: displs
     
    15831555    ENDIF
    15841556     
    1585 #ifdef CPP_MPI
    15861557    CALL MPI_SCATTERV(VarTmp,counts,displs,MPI_LOGICAL,VarOut,klon_mpi*dimsize,   &
    15871558                      MPI_LOGICAL,mpi_master, COMM_LMDZ_PHY,ierr)
    1588 #endif
    15891559
    15901560  END SUBROUTINE scatter_mpi_lgen 
     
    15961566    USE mod_phys_lmdz_mpi_data
    15971567    USE mod_grid_phy_lmdz
    1598     IMPLICIT NONE
    1599  
    1600 #ifdef CPP_MPI
    1601     INCLUDE 'mpif.h'
    1602 #endif
    1603    
     1568    USE lmdz_mpi
     1569    IMPLICIT NONE
     1570 
    16041571    INTEGER,INTENT(IN) :: dimsize
    16051572    INTEGER,INTENT(IN),DIMENSION(klon_mpi,dimsize) :: VarIn
     
    16281595    ENDIF
    16291596   
    1630 #ifdef CPP_MPI
    16311597    CALL MPI_GATHERV(VarIn,klon_mpi*dimsize,MPI_INTEGER,VarTmp,counts,displs,   &
    16321598                     MPI_INTEGER,mpi_master, COMM_LMDZ_PHY,ierr)
    1633 #endif
    16341599
    16351600                         
     
    16501615    USE mod_phys_lmdz_mpi_data
    16511616    USE mod_grid_phy_lmdz
    1652     IMPLICIT NONE
    1653  
    1654 #ifdef CPP_MPI
    1655     INCLUDE 'mpif.h'
    1656 #endif
    1657    
     1617    USE lmdz_mpi
     1618    IMPLICIT NONE
     1619 
    16581620    INTEGER,INTENT(IN) :: dimsize
    16591621    REAL,INTENT(IN),DIMENSION(klon_mpi,dimsize) :: VarIn
     
    16811643    ENDIF
    16821644
    1683 #ifdef CPP_MPI
    16841645    CALL MPI_GATHERV(VarIn,klon_mpi*dimsize,MPI_REAL_LMDZ,VarTmp,counts,displs,   &
    16851646                      MPI_REAL_LMDZ,mpi_master, COMM_LMDZ_PHY,ierr)
    1686 #endif
    16871647                         
    16881648    IF (is_mpi_root) THEN
     
    17021662    USE mod_phys_lmdz_mpi_data
    17031663    USE mod_grid_phy_lmdz
     1664    USE lmdz_mpi
    17041665    IMPLICIT NONE
    17051666 
     
    17071668    LOGICAL,INTENT(IN),DIMENSION(klon_mpi,dimsize) :: VarIn
    17081669    LOGICAL,INTENT(OUT),DIMENSION(klon_glo,dimsize) :: VarOut
    1709  
    1710 #ifdef CPP_MPI
    1711     INCLUDE 'mpif.h'
    1712 #endif
    17131670
    17141671    INTEGER,DIMENSION(0:mpi_size-1) :: displs
     
    17341691   
    17351692
    1736 #ifdef CPP_MPI
    17371693    CALL MPI_GATHERV(VarIn,klon_mpi*dimsize,MPI_LOGICAL,VarTmp,counts,displs,   &
    17381694                      MPI_LOGICAL,mpi_master, COMM_LMDZ_PHY,ierr)
    1739 #endif
    17401695                         
    17411696    IF (is_mpi_root) THEN
     
    17571712    USE mod_phys_lmdz_mpi_data
    17581713    USE mod_grid_phy_lmdz
    1759     IMPLICIT NONE
    1760    
    1761 #ifdef CPP_MPI
    1762     INCLUDE 'mpif.h'
    1763 #endif
     1714    USE lmdz_mpi
     1715    IMPLICIT NONE
    17641716   
    17651717    INTEGER,INTENT(IN) :: nb
     
    17741726
    17751727
    1776 #ifdef CPP_MPI
    17771728    CALL MPI_REDUCE(VarIn,VarOut,nb,MPI_INTEGER,MPI_SUM,mpi_master,COMM_LMDZ_PHY,ierr)
    1778 #endif
    17791729           
    17801730  END SUBROUTINE reduce_sum_mpi_igen
     
    17831733    USE mod_phys_lmdz_mpi_data
    17841734    USE mod_grid_phy_lmdz
    1785 
    1786     IMPLICIT NONE
    1787 
    1788 #ifdef CPP_MPI
    1789     INCLUDE 'mpif.h'
    1790 #endif
    1791    
     1735    USE lmdz_mpi
     1736    IMPLICIT NONE
     1737
    17921738    INTEGER,INTENT(IN) :: nb
    17931739    REAL,DIMENSION(nb),INTENT(IN) :: VarIn
     
    18001746    ENDIF
    18011747   
    1802 #ifdef CPP_MPI
    18031748    CALL MPI_REDUCE(VarIn,VarOut,nb,MPI_REAL_LMDZ,MPI_SUM,mpi_master,COMM_LMDZ_PHY,ierr)
    1804 #endif
    18051749       
    18061750  END SUBROUTINE reduce_sum_mpi_rgen
     
    18111755    USE mod_phys_lmdz_mpi_data
    18121756    USE mod_grid_phy_lmdz
    1813     IMPLICIT NONE
    1814    
    1815 #ifdef CPP_MPI
    1816     INCLUDE 'mpif.h'
    1817 #endif
    1818    
     1757    USE lmdz_mpi
     1758    IMPLICIT NONE
     1759   
    18191760    INTEGER,INTENT(IN) :: nb
    18201761    INTEGER,DIMENSION(nb),INTENT(IN) :: VarIn
     
    18281769
    18291770
    1830 #ifdef CPP_MPI
    18311771    CALL MPI_REDUCE(VarIn,VarOut,nb,MPI_INTEGER,MPI_MIN,mpi_master,COMM_LMDZ_PHY,ierr)
    1832 #endif
    18331772           
    18341773  END SUBROUTINE reduce_min_mpi_igen
     
    18371776    USE mod_phys_lmdz_mpi_data
    18381777    USE mod_grid_phy_lmdz
    1839 
    1840     IMPLICIT NONE
    1841 
    1842 #ifdef CPP_MPI
    1843     INCLUDE 'mpif.h'
    1844 #endif
    1845    
     1778    USE lmdz_mpi
     1779
     1780    IMPLICIT NONE
     1781
    18461782    INTEGER,INTENT(IN) :: nb
    18471783    REAL,DIMENSION(nb),INTENT(IN) :: VarIn
     
    18541790    ENDIF
    18551791   
    1856 #ifdef CPP_MPI
    18571792    CALL MPI_REDUCE(VarIn,VarOut,nb,MPI_REAL_LMDZ,MPI_MIN,mpi_master,COMM_LMDZ_PHY,ierr)
    1858 #endif
    18591793       
    18601794  END SUBROUTINE reduce_min_mpi_rgen
  • LMDZ6/trunk/libf/phylmd/cpl_mod.F90

    r4370 r4600  
    12491249    USE mod_grid_phy_lmdz, ONLY : nbp_lon, nbp_lat
    12501250    USE time_phylmdz_mod, ONLY: start_time, itau_phy
    1251     use config_ocean_skin_m, only: activate_ocean_skin
     1251    USE config_ocean_skin_m, only: activate_ocean_skin
     1252    USE lmdz_mpi
     1253
    12521254! Some includes
    12531255!   
     
    12831285    REAL  :: calving_glo(nb_zone_calving)
    12841286   
    1285 #ifdef CPP_MPI
    1286     INCLUDE 'mpif.h'
    12871287    INTEGER, DIMENSION(MPI_STATUS_SIZE)                  :: status
    1288 #endif
    12891288
    12901289! End definitions
     
    13571356        IF (is_parallel) THEN
    13581357           IF (.NOT. is_north_pole_dyn) THEN
    1359 #ifdef CPP_MPI
    13601358              CALL MPI_RECV(Up,1,MPI_REAL_LMDZ,mpi_rank-1,1234,COMM_LMDZ_PHY,status,error)
    13611359              CALL MPI_SEND(tmp_calv(1,1),1,MPI_REAL_LMDZ,mpi_rank-1,1234,COMM_LMDZ_PHY,error)
    1362 #endif
    13631360           ENDIF
    13641361       
    13651362           IF (.NOT. is_south_pole_dyn) THEN
    1366 #ifdef CPP_MPI
    13671363              CALL MPI_SEND(tmp_calv(1,jj_nb),1,MPI_REAL_LMDZ,mpi_rank+1,1234,COMM_LMDZ_PHY,error)
    13681364              CALL MPI_RECV(down,1,MPI_REAL_LMDZ,mpi_rank+1,1234,COMM_LMDZ_PHY,status,error)
    1369 #endif
    13701365           ENDIF
    13711366         
     
    13921387         ENDDO
    13931388         
    1394 #ifdef CPP_MPI
    13951389         CALL MPI_ALLREDUCE(calving, calving_glo, nb_zone_calving, MPI_REAL_LMDZ, MPI_SUM, COMM_LMDZ_PHY, error)
    1396 #endif
    13971390         
    13981391         tab_flds(:,:,ids_calvin) = 0
  • LMDZ6/trunk/libf/phylmd/create_etat0_limit_unstruct.F90

    r4460 r4600  
    8484                CALL xios_context_finalize()
    8585                CALL xios_finalize()
    86 #ifdef CPP_MPI   
    8786                CALL MPI_Finalize(ierr)
    88 #endif
    8987                abort_message='create_etat0_limit_unstruct, Initial state file are created, all is fine'
    9088                CALL abort_physic(modname,abort_message,0)
     
    102100                CALL xios_context_finalize()
    103101                CALL xios_finalize()
    104 #ifdef CPP_MPI
    105102                CALL MPI_Finalize(ierr)
    106 #endif
    107103              ENDIF
    108104!$OMP BARRIER
  • LMDZ6/trunk/libf/phylmd/mod_surf_para.F90

    r2351 r4600  
    5050  SUBROUTINE Init_surf_para(knon)
    5151  USE mod_phys_lmdz_para
    52 #ifdef CPP_MPI
    53   INCLUDE 'mpif.h'
    54 #endif
     52  USE lmdz_mpi
     53
    5554    INTEGER :: knon
    5655    INTEGER :: i,ierr
     
    8887     
    8988      IF (is_using_mpi) THEN
    90 #ifdef CPP_MPI
    9189        CALL MPI_ALLGather(knon_mpi,1,MPI_INTEGER,knon_mpi_para,1,MPI_INTEGER,COMM_LMDZ_PHY,ierr)
    9290        CALL MPI_ALLGather(knon_omp_para,omp_size,MPI_INTEGER,knon_glo_para,omp_size,MPI_INTEGER,COMM_LMDZ_PHY,ierr)
    93 #endif
    9491      ELSE
    9592        knon_mpi_para(:)=knon_mpi
     
    169166  SUBROUTINE gather_surf_mpi_i(FieldIn,FieldOut)
    170167  USE mod_phys_lmdz_para
    171 #ifdef CPP_MPI
    172   INCLUDE 'mpif.h'
    173 #endif
     168  USE lmdz_mpi
     169
    174170    INTEGER :: FieldIn(:)
    175171    INTEGER :: FieldOut(:)
     
    177173   
    178174    IF (is_using_mpi) THEN
    179 #ifdef CPP_MPI
    180175      CALL MPI_Gatherv(FieldIn,knon_mpi,MPI_INTEGER,                                &
    181176                       FieldOut,knon_mpi_para,knon_mpi_begin_para(:)-1,MPI_INTEGER, &
    182177                       mpi_master,COMM_LMDZ_PHY,ierr)
    183 #endif
    184178    ELSE
    185179      FieldOut(:)=FieldIn(:)
     
    224218  SUBROUTINE gather_surf_mpi_r(FieldIn,FieldOut)
    225219  USE mod_phys_lmdz_para
    226 #ifdef CPP_MPI
    227   INCLUDE 'mpif.h'
    228 #endif
     220  USE lmdz_mpi
     221
    229222    REAL :: FieldIn(:)
    230223    REAL :: FieldOut(:)
     
    232225   
    233226    IF (is_using_mpi) THEN
    234 #ifdef CPP_MPI
    235227      CALL MPI_Gatherv(FieldIn,knon_mpi,MPI_REAL_LMDZ,                                 &
    236228                       FieldOut,knon_mpi_para,knon_mpi_begin_para(:)-1,MPI_REAL_LMDZ,  &
    237229                       mpi_master,COMM_LMDZ_PHY,ierr)           
    238 #endif
    239230    ELSE
    240231      FieldOut(:)=FieldIn(:)
     
    277268  SUBROUTINE scatter_surf_mpi_i(FieldIn,FieldOut)
    278269  USE mod_phys_lmdz_para
    279 #ifdef CPP_MPI
    280   INCLUDE 'mpif.h'
    281 #endif
     270  USE lmdz_mpi
     271
    282272    INTEGER :: FieldIn(:)
    283273    INTEGER :: FieldOut(:)
     
    285275   
    286276    IF (is_using_mpi) THEN
    287 #ifdef CPP_MPI
    288277      CALL MPI_Scatterv(FieldIn,knon_mpi_para,knon_mpi_begin_para(:)-1,MPI_INTEGER,   &
    289278                        FieldOut,knon_mpi,MPI_INTEGER,                                &
    290279                        mpi_master,COMM_LMDZ_PHY,ierr)
    291 #endif
    292280    ELSE
    293281      FieldOut(:)=FieldIn(:)
     
    329317  SUBROUTINE scatter_surf_mpi_r(FieldIn,FieldOut)
    330318  USE mod_phys_lmdz_para
    331 #ifdef CPP_MPI
    332   INCLUDE 'mpif.h'
    333 #endif
     319  USE lmdz_mpi
     320
    334321    REAL :: FieldIn(:)
    335322    REAL :: FieldOut(:)
     
    337324   
    338325    IF (is_using_mpi) THEN
    339 #ifdef CPP_MPI
    340326      CALL MPI_Scatterv(FieldIn,knon_mpi_para,knon_mpi_begin_para(:)-1,MPI_INTEGER,   &
    341327                        FieldOut,knon_mpi,MPI_INTEGER,                                &
    342328                        mpi_master,COMM_LMDZ_PHY,ierr)
    343 #endif
    344329    ELSE
    345330      FieldOut(:)=FieldIn(:)
  • LMDZ6/trunk/libf/phylmd/surf_land_orchidee_mod.F90

    r4526 r4600  
    701701  SUBROUTINE Get_orchidee_communicator(orch_comm, orch_mpi_size, orch_mpi_rank, orch_omp_size,orch_omp_rank)
    702702  USE  mod_surf_para
     703  USE lmdz_mpi
    703704     
    704 #ifdef CPP_MPI
    705     INCLUDE 'mpif.h'
    706 #endif   
    707 
    708705    INTEGER,INTENT(OUT) :: orch_comm
    709706    INTEGER,INTENT(OUT) :: orch_mpi_size
     
    725722      ENDIF
    726723   
    727 #ifdef CPP_MPI   
    728724      CALL MPI_COMM_SPLIT(COMM_LMDZ_PHY,color,mpi_rank,orch_comm,ierr)
    729725      CALL MPI_COMM_SIZE(orch_comm,orch_mpi_size,ierr)
    730726      CALL MPI_COMM_RANK(orch_comm,orch_mpi_rank,ierr)
    731 #endif
    732727   
    733728    ENDIF
     
    753748    USE mod_surf_para   
    754749    USE indice_sol_mod
    755 
    756 #ifdef CPP_MPI
    757     INCLUDE 'mpif.h'
    758 #endif   
     750    USE lmdz_mpi
    759751
    760752! Input arguments
  • LMDZ6/trunk/libf/phylmd/surf_land_orchidee_nofrein_mod.F90

    r3102 r4600  
    527527  SUBROUTINE Get_orchidee_communicator(orch_comm,orch_omp_size,orch_omp_rank)
    528528  USE  mod_surf_para
     529  USE lmdz_mpi
    529530     
    530 #ifdef CPP_MPI
    531     INCLUDE 'mpif.h'
    532 #endif   
    533 
    534531    INTEGER,INTENT(OUT) :: orch_comm
    535532    INTEGER,INTENT(OUT) :: orch_omp_size
     
    550547      ENDIF
    551548   
    552 #ifdef CPP_MPI   
    553549      CALL MPI_COMM_SPLIT(COMM_LMDZ_PHY,color,mpi_rank,orch_comm,ierr)
    554 #endif
    555550   
    556551    ENDIF
     
    577572    USE mod_surf_para   
    578573    USE indice_sol_mod
    579 
    580 #ifdef CPP_MPI
    581     INCLUDE 'mpif.h'
    582 #endif   
     574    USE lmdz_mpi
    583575
    584576! Input arguments
  • LMDZ6/trunk/libf/phylmd/surf_land_orchidee_nolic_mod.F90

    r4283 r4600  
    689689
    690690  SUBROUTINE Get_orchidee_communicator(orch_comm, orch_mpi_size, orch_mpi_rank, orch_omp_size,orch_omp_rank)
     691  USE lmdz_mpi
    691692  USE  mod_surf_para
    692693     
    693 #ifdef CPP_MPI
    694     INCLUDE 'mpif.h'
    695 #endif   
    696 
    697694    INTEGER,INTENT(OUT) :: orch_comm
    698695    INTEGER,INTENT(OUT) :: orch_mpi_size
     
    714711      ENDIF
    715712   
    716 #ifdef CPP_MPI   
    717713      CALL MPI_COMM_SPLIT(COMM_LMDZ_PHY,color,mpi_rank,orch_comm,ierr)
    718714      CALL MPI_COMM_SIZE(orch_comm,orch_mpi_size,ierr)
    719715      CALL MPI_COMM_RANK(orch_comm,orch_mpi_rank,ierr)
    720 #endif
    721716   
    722717    ENDIF
     
    742737    USE mod_surf_para   
    743738    USE indice_sol_mod
    744 
    745 #ifdef CPP_MPI
    746     INCLUDE 'mpif.h'
    747 #endif   
     739    USE lmdz_mpi
    748740
    749741! Input arguments
  • LMDZ6/trunk/libf/phylmd/surf_land_orchidee_noopenmp_mod.F90

    r2952 r4600  
    421421       IF (knon /=0) THEN
    422422          CALL Init_orchidee_index(knon,orch_comm,knindex,offset,ktindex)
    423 
    424 #ifndef CPP_MPI
    425           ! Interface for ORCHIDEE compiled in sequential mode(without preprocessing flag CPP_MPI)
    426           CALL intersurf_main (itime+itau_phy-1, nbp_lon, nbp_lat, knon, ktindex, dtime, &
    427                lrestart_read, lrestart_write, lalo, &
    428                contfrac, neighbours, resolution, date0, &
    429                zlev,  u1_lay, v1_lay, spechum, temp_air, epot_air, ccanopy, &
    430                cdrag, petA_orc, peqA_orc, petB_orc, peqB_orc, &
    431                precip_rain, precip_snow, lwdown, swnet, swdown, ps, &
    432                evap, fluxsens, fluxlat, coastalflow, riverflow, &
    433                tsol_rad, tsurf_new, qsurf, albedo_out, emis_new, z0_new, &
    434                lon_scat, lat_scat, q2m, t2m &
     423         
     424          IF (.NOT. using_mpi) THEN
     425            ! Interface for ORCHIDEE compiled in sequential mode(without preprocessing flag CPP_MPI)
     426            CALL intersurf_main (itime+itau_phy-1, nbp_lon, nbp_lat, knon, ktindex, dtime, &
     427                 lrestart_read, lrestart_write, lalo, &
     428                 contfrac, neighbours, resolution, date0, &
     429                 zlev,  u1_lay, v1_lay, spechum, temp_air, epot_air, ccanopy, &
     430                 cdrag, petA_orc, peqA_orc, petB_orc, peqB_orc, &
     431                 precip_rain, precip_snow, lwdown, swnet, swdown, ps, &
     432                 evap, fluxsens, fluxlat, coastalflow, riverflow, &
     433                 tsol_rad, tsurf_new, qsurf, albedo_out, emis_new, z0_new, &
     434                 lon_scat, lat_scat, q2m, t2m &
    435435#ifdef ORCH_NEW
    436                , nb_fields_cpl, fields_cpl)
     436                 , nb_fields_cpl, fields_cpl)
    437437#else
    438                )
     438                 )
    439439#endif
    440440
    441 #else         
    442           ! Interface for ORCHIDEE version 1.9 or later(1.9.2, 1.9.3, 1.9.4, 1.9.5) compiled in parallel mode(with preprocessing flag CPP_MPI)
    443           CALL intersurf_main (itime+itau_phy-1, nbp_lon, nbp_lat, offset, knon, ktindex, &
    444                orch_comm, dtime, lrestart_read, lrestart_write, lalo, &
    445                contfrac, neighbours, resolution, date0, &
    446                zlev,  u1_lay(1:knon), v1_lay(1:knon), spechum(1:knon), temp_air(1:knon), epot_air(1:knon), ccanopy(1:knon), &
    447                cdrag(1:knon), petA_orc(1:knon), peqA_orc(1:knon), petB_orc(1:knon), peqB_orc(1:knon), &
    448                precip_rain(1:knon), precip_snow(1:knon), lwdown(1:knon), swnet(1:knon), swdown(1:knon), ps(1:knon), &
    449                evap(1:knon), fluxsens(1:knon), fluxlat(1:knon), coastalflow(1:knon), riverflow(1:knon), &
    450                tsol_rad(1:knon), tsurf_new(1:knon), qsurf(1:knon), albedo_out(1:knon,:), emis_new(1:knon), z0_new(1:knon), &
    451                lon_scat, lat_scat, q2m, t2m &
     441          ELSE         
     442            ! Interface for ORCHIDEE version 1.9 or later(1.9.2, 1.9.3, 1.9.4, 1.9.5) compiled in parallel mode(with preprocessing flag CPP_MPI)
     443            CALL intersurf_main (itime+itau_phy-1, nbp_lon, nbp_lat, offset, knon, ktindex, &
     444                 orch_comm, dtime, lrestart_read, lrestart_write, lalo, &
     445                 contfrac, neighbours, resolution, date0, &
     446                 zlev,  u1_lay(1:knon), v1_lay(1:knon), spechum(1:knon), temp_air(1:knon), epot_air(1:knon), ccanopy(1:knon), &
     447                 cdrag(1:knon), petA_orc(1:knon), peqA_orc(1:knon), petB_orc(1:knon), peqB_orc(1:knon), &
     448                 precip_rain(1:knon), precip_snow(1:knon), lwdown(1:knon), swnet(1:knon), swdown(1:knon), ps(1:knon), &
     449                 evap(1:knon), fluxsens(1:knon), fluxlat(1:knon), coastalflow(1:knon), riverflow(1:knon), &
     450                 tsol_rad(1:knon), tsurf_new(1:knon), qsurf(1:knon), albedo_out(1:knon,:), emis_new(1:knon), z0_new(1:knon), &
     451                 lon_scat, lat_scat, q2m, t2m &
    452452#ifdef ORCH_NEW
    453                , nb_fields_cpl, fields_cpl(1:knon,:))
     453                 , nb_fields_cpl, fields_cpl(1:knon,:))
    454454#else
    455                )
     455                 )
    456456#endif
    457 #endif
    458          
     457          ENDIF
    459458       ENDIF
    460459
     
    467466
    468467    IF (knon /=0) THEN
    469 #ifndef CPP_MPI
    470        ! Interface for ORCHIDEE compiled in sequential mode(without preprocessing flag CPP_MPI)
    471        CALL intersurf_main (itime+itau_phy, nbp_lon, nbp_lat, knon, ktindex, dtime, &
    472             lrestart_read, lrestart_write, lalo, &
    473             contfrac, neighbours, resolution, date0, &
    474             zlev,  u1_lay, v1_lay, spechum, temp_air, epot_air, ccanopy, &
    475             cdrag, petA_orc, peqA_orc, petB_orc, peqB_orc, &
    476             precip_rain, precip_snow, lwdown, swnet, swdown_vrai, ps, &
    477             evap, fluxsens, fluxlat, coastalflow, riverflow, &
    478             tsol_rad, tsurf_new, qsurf, albedo_out, emis_new, z0_new, &
    479             lon_scat, lat_scat, q2m, t2m &
     468       IF (.NOT. using_mpi) THEN
     469         ! Interface for ORCHIDEE compiled in sequential mode(without preprocessing flag CPP_MPI)
     470         CALL intersurf_main (itime+itau_phy, nbp_lon, nbp_lat, knon, ktindex, dtime, &
     471              lrestart_read, lrestart_write, lalo, &
     472              contfrac, neighbours, resolution, date0, &
     473              zlev,  u1_lay, v1_lay, spechum, temp_air, epot_air, ccanopy, &
     474              cdrag, petA_orc, peqA_orc, petB_orc, peqB_orc, &
     475              precip_rain, precip_snow, lwdown, swnet, swdown_vrai, ps, &
     476              evap, fluxsens, fluxlat, coastalflow, riverflow, &
     477              tsol_rad, tsurf_new, qsurf, albedo_out, emis_new, z0_new, &
     478              lon_scat, lat_scat, q2m, t2m &
    480479#ifdef ORCH_NEW
    481             , nb_fields_cpl, fields_cpl)
     480              , nb_fields_cpl, fields_cpl)
    482481#else
    483             )
     482              )
    484483#endif
     484       ELSE
     485         ! Interface for ORCHIDEE version 1.9 or later compiled in parallel mode(with preprocessing flag CPP_MPI)
     486         CALL intersurf_main (itime+itau_phy, nbp_lon, nbp_lat,offset, knon, ktindex, &
     487              orch_comm,dtime, lrestart_read, lrestart_write, lalo, &
     488              contfrac, neighbours, resolution, date0, &
     489              zlev,  u1_lay(1:knon), v1_lay(1:knon), spechum(1:knon), temp_air(1:knon), epot_air(1:knon), ccanopy(1:knon), &
     490              cdrag(1:knon), petA_orc(1:knon), peqA_orc(1:knon), petB_orc(1:knon), peqB_orc(1:knon), &
     491              precip_rain(1:knon), precip_snow(1:knon), lwdown(1:knon), swnet(1:knon), swdown_vrai(1:knon), ps(1:knon), &
     492              evap(1:knon), fluxsens(1:knon), fluxlat(1:knon), coastalflow(1:knon), riverflow(1:knon), &
     493              tsol_rad(1:knon), tsurf_new(1:knon), qsurf(1:knon), albedo_out(1:knon,:), emis_new(1:knon), z0_new(1:knon), &
     494              lon_scat, lat_scat, q2m, t2m &
     495#ifdef ORCH_NEW
     496              , nb_fields_cpl, fields_cpl(1:knon,:))
    485497#else
    486        ! Interface for ORCHIDEE version 1.9 or later compiled in parallel mode(with preprocessing flag CPP_MPI)
    487        CALL intersurf_main (itime+itau_phy, nbp_lon, nbp_lat,offset, knon, ktindex, &
    488             orch_comm,dtime, lrestart_read, lrestart_write, lalo, &
    489             contfrac, neighbours, resolution, date0, &
    490             zlev,  u1_lay(1:knon), v1_lay(1:knon), spechum(1:knon), temp_air(1:knon), epot_air(1:knon), ccanopy(1:knon), &
    491             cdrag(1:knon), petA_orc(1:knon), peqA_orc(1:knon), petB_orc(1:knon), peqB_orc(1:knon), &
    492             precip_rain(1:knon), precip_snow(1:knon), lwdown(1:knon), swnet(1:knon), swdown_vrai(1:knon), ps(1:knon), &
    493             evap(1:knon), fluxsens(1:knon), fluxlat(1:knon), coastalflow(1:knon), riverflow(1:knon), &
    494             tsol_rad(1:knon), tsurf_new(1:knon), qsurf(1:knon), albedo_out(1:knon,:), emis_new(1:knon), z0_new(1:knon), &
    495             lon_scat, lat_scat, q2m, t2m &
    496 #ifdef ORCH_NEW
    497             , nb_fields_cpl, fields_cpl(1:knon,:))
    498 #else
    499             )
     498              )
    500499#endif
    501 #endif
     500       ENDIF
    502501    ENDIF
    503502
     
    545544   
    546545    USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat
    547 
    548 #ifdef CPP_MPI
    549     INCLUDE 'mpif.h'
    550 #endif   
    551 
     546    USE lmdz_mpi
    552547
    553548! Input arguments
     
    564559! Local varables
    565560!****************************************************************************************
    566 #ifdef CPP_MPI
    567561    INTEGER, DIMENSION(MPI_STATUS_SIZE)   :: status
    568 #endif
    569562
    570563    INTEGER                               :: MyLastPoint
     
    580573   
    581574    IF (is_parallel) THEN
    582 #ifdef CPP_MPI   
    583575       CALL MPI_COMM_SIZE(orch_comm,mpi_size_orch,ierr)
    584576       CALL MPI_COMM_RANK(orch_comm,mpi_rank_orch,ierr)
    585 #endif
    586577    ELSE
    587578       mpi_rank_orch=0
     
    591582    IF (is_parallel) THEN
    592583       IF (mpi_rank_orch /= 0) THEN
    593 #ifdef CPP_MPI
    594584          CALL MPI_RECV(LastPoint,1,MPI_INTEGER,mpi_rank_orch-1,1234,orch_comm,status,ierr)
    595 #endif
    596585       ENDIF
    597586       
    598587       IF (mpi_rank_orch /= mpi_size_orch-1) THEN
    599 #ifdef CPP_MPI
    600588          CALL MPI_SEND(MyLastPoint,1,MPI_INTEGER,mpi_rank_orch+1,1234,orch_comm,ierr) 
    601 #endif
    602589       ENDIF
    603590    ENDIF
     
    617604!
    618605  SUBROUTINE Get_orchidee_communicator(knon,orch_comm)
    619    
    620 #ifdef CPP_MPI
    621     INCLUDE 'mpif.h'
    622 #endif   
    623 
     606  USE lmdz_mpi
    624607
    625608    INTEGER,INTENT(IN)  :: knon
     
    638621    ENDIF
    639622   
    640 #ifdef CPP_MPI   
    641623    CALL MPI_COMM_SPLIT(COMM_LMDZ_PHY,color,mpi_rank,orch_comm,ierr)
    642 #endif
    643624   
    644625  END SUBROUTINE Get_orchidee_communicator
     
    650631    USE indice_sol_mod
    651632    USE mod_grid_phy_lmdz, ONLY: nbp_lon, nbp_lat
    652 
    653 #ifdef CPP_MPI
    654     INCLUDE 'mpif.h'
    655 #endif   
     633    USE lmdz_mpi
    656634
    657635! Input arguments
     
    688666       knon_nb(:)=knon
    689667    ELSE 
    690        
    691 #ifdef CPP_MPI 
    692668       CALL MPI_GATHER(knon,1,MPI_INTEGER,knon_nb,1,MPI_INTEGER,0,COMM_LMDZ_PHY,ierr)
    693 #endif
    694        
    695669    ENDIF
    696670   
     
    714688       ktindex_g(:)=ktindex_p(:)
    715689    ELSE
    716        
    717 #ifdef CPP_MPI 
    718690       CALL MPI_GATHERV(ktindex_p,knon,MPI_INTEGER,ktindex_g,knon_nb,&
    719691            displs,MPI_INTEGER,0,COMM_LMDZ_PHY,ierr)
    720 #endif
    721        
    722692    ENDIF
    723693   
     
    776746          neighbours(:,i)=neighbours_g(:,i)
    777747       ELSE
    778 #ifdef CPP_MPI
    779748          IF (knon > 0) THEN
    780749             ! knon>0, scattter global field neighbours_g from master process to local process
     
    784753             CALL MPI_SCATTERV(neighbours_g(:,i),knon_nb,displs,MPI_INTEGER,var_tmp,knon,MPI_INTEGER,0,COMM_LMDZ_PHY,ierr)
    785754          END IF
    786 #endif
    787755       ENDIF
    788756    ENDDO
  • LMDZ6/trunk/libf/phylmd/surf_land_orchidee_nounstruct_mod.F90

    r3438 r4600  
    525525  SUBROUTINE Get_orchidee_communicator(orch_comm,orch_omp_size,orch_omp_rank)
    526526  USE  mod_surf_para
     527  USE lmdz_mpi
    527528     
    528 #ifdef CPP_MPI
    529     INCLUDE 'mpif.h'
    530 #endif   
    531 
    532529    INTEGER,INTENT(OUT) :: orch_comm
    533530    INTEGER,INTENT(OUT) :: orch_omp_size
     
    548545      ENDIF
    549546   
    550 #ifdef CPP_MPI   
    551547      CALL MPI_COMM_SPLIT(COMM_LMDZ_PHY,color,mpi_rank,orch_comm,ierr)
    552 #endif
    553548   
    554549    ENDIF
     
    575570    USE mod_surf_para   
    576571    USE indice_sol_mod
    577 
    578 #ifdef CPP_MPI
    579     INCLUDE 'mpif.h'
    580 #endif   
     572    USE lmdz_mpi
    581573
    582574! Input arguments
  • LMDZ6/trunk/libf/phylmd/surf_land_orchidee_noz0h_mod.F90

    r3568 r4600  
    525525  SUBROUTINE Get_orchidee_communicator(orch_comm,orch_omp_size,orch_omp_rank)
    526526  USE  mod_surf_para
     527  USE lmdz_mpi
    527528     
    528 #ifdef CPP_MPI
    529     INCLUDE 'mpif.h'
    530 #endif   
    531 
    532529    INTEGER,INTENT(OUT) :: orch_comm
    533530    INTEGER,INTENT(OUT) :: orch_omp_size
     
    548545      ENDIF
    549546   
    550 #ifdef CPP_MPI   
    551547      CALL MPI_COMM_SPLIT(COMM_LMDZ_PHY,color,mpi_rank,orch_comm,ierr)
    552 #endif
    553548   
    554549    ENDIF
     
    575570    USE mod_surf_para   
    576571    USE indice_sol_mod
    577 
    578 #ifdef CPP_MPI
    579     INCLUDE 'mpif.h'
    580 #endif   
     572    USE lmdz_mpi
    581573
    582574! Input arguments
Note: See TracChangeset for help on using the changeset viewer.