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

Last change on this file since 1009 was 993, checked in by rpennel, 5 years ago

devel : temporary hack to use both cellset and read_metric

File size: 2.6 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
[992]25  USE read_metric_mod
[830]26  USE init_grid_param_mod
[864]27  USE compute_geometry_mod
[992]28  !USE xios
[348]29  IMPLICIT NONE
30 
[714]31    CALL init_profiling
[348]32    CALL init_mpipara
[835]33    IF(is_mpi_master) CALL print_signature
[348]34    CALL trace_off
35    CALL xios_init
36    CALL init_earth_const 
37    CALL init_grid_param(is_mpi_master)
38    CALL init_omp_para(is_mpi_master)
[846]39    IF(grid_type == grid_ico) CALL compute_metric
[348]40    CALL compute_domain
41    CALL init_transfert
42    CALL init_writefield
43    CALL init_trace
44
45  !$OMP PARALLEL 
46    CALL switch_omp_no_distrib_level
[993]47
48    ! RPNL 2019/11 Temp hack to use read_metric and devel cellset structure
49    CALL allocate_geometry
50    CALL compute_geometry
51
[992]52    CALL read_metric
[864]53    CALL compute_geometry
[348]54    CALL check_total_area
55 
56    CALL init_disvert 
57    CALL init_vertical_interp
[379]58    CALL init_tracer
59   
[348]60    CALL WriteField("Ai",geom%Ai)
61 
62    IF (is_mpi_root) CALL write_apbp
63    CALL init_time
[483]64    CALL init_restart
65    CALL init_etat0
[348]66
67    CALL output_field_init
68    CALL init_timeloop
[726]69
70  !$OMP END PARALLEL
71
[348]72    CALL init_physics
[583]73
[726]74  !$OMP PARALLEL
75 
[583]76    CALL init_diagflux
[714]77    CALL zero_du_phys
[348]78    CALL timeloop
79    CALL switch_omp_no_distrib_level
80  !$OMP END PARALLEL
81
82    CALL output_field_finalize
83    CALL close_files
84    CALL close_time_counter
85    CALL finalize_mpipara
86
87  CONTAINS
[813]88 
[348]89    SUBROUTINE check_total_area
90    IMPLICIT NONE
[846]91    INTEGER :: ind,i,j,ij
[348]92    REAL(rstd) :: vect(3,6)
93    REAL(rstd) :: centr(3),dist   
94    REAL(rstd) :: tot_sum=0
95
96    !$OMP BARRIER
97    !$OMP MASTER
[846]98    IF(grid_type == grid_ico) THEN
99       DO ind=1,ndomain
100          CALL swap_dimensions(ind)
101          CALL swap_geometry(ind)
102          DO j=jj_begin,jj_end
103             DO i=ii_begin,ii_end
104                ij=(j-1)*iim+i
105                IF (domain(ind)%own(i,j)) tot_sum=tot_sum+Ai(ij)
106             ENDDO
[348]107          ENDDO
[846]108       ENDDO
109    END IF
110    IF (is_mpi_root) PRINT *," Diff surf",1-tot_sum/(4*Pi*radius*radius)
[348]111    !$OMP END MASTER
112   
113    END SUBROUTINE check_total_area
114 
115  END SUBROUTINE icosa_init
116
[642]117  SUBROUTINE force_recompile_unstructured
118    USE timestep_unstructured_mod
[686]119    USE transport_unstructured_mod
[642]120  END SUBROUTINE force_recompile_unstructured
121
[348]122END MODULE icosa_init_mod
Note: See TracBrowser for help on using the repository browser.