New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 6968 – NEMO

Changeset 6968


Ignore:
Timestamp:
2016-10-03T08:39:14+02:00 (6 years ago)
Author:
cetlod
Message:

trunk: minor bgufix on trcstp, see ticket #1173

File:
1 edited

Legend:

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

    r6954 r6968  
    3333   REAL(wp) :: rdt_sampl 
    3434   INTEGER  :: nb_rec_per_day 
    35    INTEGER  :: isecfst, iseclast 
     35   REAL(wp) :: rsecfst, rseclast 
    3636   LOGICAL  :: llnew 
    3737 
     
    128128      INTEGER, INTENT(in) ::   kt 
    129129      INTEGER  :: jn 
    130       REAL(wp) :: zsecfst 
     130      REAL(wp) :: zkt 
    131131      CHARACTER(len=1)               ::   cl1                      ! 1 character 
    132132      CHARACTER(len=2)               ::   cl2                      ! 2 characters 
     
    134134      IF( kt == nittrc000 ) THEN 
    135135         IF( ln_cpl )  THEN   
    136             rdt_sampl = 86400. / ncpl_qsr_freq 
     136            rdt_sampl = rday / ncpl_qsr_freq 
    137137            nb_rec_per_day = ncpl_qsr_freq 
    138138         ELSE   
    139             rdt_sampl = MAX( 3600., rdt * nn_dttrc ) 
    140             nb_rec_per_day = INT( 86400 / rdt_sampl ) 
     139            rdt_sampl = MAX( 3600., rdttrc(1) ) 
     140            nb_rec_per_day = INT( rday / rdt_sampl ) 
    141141         ENDIF 
    142142         ! 
     
    152152         IF( ln_rsttr .AND. iom_varid( numrtr, 'qsr_mean' , ldstop = .FALSE. ) > 0 .AND. & 
    153153                            iom_varid( numrtr, 'qsr_arr_1', ldstop = .FALSE. ) > 0 .AND. & 
    154                             iom_varid( numrtr, 'zsecfst'  , ldstop = .FALSE. ) > 0 ) THEN  
    155             IF(lwp) WRITE(numout,*) 'trc_qsr_mean:   qsr_mean read in the restart file' 
     154                            iom_varid( numrtr, 'ktdcy'    , ldstop = .FALSE. ) > 0 ) THEN  
     155            CALL iom_get( numrtr, 'ktdcy', zkt )   !  A mean of qsr 
     156            rsecfst = INT( zkt ) * rdttrc(1) 
     157            IF(lwp) WRITE(numout,*) 'trc_qsr_mean:   qsr_mean read in the restart file at time-step rsecfst =', rsecfst, ' s ' 
    156158            CALL iom_get( numrtr, jpdom_autoglo, 'qsr_mean', qsr_mean )   !  A mean of qsr 
    157             CALL iom_get( numrtr, 'zsecfst', zsecfst )   !  A mean of qsr 
    158             isecfst = INT( zsecfst ) 
    159159            DO jn = 1, nb_rec_per_day  
    160160             IF( jn <= 9 )  THEN 
     
    168168         ELSE                                         !* no restart: set from nit000 values 
    169169            IF(lwp) WRITE(numout,*) 'trc_qsr_mean:   qsr_mean set to nit000 values' 
    170             isecfst  = nsec_year + nsec1jan000   !   number of seconds between Jan. 1st 00h of nit000 year and the middle of time step 
     170            rsecfst  = kt * rdttrc(1) 
    171171            ! 
    172172            qsr_mean(:,:) = qsr(:,:) 
     
    178178      ENDIF 
    179179      ! 
    180       iseclast = nsec_year + nsec1jan000 
    181       ! 
    182       llnew   = ( iseclast - isecfst )  > INT( rdt_sampl )   !   new shortwave to store 
     180      rseclast = kt * rdttrc(1) 
     181      ! 
     182      llnew   = ( rseclast - rsecfst ) .ge.  rdt_sampl    !   new shortwave to store 
    183183      IF( llnew ) THEN 
    184184          IF( lwp ) WRITE(numout,*) ' New shortwave to sample for TOP at time kt = ', kt, & 
    185              &                      ' time = ', (iseclast+rdt*nn_dttrc/2.)/3600.,'hours ' 
    186           isecfst = iseclast 
     185             &                      ' time = ', rseclast/3600.,'hours ' 
     186          rsecfst = rseclast 
    187187          DO jn = 1, nb_rec_per_day - 1 
    188188             qsr_arr(:,:,jn) = qsr_arr(:,:,jn+1) 
     
    196196         IF(lwp) WRITE(numout,*) 'trc_mean_qsr : write qsr_mean in restart file  kt =', kt 
    197197         IF(lwp) WRITE(numout,*) '~~~~~~~' 
     198         zkt = REAL( kt, wp ) 
     199         CALL iom_rstput( kt, nitrst, numrtw, 'ktdcy', zkt ) 
    198200          DO jn = 1, nb_rec_per_day  
    199201             IF( jn <= 9 )  THEN 
     
    206208         ENDDO 
    207209         CALL iom_rstput( kt, nitrst, numrtw, 'qsr_mean', qsr_mean(:,:) ) 
    208          zsecfst = REAL( isecfst, wp ) 
    209          CALL iom_rstput( kt, nitrst, numrtw, 'zsecfst', zsecfst ) 
    210210      ENDIF 
    211211      ! 
Note: See TracChangeset for help on using the changeset viewer.