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

Last change on this file since 841 was 835, checked in by dubos, 5 years ago

devel : print svn info / svn status in log file

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