LMDZ
mod_synchro_omp.F90
Go to the documentation of this file.
2 
3  INTEGER,SAVE :: exit_omp
4 
5 CONTAINS
6 
7  SUBROUTINE init_synchro_omp
9  IMPLICIT NONE
10 
11  CALL omp_barrier
12 !$OMP MASTER
13  exit_omp=0
14 !$OMP END MASTER
15  CALL omp_barrier
16 
17  END SUBROUTINE init_synchro_omp
18 
19  SUBROUTINE synchro_omp
21  IMPLICIT NONE
22  LOGICAL :: out
23 
24  out=.false.
25 !$OMP BARRIER
26 !$OMP BARRIER
27 !$OMP ATOMIC
29 !$OMP BARRIER
30 !$OMP BARRIER
31  IF (exit_omp==omp_size) THEN
32  out=.true.
33  ENDIF
34 
35  DO WHILE (.NOT. out)
36 !$OMP BARRIER
37  IF (exit_omp==omp_size) out=.true.
38 !$OMP BARRIER
39  ENDDO
40 
41 !$OMP BARRIER
42 !$OMP MASTER
43  exit_omp=0
44 !$OMP END MASTER
45 !$OMP BARRIER
46 
47  IF (exit_omp/=0) THEN
48  stop 'synchro_omp'
49  ENDIF
50 
51  END SUBROUTINE synchro_omp
52 
53 
54 END MODULE mod_synchro_omp
subroutine synchro_omp
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
Definition: calcul_STDlev.h:26
integer, save exit_omp
subroutine init_synchro_omp
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true