source: CONFIG/UNIFORM/v7/ICOLMDZOR_v7/SOURCES/DYNAMICO/trunk/icosa_init.f90 @ 6362

Last change on this file since 6362 was 6362, checked in by aclsce, 15 months ago

Modified sponge parameters ICOLMDZ to use same treatment as LMDZ (iflag_sponge=2, mode_sponge=3).
Remind :
iflag_sponge !0 --> for no sponge

!1 --> for sponge over 4 topmost layers
!2 --> for sponge from top to ~1% of top layer pressure

mode_sponge !1 --> u and v relax towards 0

!2 --> u and v relax towards their zonal mean
!3 --> u,v and pot. temp. relax towards their zonal mean

File size: 4.3 KB
Line 
1MODULE icosa_init_mod
2 
3  IMPLICIT NONE
4  PRIVATE
5
6  PUBLIC :: icosa_init
7 
8CONTAINS
9 
10  SUBROUTINE icosa_init
11    USE profiling_mod,        ONLY : init_profiling
12    USE mpipara,              ONLY : is_mpi_master, is_mpi_root, mpi_rank, init_mpipara, finalize_mpipara
13    USE signature_mod,        ONLY : print_signature
14    USE trace,                ONLY : trace_off, init_trace
15    USE xios_mod,             ONLY : xios_init
16    USE geometry,             ONLY : geom
17    USE earth_const,          ONLY : init_earth_const
18    USE grid_param    ,       ONLY : grid_type, grid_ico
19    USE init_grid_param_mod,  ONLY : init_grid_param
20    USE omp_para,             ONLY : init_omp_para, switch_omp_no_distrib_level
21    USE metric,               ONLY : init_metric
22    USE domain_mod,           ONLY : compute_domain
23    USE transfert_mod,        ONLY : init_transfert
24    USE write_field_mod,      ONLY : init_writefield, writefield, close_files
25    USE trace,                ONLY : init_trace
26    USE read_metric_mod,      ONLY : read_metric
27    USE sponge_mod,           ONLY : pre_init_sponge
28    USE geometry,             ONLY : compute_geometry
29    USE disvert_mod,          ONLY : init_disvert, write_apbp
30    USE vertical_interp_mod,  ONLY : init_vertical_interp
31    USE tracer_icosa_mod,     ONLY : init_tracer
32    USE time_mod,             ONLY : init_time, close_time_counter
33    USE restart_mod,          ONLY : init_restart
34    USE etat0_mod,            ONLY : init_etat0
35    USE output_field_mod,     ONLY : output_field_init, output_field_finalize
36    USE timeloop_gcm_mod,     ONLY : init_timeloop, timeloop
37    USE physics_mod,          ONLY : init_physics, zero_du_phys
38    USE diagflux_mod,         ONLY : init_diagflux
39    USE guided_mod,           ONLY : pre_init_guided
40   
41    CALL init_profiling
42    CALL init_mpipara
43    IF(is_mpi_master) CALL print_signature
44    CALL trace_off
45    CALL xios_init
46    CALL init_earth_const 
47    CALL init_grid_param(is_mpi_master, mpi_rank) ! sets max_primal_deg, etc.
48    CALL init_omp_para(is_mpi_master)
49    IF(grid_type == grid_ico) CALL init_metric
50    CALL compute_domain ! allocates domain_glo(ndomain_glo), domain(ndomain)
51    CALL init_transfert
52   
53    CALL init_writefield
54    CALL init_trace
55   
56    !$OMP PARALLEL 
57    CALL switch_omp_no_distrib_level
58
59    IF(grid_type == grid_ico) CALL read_metric
60    CALL compute_geometry
61   
62    IF(grid_type == grid_ico) CALL check_total_area
63   
64    CALL init_disvert 
65    CALL init_vertical_interp
66    CALL init_tracer
67   
68    CALL WriteField("Ai",geom%Ai)
69   
70    IF (is_mpi_root) CALL write_apbp
71    CALL init_time
72    CALL init_etat0
73    CALL init_restart
74    CALL pre_init_sponge
75    CALL pre_init_guided ! must be done before closing xios context, i.e. before output_field_init
76    CALL output_field_init
77    CALL init_timeloop
78   
79    !$OMP END PARALLEL
80   
81    CALL init_physics
82   
83    !$OMP PARALLEL
84   
85    CALL init_diagflux
86    CALL zero_du_phys
87   
88    CALL timeloop
89   
90    CALL switch_omp_no_distrib_level
91    !$OMP END PARALLEL
92   
93    CALL output_field_finalize
94    CALL close_files
95    CALL close_time_counter
96    CALL finalize_mpipara
97   
98  END SUBROUTINE icosa_init
99 
100  SUBROUTINE check_total_area
101    USE prec,       ONLY : rstd
102    USE domain_mod, ONLY : ndomain, domain
103    USE geometry,   ONLY : swap_geometry, Ai, ne
104    USE mpipara,    ONLY : is_mpi_root
105    USE dimensions
106    USE field_mod
107    USE domain_param
108    USE omp_para
109    USE icosa
110   
111    TYPE(t_field), POINTER, SAVE :: sum_ne(:)
112    REAL(rstd), POINTER          :: pt_sum_ne(:)
113    INTEGER :: ind,i,j,k,n 
114    REAL(rstd) :: tot_sum=0
115   
116    CALL allocate_field(sum_ne,field_T,type_real)
117   
118    !$OMP BARRIER
119    !$OMP MASTER
120    DO ind=1,ndomain
121       
122       pt_sum_ne=sum_ne(ind)
123       
124       CALL swap_dimensions(ind)
125       CALL swap_geometry(ind)
126       
127       DO j=jj_begin,jj_end
128          DO i=ii_begin,ii_end
129             n=(j-1)*iim+i
130             pt_sum_ne(n)=0
131             DO k=1,6
132                pt_sum_ne(n)=pt_sum_ne(n)+ne(n,k)
133             ENDDO
134             IF (domain(ind)%own(i,j)) tot_sum=tot_sum+Ai(n)
135          ENDDO
136       ENDDO
137    ENDDO
138   
139    IF (is_mpi_root) PRINT *," Diff surf",1-tot_sum/(4*Pi*radius*radius)
140    !$OMP END MASTER
141   
142  END SUBROUTINE check_total_area
143 
144END MODULE icosa_init_mod
Note: See TracBrowser for help on using the repository browser.