Changeset 7787


Ignore:
Timestamp:
2017-03-11T09:56:09+01:00 (4 years ago)
Author:
cetlod
Message:

trunk: read the last time step of qsr sampling in TOP restart file only when nn_rsttr not equal to 0, see ticket #1773

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/TOP_SRC/trcstp.F90

    r7753 r7787  
    3131   REAL(wp), DIMENSION(:,:,:), SAVE, ALLOCATABLE ::   qsr_arr ! save qsr during TOP time-step 
    3232   REAL(wp) :: rdt_sampl 
    33    INTEGER  :: nb_rec_per_day 
     33   INTEGER  :: nb_rec_per_day, ktdcy 
    3434   REAL(wp) :: rsecfst, rseclast 
    3535   LOGICAL  :: llnew 
     
    130130      INTEGER, INTENT(in) ::   kt 
    131131      INTEGER  :: jn 
    132       REAL(wp) :: zkt 
     132      REAL(wp) :: zkt, zrec 
    133133      CHARACTER(len=1)               ::   cl1                      ! 1 character 
    134134      CHARACTER(len=2)               ::   cl2                      ! 2 characters 
     
    152152         ! 
    153153         !                                            !* Restart: read in restart file 
    154          IF( ln_rsttr .AND. iom_varid( numrtr, 'qsr_mean' , ldstop = .FALSE. ) > 0 .AND. & 
    155                             iom_varid( numrtr, 'qsr_arr_1', ldstop = .FALSE. ) > 0 .AND. & 
    156                             iom_varid( numrtr, 'ktdcy'    , ldstop = .FALSE. ) > 0 ) THEN  
    157             CALL iom_get( numrtr, 'ktdcy', zkt )   !  A mean of qsr 
    158             rsecfst = INT( zkt ) * rdttrc 
     154         IF( ln_rsttr .AND. nn_rsttr /= 0 .AND. iom_varid( numrtr, 'qsr_mean' , ldstop = .FALSE. ) > 0  & 
     155           &                              .AND. iom_varid( numrtr, 'qsr_arr_1', ldstop = .FALSE. ) > 0  & 
     156           &                              .AND. iom_varid( numrtr, 'ktdcy'    , ldstop = .FALSE. ) > 0  & 
     157           &                              .AND. iom_varid( numrtr, 'nrdcy'    , ldstop = .FALSE. ) > 0  ) THEN 
     158 
     159            CALL iom_get( numrtr, 'ktdcy', zkt )   
     160            rsecfst = INT( zkt ) * rdttrc(1) 
    159161            IF(lwp) WRITE(numout,*) 'trc_qsr_mean:   qsr_mean read in the restart file at time-step rsecfst =', rsecfst, ' s ' 
    160162            CALL iom_get( numrtr, jpdom_autoglo, 'qsr_mean', qsr_mean )   !  A mean of qsr 
    161             DO jn = 1, nb_rec_per_day  
    162              IF( jn <= 9 )  THEN 
    163                WRITE(cl1,'(i1)') jn 
    164                CALL iom_get( numrtr, jpdom_autoglo, 'qsr_arr_'//cl1, qsr_arr(:,:,jn) )   !  A mean of qsr 
    165              ELSE 
    166                WRITE(cl2,'(i2.2)') jn 
    167                CALL iom_get( numrtr, jpdom_autoglo, 'qsr_arr_'//cl2, qsr_arr(:,:,jn) )   !  A mean of qsr 
    168              ENDIF 
    169            ENDDO 
     163            CALL iom_get( numrtr, 'nrdcy', zrec )   !  Number of record per days 
     164            IF( INT( zrec ) == nb_rec_per_day ) THEN 
     165               DO jn = 1, nb_rec_per_day  
     166                  IF( jn <= 9 )  THEN 
     167                    WRITE(cl1,'(i1)') jn 
     168                    CALL iom_get( numrtr, jpdom_autoglo, 'qsr_arr_'//cl1, qsr_arr(:,:,jn) )   !  A mean of qsr 
     169                  ELSE 
     170                    WRITE(cl2,'(i2.2)') jn 
     171                    CALL iom_get( numrtr, jpdom_autoglo, 'qsr_arr_'//cl2, qsr_arr(:,:,jn) )   !  A mean of qsr 
     172                  ENDIF 
     173              ENDDO 
     174            ELSE 
     175               DO jn = 1, nb_rec_per_day 
     176                  qsr_arr(:,:,jn) = qsr_mean(:,:) 
     177               ENDDO 
     178            ENDIF 
    170179         ELSE                                         !* no restart: set from nit000 values 
    171180            IF(lwp) WRITE(numout,*) 'trc_qsr_mean:   qsr_mean set to nit000 values' 
     
    184193      llnew   = ( rseclast - rsecfst ) .ge.  rdt_sampl    !   new shortwave to store 
    185194      IF( llnew ) THEN 
    186           IF( lwp ) WRITE(numout,*) ' New shortwave to sample for TOP at time kt = ', kt, & 
     195          ktdcy = kt 
     196          IF( lwp .AND. kt < nittrc000 + 100 ) WRITE(numout,*) ' New shortwave to sample for TOP at time kt = ', ktdcy, & 
    187197             &                      ' time = ', rseclast/3600.,'hours ' 
    188198          rsecfst = rseclast 
     
    198208         IF(lwp) WRITE(numout,*) 'trc_mean_qsr : write qsr_mean in restart file  kt =', kt 
    199209         IF(lwp) WRITE(numout,*) '~~~~~~~' 
    200          zkt = REAL( kt, wp ) 
    201          CALL iom_rstput( kt, nitrst, numrtw, 'ktdcy', zkt ) 
     210         zkt  = REAL( ktdcy, wp ) 
     211         zrec = REAL( nb_rec_per_day, wp ) 
     212         CALL iom_rstput( kt, nitrst, numrtw, 'ktdcy', zkt  ) 
     213         CALL iom_rstput( kt, nitrst, numrtw, 'nrdcy', zrec ) 
    202214          DO jn = 1, nb_rec_per_day  
    203215             IF( jn <= 9 )  THEN 
Note: See TracChangeset for help on using the changeset viewer.