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 7829 for branches/UKMO/dev_r5518_nemo_fabm_ukmo/NEMOGCM/NEMO/TOP_SRC/trcstp.F90 – NEMO

Ignore:
Timestamp:
2017-03-23T15:36:14+01:00 (7 years ago)
Author:
dford
Message:

Add a version of the NEMO-FABM coupling code. In theory, this should give equivalent results to PML gitlab commit 2e51db55.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_nemo_fabm_ukmo/NEMOGCM/NEMO/TOP_SRC/trcstp.F90

    r7827 r7829  
    3232   REAL(wp), DIMENSION(:,:,:), SAVE, ALLOCATABLE ::   qsr_arr ! save qsr during TOP time-step 
    3333   REAL(wp) :: rdt_sampl 
    34    INTEGER  :: nb_rec_per_days 
     34   INTEGER  :: nb_rec_per_day 
    3535   INTEGER  :: isecfst, iseclast 
    3636   LOGICAL  :: llnew 
     
    100100         IF( lrst_trc )            CALL trc_rst_wri  ( kt )       ! write tracer restart file 
    101101         IF( lk_trdmxl_trc  )      CALL trd_mxl_trc  ( kt )       ! trends: Mixed-layer 
     102#if defined key_tracer_budget 
     103!slwa tracer budget 
     104         IF( lk_iomput ) CALL trc_wri (kt, 2)  
     105#endif 
    102106         ! 
    103107         IF( nn_dttrc /= 1   )     CALL trc_sub_reset( kt )       ! resetting physical variables when sub-stepping 
     
    123127      !!               of diurnal cycle 
    124128      !! 
    125       !! ** Method  : store in TOP the qsr every hour ( or every time-step the latter  
     129      !! ** Method  : store in TOP the qsr every hour ( or every time-step if the latter  
    126130      !!              is greater than 1 hour ) and then, compute the  mean with  
    127131      !!              a moving average over 24 hours.  
     
    134138         IF( ln_cpl )  THEN   
    135139            rdt_sampl = 86400. / ncpl_qsr_freq 
    136             nb_rec_per_days = ncpl_qsr_freq 
     140            nb_rec_per_day = ncpl_qsr_freq 
    137141         ELSE   
    138142            rdt_sampl = MAX( 3600., rdt * nn_dttrc ) 
    139             nb_rec_per_days = INT( 86400 / rdt_sampl ) 
     143            nb_rec_per_day = INT( 86400 / rdt_sampl ) 
    140144         ENDIF 
    141145         ! 
    142146         IF( lwp ) THEN 
    143147            WRITE(numout,*)  
    144             WRITE(numout,*) ' Sampling frequency dt = ', rdt_sampl, 's','   Number of sampling per day  nrec = ', nb_rec_per_days 
     148            WRITE(numout,*) ' Sampling frequency dt = ', rdt_sampl, 's','   Number of sampling per day  nrec = ', nb_rec_per_day 
    145149            WRITE(numout,*)  
    146150         ENDIF 
    147151         ! 
    148          ALLOCATE( qsr_arr(jpi,jpj,nb_rec_per_days ) ) 
    149          DO jn = 1, nb_rec_per_days 
    150             qsr_arr(:,:,jn) = qsr(:,:) 
     152         !                                            !* Restart: read in restart file 
     153         IF( ln_rsttr .AND. iom_varid( numrtr, 'qsr_mean', ldstop = .FALSE. ) > 0 ) THEN  
     154            IF(lwp) WRITE(numout,*) 'trc_qsr_mean:   qsr_mean read in the restart file' 
     155            CALL iom_get( numrtr, jpdom_autoglo, 'qsr_mean', qsr_mean )   !  A mean of qsr 
     156         ELSE                                         !* no restart: set from nit000 values 
     157            IF(lwp) WRITE(numout,*) 'trc_qsr_mean:   qsr_mean set to nit000 values' 
     158            qsr_mean(:,:) = qsr(:,:) 
     159         ENDIF 
     160         ! 
     161         ALLOCATE( qsr_arr(jpi,jpj,nb_rec_per_day ) ) 
     162         DO jn = 1, nb_rec_per_day 
     163             qsr_arr(:,:,jn) = qsr_mean(:,:) 
    151164         ENDDO 
    152          qsr_mean(:,:) = qsr(:,:) 
    153165         ! 
    154166         isecfst  = nsec_year + nsec1jan000   !   number of seconds between Jan. 1st 00h of nit000 year and the middle of time step 
     
    163175             &                      ' time = ', (iseclast+rdt*nn_dttrc/2.)/3600.,'hours ' 
    164176          isecfst = iseclast 
    165           DO jn = 1, nb_rec_per_days - 1 
     177          DO jn = 1, nb_rec_per_day - 1 
    166178             qsr_arr(:,:,jn) = qsr_arr(:,:,jn+1) 
    167179          ENDDO 
    168           qsr_arr (:,:,nb_rec_per_days) = qsr(:,:) 
    169           qsr_mean(:,:                ) = SUM( qsr_arr(:,:,:), 3 ) / nb_rec_per_days 
    170       ENDIF 
    171       ! 
     180          qsr_arr (:,:,nb_rec_per_day) = qsr(:,:) 
     181          qsr_mean(:,:                ) = SUM( qsr_arr(:,:,:), 3 ) / nb_rec_per_day 
     182      ENDIF 
     183      ! 
     184      IF( lrst_trc ) THEN    !* Write the mean of qsr in restart file  
     185         IF(lwp) WRITE(numout,*) 
     186         IF(lwp) WRITE(numout,*) 'trc_mean_qsr : write qsr_mean in restart file  kt =', kt 
     187         IF(lwp) WRITE(numout,*) '~~~~~~~' 
     188         CALL iom_rstput( kt, nitrst, numrtw, 'qsr_mean', qsr_mean(:,:) ) 
     189      ENDIF 
     190     ! 
    172191   END SUBROUTINE trc_mean_qsr 
    173192 
Note: See TracChangeset for help on using the changeset viewer.