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

Last change on this file since 714 was 714, checked in by dubos, 6 years ago

devel : backported from trunk commits r607,r648,r649,r667,r668,r669,r706

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