Ignore:
Timestamp:
09/12/16 14:39:01 (8 years ago)
Author:
ymipsl
Message:

Bug fix : read and write restart file was brocken due to new extra dimension to theta_rhodz

YM

Location:
codes/icosagcm/trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/src/etat0_start_file.f90

    r347 r476  
    1414  USE time_mod 
    1515  USE transfert_mod 
     16  USE omp_para 
    1617  IMPLICIT NONE 
    1718    TYPE(t_field),POINTER :: f_ps(:) 
     
    2324    TYPE(t_field),POINTER,SAVE :: f_ulon(:) 
    2425    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(:,:) 
    2528 
    2629    LOGICAL :: etat0_start_file_colocated=.FALSE. 
     
    2831 
    2932      CALL getin("etat0_start_file_colocated",etat0_start_file_colocated)   
     33      CALL allocate_field(f_theta_rhodz_1d,field_t,type_real,llm,name='theta_rhodz') 
     34 
    3035 
    3136      IF (.NOT. etat0_start_file_colocated) THEN     
    3237        CALL allocate_field(f_ulon,field_t,type_real,llm,name='ulon') 
    3338        CALL allocate_field(f_ulat,field_t,type_real,llm,name='ulat') 
    34         CALL read_start(itau0,f_ps,f_phis,f_theta_rhodz,f_u, f_q) 
     39        CALL read_start(itau0,f_ps,f_phis,f_theta_rhodz_1d,f_u, f_q) 
    3540        CALL transfert_request(f_ps,req_i1) 
    3641        CALL transfert_request(f_phis,req_i1) 
    37         CALL transfert_request(f_theta_rhodz,req_i1) 
     42        CALL transfert_request(f_theta_rhodz_1d,req_i1) 
    3843        CALL transfert_request(f_q,req_i1) 
    3944        CALL transfert_request(f_u,req_e1_vect) 
     
    4752        CALL allocate_field(f_ulon,field_t,type_real,llm,name='ulon') 
    4853        CALL allocate_field(f_ulat,field_t,type_real,llm,name='ulat') 
    49         CALL read_start(itau0,f_ps,f_phis,f_theta_rhodz,f_ulon,f_ulat, f_q) 
     54        CALL read_start(itau0,f_ps,f_phis,f_theta_rhodz_1d,f_ulon,f_ulat, f_q) 
    5055        CALL transfert_request(f_ulat,req_i1) 
    5156        CALL transfert_request(f_ulon,req_i1) 
     
    5560        CALL transfert_request(f_ps,req_i1) 
    5661        CALL transfert_request(f_phis,req_i1) 
    57         CALL transfert_request(f_theta_rhodz,req_i1) 
     62        CALL transfert_request(f_theta_rhodz_1d,req_i1) 
    5863        CALL transfert_request(f_q,req_i1) 
    5964        CALL transfert_request(f_u,req_e1_vect) 
     
    6267        CALL deallocate_field(f_ulat) 
    6368      ENDIF 
     69 
     70!$OMP BARRIER     
     71    DO ind=1, ndomain 
     72       IF (.NOT. assigned_domain(ind) .AND. is_omp_level_master) CYCLE 
     73       theta_rhodz=f_theta_rhodz(ind) ; theta_rhodz_1d=f_theta_rhodz_1d(ind) 
     74       theta_rhodz(:,:,1)=theta_rhodz_1d(:,:) 
     75    ENDDO 
     76!$OMP BARRIER     
    6477 
    6578      CALL bcast(itau0) 
  • codes/icosagcm/trunk/src/write_etat0.f90

    r347 r476  
    1010  USE wind_mod 
    1111  USE write_field_mod 
     12  USE domain_mod 
     13  USE omp_para 
    1214  IMPLICIT NONE 
    1315    INTEGER,INTENT(IN)    :: it 
     
    2022    TYPE(t_field),POINTER,SAVE :: f_ulon(:) 
    2123    TYPE(t_field),POINTER,SAVE :: f_ulat(:) 
     24    TYPE(t_field),POINTER,SAVE :: f_theta_rhodz_1d(:) 
     25    REAL(rstd), POINTER :: theta_rhodz(:,:,:),theta_rhodz_1d(:,:) 
     26    INTEGER :: ind 
    2227     
    2328     
    2429    CALL allocate_field(f_ulon,field_t,type_real,llm,name='ulon') 
    2530    CALL allocate_field(f_ulat,field_t,type_real,llm,name='ulat') 
     31    CALL allocate_field(f_theta_rhodz_1d,field_t,type_real,llm,name='theta_rhodz') 
    2632 
     33!$OMP BARRIER     
     34    DO ind=1, ndomain 
     35       IF (.NOT. assigned_domain(ind) .AND. is_omp_level_master) CYCLE 
     36       theta_rhodz=f_theta_rhodz(ind) ; theta_rhodz_1d=f_theta_rhodz_1d(ind) 
     37       theta_rhodz_1d(:,:)=theta_rhodz(:,:,1) 
     38    ENDDO 
     39     
    2740    CALL transfert_request(f_u,req_e1_vect) 
    2841    CALL un2ulonlat(f_u, f_ulon, f_ulat) 
    2942     
    30     CALL write_restart(it,f_ps,f_phis,f_theta_rhodz,f_u, f_ulon, f_ulat, f_q) 
     43    CALL write_restart(it,f_ps,f_phis,f_theta_rhodz_1d,f_u, f_ulon, f_ulat, f_q) 
    3144 
    3245    CALL deallocate_field(f_ulon) 
Note: See TracChangeset for help on using the changeset viewer.