source: codes/icosagcm/trunk/src/icosa_gcm.f90 @ 190

Last change on this file since 190 was 186, checked in by ymipsl, 10 years ago

Add new openMP parallelism based on distribution of domains on threads. There is no more limitation of number of threads by MPI process.

YM

File size: 1.6 KB
Line 
1PROGRAM ICOSA_GCM
2  USE icosa
3  USE timeloop_gcm_mod
4  USE disvert_mod
5  USE etat0_mod
6  USE wind_mod
7  USE mpipara
8  USE omp_para
9  USE vertical_interp_mod
10  USE trace
11  USE output_field_mod
12  USE xios_mod
13  USE write_field
14  USE getin_mod
15  IMPLICIT NONE
16 
17  TYPE(t_field),POINTER,SAVE :: sum_ne(:)
18  TYPE(t_field),POINTER,SAVE :: sum_ne_glo(:)
19  REAL(rstd),POINTER :: pt_sum_ne(:)
20 
21  INTEGER :: ind,i,j,k,n
22  REAL(rstd) :: tot_sum=0
23  REAL(rstd) :: vect(3,6)
24  REAL(rstd) :: centr(3),dist
25 
26  CALL init_mpipara
27  CALL trace_off
28  CALL xios_init
29  CALL init_earth_const 
30  CALL init_grid_param
31  CALL init_omp_para
32  CALL compute_metric
33  CALL compute_domain
34  CALL init_transfert
35  CALL init_writefield
36  CALL init_trace
37
38!$OMP PARALLEL 
39  CALL compute_geometry
40 
41  CALL init_disvert 
42  CALL init_vertical_interp
43
44  CALL allocate_field(sum_ne,field_T,type_real)
45 
46!$OMP BARRIER
47!$OMP MASTER
48  DO ind=1,ndomain
49     
50    pt_sum_ne=sum_ne(ind)
51     
52    CALL swap_dimensions(ind)
53    CALL swap_geometry(ind)
54   
55    DO j=jj_begin,jj_end
56      DO i=ii_begin,ii_end
57        n=(j-1)*iim+i
58        pt_sum_ne(n)=0
59        DO k=1,6
60          pt_sum_ne(n)=pt_sum_ne(n)+ne(n,k)
61        ENDDO
62        IF (domain(ind)%own(i,j)) tot_sum=tot_sum+Ai(n)
63      ENDDO
64    ENDDO
65  ENDDO
66 
67  IF (is_mpi_root) PRINT *," Diff surf",1-tot_sum/(4*Pi*radius*radius)
68!$OMP END MASTER
69
70 
71  CALL WriteField("Ai",geom%Ai)
72 
73  IF (is_mpi_root) CALL write_apbp
74  CALL init_time
75
76  CALL output_field_init
77  CALL init_timeloop
78
79
80  CALL timeloop
81
82!$OMP END PARALLEL
83
84  CALL output_field_finalize
85  CALL close_files
86  CALL close_time_counter
87  CALL finalize_mpipara
88 
89END PROGRAM ICOSA_gcm 
Note: See TracBrowser for help on using the repository browser.