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

Last change on this file since 5133 was 5128, checked in by abarral, 5 months ago

Correct bug in vlspltqs_loc.f90 from r2270 where we call SSUM with incorrect arguments.
Merge the three different versions of abort_gcm into one
Fix seq, para 3D compilation broken from r5107 onwards
(lint) usual + Remove uneeded fixed-form continuations

  • 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: 1.0 KB
Line 
1! $Id: mod_synchro_omp.F90 5128 2024-07-25 15:47:25Z abarral $
2
3MODULE mod_synchro_omp
4
5  INTEGER, SAVE :: exit_omp
6
7CONTAINS
8
9  SUBROUTINE Init_synchro_omp
10    USE lmdz_phys_para
11    IMPLICIT NONE
12
13    !$OMP BARRIER
14    !$OMP MASTER
15    exit_omp = 0
16    !$OMP END MASTER
17    !$OMP BARRIER
18
19  END SUBROUTINE Init_Synchro_omp
20
21  SUBROUTINE Synchro_omp
22    USE lmdz_phys_para
23    USE lmdz_abort_physic, ONLY: abort_physic
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.