source: codes/icosagcm/devel/src/icosa_init.f90 @ 834

Last change on this file since 834 was 830, checked in by dubos, 5 years ago

devel : merged init_grid_param and init_grid_type

File size: 2.5 KB
Line 
1MODULE icosa_init_mod
2
3CONTAINS
4
5  SUBROUTINE icosa_init
6  USE icosa
7  USE timeloop_gcm_mod
8  USE disvert_mod
9  USE etat0_mod
10  USE wind_mod
11  USE mpipara
12  USE omp_para
13  USE vertical_interp_mod
14  USE trace
15  USE output_field_mod
16  USE xios_mod
17  USE write_field_mod
18  USE physics_mod
19  USE tracer_mod
20  USE restart_mod
21  USE etat0_mod
22  USE diagflux_mod
23  USE profiling_mod
24  USE init_grid_param_mod
25  IMPLICIT NONE
26 
27    CALL init_profiling
28    CALL init_mpipara
29    CALL trace_off
30    CALL xios_init
31    CALL init_earth_const 
32    CALL init_grid_param(is_mpi_master)
33    CALL init_omp_para(is_mpi_master)
34    CALL compute_metric
35    CALL compute_domain
36    CALL init_transfert
37    CALL init_writefield
38    CALL init_trace
39
40  !$OMP PARALLEL 
41    CALL switch_omp_no_distrib_level
42    CALL compute_geometry
43    CALL check_total_area
44 
45    CALL init_disvert 
46    CALL init_vertical_interp
47    CALL init_tracer
48   
49    CALL WriteField("Ai",geom%Ai)
50 
51    IF (is_mpi_root) CALL write_apbp
52    CALL init_time
53    CALL init_restart
54    CALL init_etat0
55
56    CALL output_field_init
57    CALL init_timeloop
58
59  !$OMP END PARALLEL
60
61    CALL init_physics
62
63  !$OMP PARALLEL
64 
65    CALL init_diagflux
66    CALL zero_du_phys
67    CALL timeloop
68    CALL switch_omp_no_distrib_level
69  !$OMP END PARALLEL
70
71    CALL output_field_finalize
72    CALL close_files
73    CALL close_time_counter
74    CALL finalize_mpipara
75
76  CONTAINS
77 
78    SUBROUTINE check_total_area
79    IMPLICIT NONE
80    TYPE(t_field),POINTER,SAVE :: sum_ne(:)
81    TYPE(t_field),POINTER,SAVE :: sum_ne_glo(:)
82    REAL(rstd),POINTER :: pt_sum_ne(:)
83    INTEGER :: ind,i,j,k,n
84    REAL(rstd) :: vect(3,6)
85    REAL(rstd) :: centr(3),dist   
86    REAL(rstd) :: tot_sum=0
87
88      CALL allocate_field(sum_ne,field_T,type_real)
89   
90    !$OMP BARRIER
91    !$OMP MASTER
92      DO ind=1,ndomain
93       
94        pt_sum_ne=sum_ne(ind)
95       
96        CALL swap_dimensions(ind)
97        CALL swap_geometry(ind)
98       
99        DO j=jj_begin,jj_end
100          DO i=ii_begin,ii_end
101            n=(j-1)*iim+i
102            pt_sum_ne(n)=0
103            DO k=1,6
104              pt_sum_ne(n)=pt_sum_ne(n)+ne(n,k)
105            ENDDO
106            IF (domain(ind)%own(i,j)) tot_sum=tot_sum+Ai(n)
107          ENDDO
108        ENDDO
109      ENDDO
110   
111      IF (is_mpi_root) PRINT *," Diff surf",1-tot_sum/(4*Pi*radius*radius)
112    !$OMP END MASTER
113   
114    END SUBROUTINE check_total_area
115 
116  END SUBROUTINE icosa_init
117
118  SUBROUTINE force_recompile_unstructured
119    USE timestep_unstructured_mod
120    USE transport_unstructured_mod
121  END SUBROUTINE force_recompile_unstructured
122
123END MODULE icosa_init_mod
Note: See TracBrowser for help on using the repository browser.