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

Last change on this file since 156 was 151, checked in by ymipsl, 11 years ago

Implementation of mixte parallelism MPI/OpenMP into src directory

YM

File size: 1.4 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  IMPLICIT NONE
12 
13  TYPE(t_field),POINTER :: sum_ne(:)
14  TYPE(t_field),POINTER :: sum_ne_glo(:)
15  REAL(rstd),POINTER :: pt_sum_ne(:)
16 
17  INTEGER :: ind,i,j,k,n
18  REAL(rstd) :: tot_sum=0
19  REAL(rstd) :: vect(3,6)
20  REAL(rstd) :: centr(3),dist
21 
22  CALL init_mpipara
23  CALL init_earth_const 
24  CALL init_grid_param
25  CALL init_omp_para
26  CALL compute_metric
27  CALL compute_domain
28  CALL init_transfert
29  CALL init_writefield
30  CALL init_trace
31
32 
33  CALL compute_geometry
34  CALL init_disvert 
35  CALL init_vertical_interp
36
37  CALL allocate_field(sum_ne,field_T,type_real)
38 
39
40  DO ind=1,ndomain
41     
42    pt_sum_ne=sum_ne(ind)
43     
44    CALL swap_dimensions(ind)
45    CALL swap_geometry(ind)
46   
47    DO j=jj_begin,jj_end
48      DO i=ii_begin,ii_end
49        n=(j-1)*iim+i
50        pt_sum_ne(n)=0
51        DO k=1,6
52          pt_sum_ne(n)=pt_sum_ne(n)+ne(n,k)
53        ENDDO
54        IF (domain(ind)%own(i,j)) tot_sum=tot_sum+Ai(n)
55      ENDDO
56    ENDDO
57  ENDDO
58
59
60 
61  IF (is_mpi_root) PRINT *," Diff surf",1-tot_sum/(4*Pi*radius*radius)
62
63 
64  CALL WriteField("Ai",geom%Ai)
65
66  IF (is_mpi_root) CALL write_apbp
67  CALL init_time
68
69  CALL init_timeloop
70
71!$OMP PARALLEL
72  CALL timeloop
73!$OMP END PARALLEL
74
75  CALL close_files
76  CALL close_time_counter
77  CALL finalize_mpipara
78 
79END PROGRAM ICOSA_gcm 
Note: See TracBrowser for help on using the repository browser.