source: LMDZ6/branches/Amaury_dev/libf/phylmd/mod_synchro_omp.F90 @ 5099

Last change on this file since 5099 was 5099, checked in by abarral, 4 months ago

Replace most uses of CPP_DUST by the corresponding logical defined in lmdz_cppkeys_wrapper.F90
Convert several files from .F to .f90 to allow Dust to compile w/o rrtm/ecrad
Create lmdz_yoerad.f90
(lint) Remove "!" on otherwise empty line

  • 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
  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 938 bytes
Line 
1
2! $Id: mod_synchro_omp.F90 5099 2024-07-22 19:29:09Z abarral $
3
4MODULE mod_synchro_omp
5
6    INTEGER,SAVE :: exit_omp 
7
8CONTAINS
9
10  SUBROUTINE Init_synchro_omp
11  USE mod_phys_lmdz_para
12  IMPLICIT NONE
13
14!$OMP BARRIER
15!$OMP MASTER
16  exit_omp=0
17!$OMP END MASTER   
18!$OMP BARRIER
19
20  END SUBROUTINE Init_Synchro_omp
21 
22  SUBROUTINE Synchro_omp 
23  USE mod_phys_lmdz_para
24  IMPLICIT NONE
25  LOGICAL :: out
26  CHARACTER (LEN=20) :: modname='synchro_omp'
27  CHARACTER (LEN=80) :: abort_message
28 
29    out=.FALSE.
30!$OMP BARRIER
31!$OMP ATOMIC
32    exit_omp=exit_omp+1
33!$OMP BARRIER
34    IF (exit_omp==omp_size) THEN
35      out=.TRUE.
36    ENDIF
37   
38    DO WHILE (.NOT. out)
39!$OMP BARRIER
40      IF (exit_omp==omp_size) out=.TRUE.
41!$OMP BARRIER
42    ENDDO
43
44!$OMP BARRIER
45!$OMP MASTER
46    exit_omp=0
47!$OMP END MASTER
48!$OMP BARRIER
49
50    IF (exit_omp/=0) THEN
51       abort_message='synchro_omp'
52       CALL abort_physic(modname,abort_message,1)
53    ENDIF
54
55  END SUBROUTINE Synchro_omp
56
57
58END MODULE mod_synchro_omp
Note: See TracBrowser for help on using the repository browser.