source: codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/icosa_gcm.f90 @ 314

Last change on this file since 314 was 221, checked in by ymipsl, 10 years ago

Creating temporary dynamico/lmdz/saturn branche

YM

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