source: LMDZ6/trunk/libf/dyn3dmem/mod_const_mpi.F90 @ 4600

Last change on this file since 4600 was 4600, checked in by yann meurdesoif, 11 months ago

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

YM

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
File size: 2.2 KB
Line 
1!
2! $Id: mod_const_para.F90 1279 2009-12-10 09:02:56Z fairhead $
3!
4MODULE mod_const_mpi
5  IMPLICIT NONE
6  INTEGER,SAVE :: COMM_LMDZ
7  INTEGER,SAVE :: MPI_REAL_LMDZ
8 
9
10CONTAINS
11
12  SUBROUTINE Init_const_mpi
13    USE lmdz_mpi
14
15#ifdef CPP_IOIPSL
16    USE IOIPSL, ONLY: getin
17#else
18! if not using IOIPSL, we still need to use (a local version of) getin
19    USE ioipsl_getincom, only: getin
20#endif
21! Use of Oasis-MCT coupler
22#ifdef CPP_OMCT
23    USE mod_prism
24#endif
25#ifdef CPP_XIOS
26    USE wxios, only: wxios_init
27#endif
28    IMPLICIT NONE
29
30    INTEGER             :: ierr
31    INTEGER             :: comp_id
32    INTEGER             :: thread_required
33    INTEGER             :: thread_provided
34    CHARACTER(len = 6)  :: type_ocean
35
36!$OMP MASTER
37    type_ocean = 'force '
38    CALL getin('type_ocean', type_ocean)
39!$OMP END MASTER
40!$OMP BARRIER
41
42    IF (type_ocean=='couple') THEN
43#ifdef CPP_COUPLE
44!$OMP MASTER
45#ifdef CPP_XIOS
46      CALL wxios_init("LMDZ", outcom=COMM_LMDZ, type_ocean=type_ocean)
47#else
48       CALL prism_init_comp_proto (comp_id, 'LMDZ', ierr)
49       CALL prism_get_localcomm_proto(COMM_LMDZ,ierr)
50#endif
51!$OMP END MASTER
52#endif
53      MPI_REAL_LMDZ=MPI_REAL8
54    ELSE
55      CALL init_mpi
56    ENDIF
57
58  END SUBROUTINE Init_const_mpi
59 
60  SUBROUTINE Init_mpi
61    USE lmdz_mpi
62
63#ifdef CPP_XIOS
64    USE wxios, only: wxios_init
65#endif
66  IMPLICIT NONE
67    INTEGER             :: ierr
68    INTEGER             :: thread_required
69    INTEGER             :: thread_provided
70
71!$OMP MASTER
72      thread_required=MPI_THREAD_SERIALIZED
73
74      CALL MPI_INIT_THREAD(thread_required,thread_provided,ierr)
75      IF (thread_provided < thread_required) THEN
76        PRINT *,'Warning : The multithreaded level of MPI librairy do not provide the requiered level',  &
77                ' in mod_const_mpi::Init_const_mpi'
78      ENDIF
79      COMM_LMDZ=MPI_COMM_WORLD
80      MPI_REAL_LMDZ=MPI_REAL8
81!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
82! Initialisation de XIOS
83!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
84#ifdef CPP_XIOS
85      WRITE(*,*)'IN Init_mpi call wxios_init'
86      CALL wxios_init("LMDZ", outcom=COMM_LMDZ)
87#endif
88!$OMP END MASTER
89
90END SUBROUTINE Init_mpi
91   
92END MODULE mod_const_mpi
Note: See TracBrowser for help on using the repository browser.