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 10251 for branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/ASM/asmbkg.F90 – NEMO

Ignore:
Timestamp:
2018-10-29T15:20:26+01:00 (5 years ago)
Author:
kingr
Message:

Rolled back to r10247 - i.e., undid merge of pkg br and 3.6_stable br

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_AMM15_package/NEMOGCM/NEMO/OPA_SRC/ASM/asmbkg.F90

    r10249 r10251  
    5050   USE ice 
    5151#endif 
    52    USE asminc, ONLY: ln_avgbkg 
    5352   IMPLICIT NONE 
    5453   PRIVATE 
    5554    
    5655   PUBLIC   asm_bkg_wri   !: Write out the background state 
    57  
    58   !! * variables for calculating time means 
    59    REAL(wp),SAVE, ALLOCATABLE,   DIMENSION(:,:,:) ::   tn_tavg  , sn_tavg   
    60    REAL(wp),SAVE, ALLOCATABLE,   DIMENSION(:,:,:) ::   un_tavg  , vn_tavg 
    61    REAL(wp),SAVE, ALLOCATABLE,   DIMENSION(:,:,:) ::   avt_tavg 
    62 #if defined key_zdfgls || key_zdftke 
    63    REAL(wp),SAVE, ALLOCATABLE,   DIMENSION(:,:,:) ::   en_tavg 
    64 #endif 
    65    REAL(wp),SAVE, ALLOCATABLE,   DIMENSION(:,:)   ::   sshn_tavg 
    66    REAL(wp),SAVE :: numtimes_tavg     ! No of times to average over 
    6756 
    6857   !!---------------------------------------------------------------------- 
     
    9281      INTEGER :: inum          ! File unit number 
    9382      REAL(wp) :: zdate        ! Date 
    94       INTEGER :: ierror 
    9583      !!----------------------------------------------------------------------- 
    9684 
    97       ! If creating an averaged assim bkg, initialise on first timestep 
    98       IF ( ln_avgbkg .AND. kt == ( nn_it000 - 1) ) THEN 
    99          ! Allocate memory  
    100          ALLOCATE( tn_tavg(jpi,jpj,jpk), STAT=ierror ) 
    101          IF( ierror > 0 ) THEN 
    102             CALL ctl_stop( 'asm_wri_bkg: unable to allocate tn_tavg' )   ;   RETURN 
    103          ENDIF 
    104          tn_tavg(:,:,:)=0 
    105          ALLOCATE( sn_tavg(jpi,jpj,jpk), STAT=ierror ) 
    106          IF( ierror > 0 ) THEN 
    107             CALL ctl_stop( 'asm_wri_bkg: unable to allocate sn_tavg' )   ;   RETURN 
    108          ENDIF 
    109          sn_tavg(:,:,:)=0 
    110          ALLOCATE( un_tavg(jpi,jpj,jpk), STAT=ierror ) 
    111          IF( ierror > 0 ) THEN 
    112             CALL ctl_stop( 'asm_wri_bkg: unable to allocate un_tavg' )   ;   RETURN 
    113          ENDIF 
    114          un_tavg(:,:,:)=0 
    115          ALLOCATE( vn_tavg(jpi,jpj,jpk), STAT=ierror ) 
    116          IF( ierror > 0 ) THEN 
    117             CALL ctl_stop( 'asm_wri_bkg: unable to allocate vn_tavg' )   ;   RETURN 
    118          ENDIF 
    119          vn_tavg(:,:,:)=0 
    120          ALLOCATE( sshn_tavg(jpi,jpj), STAT=ierror ) 
    121          IF( ierror > 0 ) THEN 
    122             CALL ctl_stop( 'asm_wri_bkg: unable to allocate sshn_tavg' )   ;   RETURN 
    123          ENDIF 
    124          sshn_tavg(:,:)=0 
    125 #if defined key_zdftke 
    126          ALLOCATE( en_tavg(jpi,jpj,jpk), STAT=ierror ) 
    127          IF( ierror > 0 ) THEN 
    128             CALL ctl_stop( 'asm_wri_bkg: unable to allocate en_tavg' )   ;   RETURN 
    129          ENDIF 
    130          en_tavg(:,:,:)=0 
    131 #endif 
    132          ALLOCATE( avt_tavg(jpi,jpj,jpk), STAT=ierror ) 
    133          IF( ierror > 0 ) THEN 
    134             CALL ctl_stop( 'asm_wri_bkg: unable to allocate avt_tavg' )   ;   RETURN 
    135          ENDIF 
    136          avt_tavg(:,:,:)=0 
    137           
    138          numtimes_tavg = REAL ( nitavgbkg_r -  nn_it000 + 1 ) 
    139       ENDIF    
    140  
    141       ! If creating an averaged assim bkg, sum the contribution every timestep 
    142       IF ( ln_avgbkg ) THEN  
    143          IF (lwp) THEN 
    144               WRITE(numout,*) 'asm_wri_bkg : Summing assim bkg fields at timestep ',kt 
    145               WRITE(numout,*) '~~~~~~~~~~~~ ' 
    146          ENDIF 
    147  
    148          tn_tavg(:,:,:)        = tn_tavg(:,:,:) + tsn(:,:,:,jp_tem) / numtimes_tavg 
    149          sn_tavg(:,:,:)        = sn_tavg(:,:,:) + tsn(:,:,:,jp_sal) / numtimes_tavg 
    150          sshn_tavg(:,:)        = sshn_tavg(:,:) + sshn (:,:) / numtimes_tavg 
    151          un_tavg(:,:,:)        = un_tavg(:,:,:) + un(:,:,:) / numtimes_tavg 
    152          vn_tavg(:,:,:)        = vn_tavg(:,:,:) + vn(:,:,:) / numtimes_tavg 
    153          avt_tavg(:,:,:)        = avt_tavg(:,:,:) + avt(:,:,:) / numtimes_tavg 
    154 #if defined key_zdftke 
    155          en_tavg(:,:,:)       = en_tavg(:,:,:) + en(:,:,:) / numtimes_tavg 
    156 #endif 
    157       ENDIF 
    158       
    159  
    160       ! Write out background at time step nitbkg_r or nitavgbkg_r 
    161       IF ( ( .NOT. ln_avgbkg .AND. (kt == nitbkg_r) ) .OR. & 
    162       &          ( ln_avgbkg .AND. (kt == nitavgbkg_r) ) ) THEN 
     85      !                                !------------------------------------------- 
     86      IF( kt == nitbkg_r ) THEN        ! Write out background at time step nitbkg_r 
     87         !                             !-----------------------------------======== 
    16388         ! 
    16489         WRITE(cl_asmbkg, FMT='(A,".nc")' ) TRIM( c_asmbkg ) 
     
    17297            CALL iom_open( c_asmbkg, inum, ldwrt = .TRUE., kiolib = jprstlib) 
    17398            ! 
    174             ! 
    175             ! Write the information 
    176             IF ( ln_avgbkg ) THEN 
    177                IF( nitavgbkg_r == nit000 - 1 ) THEN      ! Treat special case when nitavgbkg = 0 
    178                   zdate = REAL( ndastp ) 
     99            IF( nitbkg_r == nit000 - 1 ) THEN      ! Treat special case when nitbkg = 0 
     100               zdate = REAL( ndastp ) 
    179101#if defined key_zdftke 
    180                   ! lk_zdftke=T :   Read turbulent kinetic energy ( en ) 
    181                   IF(lwp) WRITE(numout,*) ' Reading TKE (en) from restart...' 
    182                   CALL tke_rst( nit000, 'READ' )               ! lk_zdftke=T :   Read turbulent kinetic energy ( en ) 
     102               ! lk_zdftke=T :   Read turbulent kinetic energy ( en ) 
     103               IF(lwp) WRITE(numout,*) ' Reading TKE (en) from restart...' 
     104               CALL tke_rst( nit000, 'READ' )               ! lk_zdftke=T :   Read turbulent kinetic energy ( en ) 
    183105 
    184106#endif 
    185                ELSE 
    186                   zdate = REAL( ndastp ) 
    187                ENDIF 
    188                CALL iom_rstput( kt, nitavgbkg_r, inum, 'rdastp' , zdate   ) 
    189                CALL iom_rstput( kt, nitavgbkg_r, inum, 'un'     , un_tavg ) 
    190                CALL iom_rstput( kt, nitavgbkg_r, inum, 'vn'     , vn_tavg ) 
    191                CALL iom_rstput( kt, nitavgbkg_r, inum, 'tn'     , tn_tavg ) 
    192                CALL iom_rstput( kt, nitavgbkg_r, inum, 'sn'     , sn_tavg ) 
    193                CALL iom_rstput( kt, nitavgbkg_r, inum, 'sshn'   , sshn_tavg) 
     107            ELSE 
     108               zdate = REAL( ndastp ) 
     109            ENDIF 
     110            ! 
     111            !                                      ! Write the information 
     112            CALL iom_rstput( kt, nitbkg_r, inum, 'rdastp' , zdate             ) 
     113            CALL iom_rstput( kt, nitbkg_r, inum, 'un'     , un                ) 
     114            CALL iom_rstput( kt, nitbkg_r, inum, 'vn'     , vn                ) 
     115            CALL iom_rstput( kt, nitbkg_r, inum, 'tn'     , tsn(:,:,:,jp_tem) ) 
     116            CALL iom_rstput( kt, nitbkg_r, inum, 'sn'     , tsn(:,:,:,jp_sal) ) 
     117            CALL iom_rstput( kt, nitbkg_r, inum, 'sshn'   , sshn              ) 
    194118#if defined key_zdftke 
    195                CALL iom_rstput( kt, nitavgbkg_r, inum, 'en'     , en_tavg ) 
     119            CALL iom_rstput( kt, nitbkg_r, inum, 'en'     , en                ) 
    196120#endif 
    197                CALL iom_rstput( kt, nitavgbkg_r, inum, 'avt'    , avt_tavg) 
    198                ! 
    199             ELSE 
    200                IF( nitbkg_r == nit000 - 1 ) THEN      ! Treat special case when nitbkg = 0 
    201                   zdate = REAL( ndastp ) 
    202 #if defined key_zdftke 
    203                   ! lk_zdftke=T :   Read turbulent kinetic energy ( en ) 
    204                   IF(lwp) WRITE(numout,*) ' Reading TKE (en) from restart...' 
    205                   CALL tke_rst( nit000, 'READ' )               ! lk_zdftke=T :   Read turbulent kinetic energy ( en ) 
    206  
    207 #endif 
    208                ELSE 
    209                   zdate = REAL( ndastp ) 
    210                ENDIF 
    211                CALL iom_rstput( kt, nitbkg_r, inum, 'rdastp' , zdate   ) 
    212                CALL iom_rstput( kt, nitbkg_r, inum, 'un'     , un                ) 
    213                CALL iom_rstput( kt, nitbkg_r, inum, 'vn'     , vn                ) 
    214                CALL iom_rstput( kt, nitbkg_r, inum, 'tn'     , tsn(:,:,:,jp_tem) ) 
    215                CALL iom_rstput( kt, nitbkg_r, inum, 'sn'     , tsn(:,:,:,jp_sal) ) 
    216                CALL iom_rstput( kt, nitbkg_r, inum, 'sshn'   , sshn              ) 
    217 #if defined key_zdftke 
    218                CALL iom_rstput( kt, nitbkg_r, inum, 'en'     , en                ) 
    219 #endif 
    220                CALL iom_rstput( kt, nitbkg_r, inum, 'avt'    , avt               ) 
    221                ! 
    222             ENDIF 
    223              
     121            CALL iom_rstput( kt, nitbkg_r, inum, 'gcx'    , gcx               ) 
     122            ! 
    224123            CALL iom_close( inum ) 
    225  
    226124         ENDIF 
    227125         ! 
Note: See TracChangeset for help on using the changeset viewer.