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

Last change on this file since 862 was 856, checked in by dubos, 5 years ago

devel : towards Fortran driver for unstructured/LAM meshes

File size: 2.5 KB
RevLine 
[348]1MODULE icosa_init_mod
2
3CONTAINS
4
5  SUBROUTINE icosa_init
6  USE icosa
[835]7  USE signature_mod
[348]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
[379]20  USE tracer_mod
[483]21  USE restart_mod
22  USE etat0_mod
[583]23  USE diagflux_mod
[714]24  USE profiling_mod
[830]25  USE init_grid_param_mod
[348]26  IMPLICIT NONE
27 
[714]28    CALL init_profiling
[348]29    CALL init_mpipara
[835]30    IF(is_mpi_master) CALL print_signature
[348]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)
[846]36    IF(grid_type == grid_ico) CALL compute_metric
[348]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
[856]44    IF(grid_type == grid_ico) THEN
45       CALL compute_geometry
46    ELSE
47       swap_needed=.FALSE. ! do this inside an OMP PARALLEL loop to affect all threads
48    END IF
[348]49    CALL check_total_area
50 
51    CALL init_disvert 
52    CALL init_vertical_interp
[379]53    CALL init_tracer
54   
[348]55    CALL WriteField("Ai",geom%Ai)
56 
57    IF (is_mpi_root) CALL write_apbp
58    CALL init_time
[483]59    CALL init_restart
60    CALL init_etat0
[348]61
62    CALL output_field_init
63    CALL init_timeloop
[726]64
65  !$OMP END PARALLEL
66
[348]67    CALL init_physics
[583]68
[726]69  !$OMP PARALLEL
70 
[583]71    CALL init_diagflux
[714]72    CALL zero_du_phys
[348]73    CALL timeloop
74    CALL switch_omp_no_distrib_level
75  !$OMP END PARALLEL
76
77    CALL output_field_finalize
78    CALL close_files
79    CALL close_time_counter
80    CALL finalize_mpipara
81
82  CONTAINS
[813]83 
[348]84    SUBROUTINE check_total_area
85    IMPLICIT NONE
[846]86    INTEGER :: ind,i,j,ij
[348]87    REAL(rstd) :: vect(3,6)
88    REAL(rstd) :: centr(3),dist   
89    REAL(rstd) :: tot_sum=0
90
91    !$OMP BARRIER
92    !$OMP MASTER
[846]93    IF(grid_type == grid_ico) THEN
94       DO ind=1,ndomain
95          CALL swap_dimensions(ind)
96          CALL swap_geometry(ind)
97          DO j=jj_begin,jj_end
98             DO i=ii_begin,ii_end
99                ij=(j-1)*iim+i
100                IF (domain(ind)%own(i,j)) tot_sum=tot_sum+Ai(ij)
101             ENDDO
[348]102          ENDDO
[846]103       ENDDO
104    END IF
105    IF (is_mpi_root) PRINT *," Diff surf",1-tot_sum/(4*Pi*radius*radius)
[348]106    !$OMP END MASTER
107   
108    END SUBROUTINE check_total_area
109 
110  END SUBROUTINE icosa_init
111
[642]112  SUBROUTINE force_recompile_unstructured
113    USE timestep_unstructured_mod
[686]114    USE transport_unstructured_mod
[642]115  END SUBROUTINE force_recompile_unstructured
116
[348]117END MODULE icosa_init_mod
Note: See TracBrowser for help on using the repository browser.