source: codes/icosagcm/devel/src/output/write_etat0.f90 @ 732

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

devel : more cleanup and reorganization in dynamics/

File size: 1.7 KB
Line 
1MODULE write_etat0_mod
2
3CONTAINS
4
5  SUBROUTINE write_etat0(it,f_ps,f_phis,f_theta_rhodz,f_u, f_q, f_geopot, f_W)
6  USE icosa
7  USE restart_mod
8  USE wind_mod
9  USE write_field_mod
10  USE domain_mod
11  USE omp_para
12  USE xios_mod
13  USE caldyn_vars_mod
14  IMPLICIT NONE
15    INTEGER,INTENT(IN)    :: it
16    TYPE(t_field),POINTER :: f_ps(:)
17    TYPE(t_field),POINTER :: f_phis(:)
18    TYPE(t_field),POINTER :: f_theta_rhodz(:)
19    TYPE(t_field),POINTER :: f_u(:)
20    TYPE(t_field),POINTER :: f_q(:)
21    TYPE(t_field),POINTER, OPTIONAL :: f_geopot(:)
22    TYPE(t_field),POINTER, OPTIONAL :: f_W(:)
23 
24    TYPE(t_field),POINTER,SAVE :: f_ulon(:)
25    TYPE(t_field),POINTER,SAVE :: f_ulat(:)
26    TYPE(t_field),POINTER,SAVE :: f_theta_rhodz_1d(:)
27    REAL(rstd), POINTER :: theta_rhodz(:,:,:),theta_rhodz_1d(:,:)
28    INTEGER :: ind
29   
30   
31    CALL allocate_field(f_ulon,field_t,type_real,llm,name='ulon')
32    CALL allocate_field(f_ulat,field_t,type_real,llm,name='ulat')
33    CALL allocate_field(f_theta_rhodz_1d,field_t,type_real,llm,name='theta_rhodz')
34
35!$OMP BARRIER   
36    DO ind=1, ndomain
37       IF (.NOT. assigned_domain(ind) .OR. .NOT. is_omp_level_master) CYCLE
38       theta_rhodz=f_theta_rhodz(ind) ; theta_rhodz_1d=f_theta_rhodz_1d(ind)
39       theta_rhodz_1d(:,:)=theta_rhodz(:,:,1)
40    ENDDO
41   
42    CALL transfert_request(f_u,req_e1_vect)
43    CALL un2ulonlat(f_u, f_ulon, f_ulat)
44
45    IF(hydrostatic) THEN
46       CALL write_restart(it,f_ps,f_phis,f_theta_rhodz_1d,f_u, f_ulon, f_ulat, f_q)
47    ELSE
48       CALL write_restart(it,f_ps,f_phis,f_theta_rhodz_1d,f_u, f_ulon, f_ulat, f_q, f_geopot, f_W)
49    END IF
50    CALL deallocate_field(f_ulon)
51    CALL deallocate_field(f_ulat)
52   
53  END SUBROUTINE write_etat0
54   
55END MODULE write_etat0_mod
Note: See TracBrowser for help on using the repository browser.