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

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

devel/unstructured : piecewise-constant vertical remapping

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