Ignore:
Timestamp:
07/29/14 18:30:42 (10 years ago)
Author:
ymipsl
Message:

Save starting iteration itau0 in dynamico restart file.
Timeloop now begin from itau0 which can be read from start file or set to 0 by default.

YM

Location:
codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/check_conserve.f90

    r221 r262  
    7171    IF (is_mpi_root) THEN  
    7272!$OMP MASTER        
    73        IF ( it == 0  ) Then  
     73       IF ( it == itau0  ) Then  
    7474          ztot0 = ztot 
    7575          mtot0 = mtot 
  • codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/etat0_start_file.f90

    r260 r262  
    1212  USE wind_mod 
    1313  USE write_field 
     14  USE time_mod 
     15  USE transfert_mod 
    1416  IMPLICIT NONE 
    1517    TYPE(t_field),POINTER :: f_ps(:) 
     
    3032        CALL allocate_field(f_ulon,field_t,type_real,llm,name='ulon') 
    3133        CALL allocate_field(f_ulat,field_t,type_real,llm,name='ulat') 
    32         CALL read_start(f_ps,f_phis,f_theta_rhodz,f_u, f_q) 
     34        CALL read_start(itau0,f_ps,f_phis,f_theta_rhodz,f_u, f_q) 
    3335        CALL transfert_request(f_ps,req_i1) 
    3436        CALL transfert_request(f_phis,req_i1) 
     
    4547        CALL allocate_field(f_ulon,field_t,type_real,llm,name='ulon') 
    4648        CALL allocate_field(f_ulat,field_t,type_real,llm,name='ulat') 
    47         CALL read_start(f_ps,f_phis,f_theta_rhodz,f_ulon,f_ulat, f_q) 
     49        CALL read_start(itau0,f_ps,f_phis,f_theta_rhodz,f_ulon,f_ulat, f_q) 
    4850        CALL transfert_request(f_ulat,req_i1) 
    4951        CALL transfert_request(f_ulon,req_i1) 
     
    6163      ENDIF 
    6264 
     65      CALL bcast(itau0) 
     66      CALL getin("etat0_start_iteration",itau0)         
     67 
    6368  END SUBROUTINE etat0 
    6469   
  • codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/restart.f90

    r260 r262  
    1010CONTAINS 
    1111   
    12   SUBROUTINE write_restart(field0 ,field1 ,field2 ,field3 ,field4 ,field5 ,field6 ,field7 ,field8 ,field9,   & 
     12  SUBROUTINE write_restart(it,field0 ,field1 ,field2 ,field3 ,field4 ,field5 ,field6 ,field7 ,field8 ,field9,   & 
    1313                           field10,field11,field12,field13,field14,field15,field16,field17,field18,field19 ) 
    1414  USE prec 
     
    2222  USE transfert_mod 
    2323  
    24   IMPLICIT NONE 
     24  IMPLICIT NONE  
     25  INTEGER,INTENT(IN)     :: it 
     26 
    2527  TYPE(t_field),POINTER,OPTIONAL,DIMENSION(:) :: field0 ,field1 ,field2 ,field3 ,field4 ,field5 ,field6 ,field7 ,field8 ,field9 
    2628  TYPE(t_field),POINTER,OPTIONAL,DIMENSION(:) :: field10,field11,field12,field13,field14,field15,field16,field17,field18,field19 
     
    7779      status = NF90_DEF_DIM(ncid,'nvert',nvert,vertId) 
    7880      status = NF90_DEF_DIM(ncid,'nq',nqtot,nqId) 
     81      status = NF90_PUT_ATT(ncid,NF90_GLOBAL,"iteration",it) 
    7982       
    8083      status = NF90_DEF_VAR(ncid,'lon',NF90_DOUBLE,(/ cellId /),lonId) 
     
    317320 
    318321 
    319   SUBROUTINE read_start(field0 ,field1 ,field2 ,field3 ,field4 ,field5 ,field6 ,field7 ,field8 ,field9,   & 
    320                           field10,field11,field12,field13,field14,field15,field16,field17,field18,field19 ) 
     322  SUBROUTINE read_start(it,field0 ,field1 ,field2 ,field3 ,field4 ,field5 ,field6 ,field7 ,field8 ,field9,   & 
     323                           field10,field11,field12,field13,field14,field15,field16,field17,field18,field19 ) 
    321324  USE prec 
    322325  USE metric 
     
    330333  
    331334  IMPLICIT NONE 
     335  INTEGER, INTENT(OUT)  :: it 
    332336  TYPE(t_field),POINTER,OPTIONAL,DIMENSION(:) :: field0 ,field1 ,field2 ,field3 ,field4 ,field5 ,field6 ,field7 ,field8 ,field9 
    333337  TYPE(t_field),POINTER,OPTIONAL,DIMENSION(:) :: field10,field11,field12,field13,field14,field15,field16,field17,field18,field19 
     
    384388      field=>field_array(nf)%field 
    385389      status = nf90_inq_varid(ncid, TRIM(ADJUSTL(field(1)%name)), fieldId(nf)) 
     390      status = nf90_get_att(ncid, NF90_GLOBAL, "iteration", it) 
    386391      CALL read_start_field(field,fieldId(nf),ncid) 
    387392    ENDDO 
  • codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/time.f90

    r221 r262  
    99  INTEGER,SAVE :: it 
    1010!$OMP THREADPRIVATE(it)   
     11 
     12  INTEGER,SAVE :: itau0=0 
     13!$OMP THREADPRIVATE(itau0)   
    1114 
    1215  REAL(rstd),SAVE :: dt 
     
    3740         dt, write_period, itau_out, itau_adv, itau_dissip, itau_physics, itaumax, &  
    3841day_step,ndays,jD_ref,jH_ref,day_ini,day_end,annee_ref,day_ref,an, mois, jour,heure, & 
    39             calend,time_style 
     42            calend,time_style,itau0 
    4043 
    4144 
  • codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/timeloop_gcm.f90

    r260 r262  
    197197!$OMP END MASTER    
    198198 
     199  CALL check_conserve(f_ps,f_dps,f_u,f_theta_rhodz,f_phis,itau0)   
     200 
    199201  CALL trace_on 
    200202   
    201   DO it=0,itaumax 
     203  DO it=itau0+1,itau0+itaumax 
    202204     
    203205    IF (xios_output) CALL xios_update_calendar(it) 
    204     IF (MOD(it,itau_sync)==0) THEN 
     206    IF (it==itau0+1 .OR. MOD(it,itau_sync)==0) THEN 
    205207      CALL send_message(f_ps,req_ps0) 
    206208      CALL wait_message(req_ps0) 
     
    294296  ENDDO 
    295297 
    296   CALL write_etat0(f_ps, f_phis,f_theta_rhodz,f_u,f_q)  
     298  CALL write_etat0(itau0+itaumax,f_ps, f_phis,f_theta_rhodz,f_u,f_q)  
    297299 
    298300  CALL check_conserve(f_ps,f_dps,f_u,f_theta_rhodz,f_phis,it)   
  • codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/write_etat0.f90

    r260 r262  
    55CONTAINS 
    66 
    7   SUBROUTINE write_etat0(f_ps,f_phis,f_theta_rhodz,f_u, f_q) 
     7  SUBROUTINE write_etat0(it,f_ps,f_phis,f_theta_rhodz,f_u, f_q) 
    88  USE icosa 
    99  USE restart_mod 
     
    1111  USE write_field 
    1212  IMPLICIT NONE 
     13    INTEGER,INTENT(IN)    :: it 
    1314    TYPE(t_field),POINTER :: f_ps(:) 
    1415    TYPE(t_field),POINTER :: f_phis(:) 
     
    2728    CALL un2ulonlat(f_u, f_ulon, f_ulat) 
    2829     
    29     CALL write_restart(f_ps,f_phis,f_theta_rhodz,f_u, f_ulon, f_ulat, f_q) 
     30    CALL write_restart(it,f_ps,f_phis,f_theta_rhodz,f_u, f_ulon, f_ulat, f_q) 
    3031 
    3132    CALL deallocate_field(f_ulon) 
Note: See TracChangeset for help on using the changeset viewer.