source: codes/icosagcm/trunk/src/write_etat0.f90 @ 543

Last change on this file since 543 was 496, checked in by ymipsl, 8 years ago

Restart from file, need to update redondant cells on frontier.

YM

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