MODULE etat0_start_file_mod CONTAINS SUBROUTINE etat0(f_ps,f_phis,f_theta_rhodz,f_u, f_q) USE icosa USE restart_mod USE wind_mod USE write_field_mod USE time_mod USE transfert_mod IMPLICIT NONE TYPE(t_field),POINTER :: f_ps(:) TYPE(t_field),POINTER :: f_phis(:) TYPE(t_field),POINTER :: f_theta_rhodz(:) TYPE(t_field),POINTER :: f_u(:) TYPE(t_field),POINTER :: f_q(:) TYPE(t_field),POINTER,SAVE :: f_ulon(:) TYPE(t_field),POINTER,SAVE :: f_ulat(:) LOGICAL :: etat0_start_file_colocated=.FALSE. INTEGER :: ind CALL getin("etat0_start_file_colocated",etat0_start_file_colocated) IF (.NOT. etat0_start_file_colocated) THEN CALL allocate_field(f_ulon,field_t,type_real,llm,name='ulon') CALL allocate_field(f_ulat,field_t,type_real,llm,name='ulat') CALL read_start(itau0,f_ps,f_phis,f_theta_rhodz,f_u, f_q) CALL transfert_request(f_ps,req_i1) CALL transfert_request(f_phis,req_i1) CALL transfert_request(f_theta_rhodz,req_i1) CALL transfert_request(f_q,req_i1) CALL transfert_request(f_u,req_e1_vect) CALL transfert_request(f_u,req_e0_vect) CALL un2ulonlat(f_u,f_ulon,f_ulat) CALL deallocate_field(f_ulon) CALL deallocate_field(f_ulat) ELSE CALL allocate_field(f_ulon,field_t,type_real,llm,name='ulon') CALL allocate_field(f_ulat,field_t,type_real,llm,name='ulat') CALL read_start(itau0,f_ps,f_phis,f_theta_rhodz,f_ulon,f_ulat, f_q) CALL transfert_request(f_ulat,req_i1) CALL transfert_request(f_ulon,req_i1) CALL ulonlat2un(f_ulon,f_ulat,f_u) CALL transfert_request(f_ps,req_i1) CALL transfert_request(f_phis,req_i1) CALL transfert_request(f_theta_rhodz,req_i1) CALL transfert_request(f_q,req_i1) CALL transfert_request(f_u,req_e1_vect) CALL deallocate_field(f_ulon) CALL deallocate_field(f_ulat) ENDIF CALL bcast(itau0) CALL getin("etat0_start_iteration",itau0) END SUBROUTINE etat0 END MODULE etat0_start_file_mod