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 15398 – NEMO

Changeset 15398


Ignore:
Timestamp:
2021-10-19T10:49:42+02:00 (3 years ago)
Author:
timgraham
Message:

Bug fix for #2717 (missing calls to asm_bkg_wri)

Location:
NEMO/trunk/src/OCE
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/ASM/asmbkg.F90

    r12377 r15398  
    7474      !!----------------------------------------------------------------------- 
    7575 
    76       !                                !------------------------------------------- 
    77       IF( kt == nitbkg_r ) THEN        ! Write out background at time step nitbkg_r 
    78          !                             !-----------------------------------======== 
    79          ! 
    80          WRITE(cl_asmbkg, FMT='(A,".nc")' ) TRIM( c_asmbkg ) 
    81          cl_asmbkg = TRIM( cl_asmbkg ) 
    82          INQUIRE( FILE = cl_asmbkg, EXIST = llok ) 
    83          ! 
    84          IF( .NOT. llok ) THEN 
    85             IF(lwp) WRITE(numout,*) ' Setting up assimilation background file '// TRIM( c_asmbkg ) 
    86             ! 
    87             !                                      ! Define the output file         
    88             CALL iom_open( c_asmbkg, inum, ldwrt = .TRUE. ) 
    89             ! 
    90             IF( nitbkg_r == nit000 - 1 ) THEN      ! Treat special case when nitbkg = 0 
    91                zdate = REAL( ndastp ) 
    92                IF( ln_zdftke ) THEN                   ! read turbulent kinetic energy ( en ) 
    93                   IF(lwp) WRITE(numout,*) ' Reading TKE (en) from restart...' 
    94                   CALL tke_rst( nit000, 'READ' ) 
    95                ENDIF 
    96             ELSE 
    97                zdate = REAL( ndastp ) 
    98             ENDIF 
    99             ! 
    100             !                                      ! Write the information 
    101             CALL iom_rstput( kt, nitbkg_r, inum, 'rdastp' , zdate                ) 
    102             CALL iom_rstput( kt, nitbkg_r, inum, 'un'     , uu(:,:,:,Kmm)        ) 
    103             CALL iom_rstput( kt, nitbkg_r, inum, 'vn'     , vv(:,:,:,Kmm)        ) 
    104             CALL iom_rstput( kt, nitbkg_r, inum, 'tn'     , ts(:,:,:,jp_tem,Kmm) ) 
    105             CALL iom_rstput( kt, nitbkg_r, inum, 'sn'     , ts(:,:,:,jp_sal,Kmm) ) 
    106             CALL iom_rstput( kt, nitbkg_r, inum, 'sshn'   , ssh(:,:,Kmm)         ) 
    107             IF( ln_zdftke )   CALL iom_rstput( kt, nitbkg_r, inum, 'en'     , en ) 
    108             ! 
    109             CALL iom_close( inum ) 
    110          ENDIF 
    111          ! 
    112       ENDIF 
    11376 
    114       !                                !------------------------------------------- 
    115       IF( kt == nitdin_r ) THEN        ! Write out background at time step nitdin_r 
    116          !                             !-----------------------------------======== 
    117          ! 
    118          WRITE(cl_asmdin, FMT='(A,".nc")' ) TRIM( c_asmdin ) 
    119          cl_asmdin = TRIM( cl_asmdin ) 
    120          INQUIRE( FILE = cl_asmdin, EXIST = llok ) 
    121          ! 
    122          IF( .NOT. llok ) THEN 
    123             IF(lwp) WRITE(numout,*) ' Setting up assimilation background file '// TRIM( c_asmdin ) 
    124             ! 
    125             !                                      ! Define the output file         
    126             CALL iom_open( c_asmdin, inum, ldwrt = .TRUE. ) 
    127             ! 
    128             IF( nitdin_r == nit000 - 1 ) THEN      ! Treat special case when nitbkg = 0 
    129  
    130                zdate = REAL( ndastp ) 
    131             ELSE 
    132                zdate = REAL( ndastp ) 
    133             ENDIF 
    134             ! 
    135             !                                      ! Write the information 
    136             CALL iom_rstput( kt, nitdin_r, inum, 'rdastp' , zdate                ) 
    137             CALL iom_rstput( kt, nitdin_r, inum, 'un'     , uu(:,:,:,Kmm)        ) 
    138             CALL iom_rstput( kt, nitdin_r, inum, 'vn'     , vv(:,:,:,Kmm)        ) 
    139             CALL iom_rstput( kt, nitdin_r, inum, 'tn'     , ts(:,:,:,jp_tem,Kmm) ) 
    140             CALL iom_rstput( kt, nitdin_r, inum, 'sn'     , ts(:,:,:,jp_sal,Kmm) ) 
    141             CALL iom_rstput( kt, nitdin_r, inum, 'sshn'   , ssh(:,:,Kmm)         ) 
    142 #if defined key_si3 
    143             IF( nn_ice == 2 ) THEN 
    144                IF( ALLOCATED(at_i) ) THEN 
    145                   CALL iom_rstput( kt, nitdin_r, inum, 'iceconc', at_i(:,:)   ) 
    146                ELSE 
    147                   CALL ctl_warn('asm_bkg_wri: Ice concentration not written to background ',   & 
    148                      &          'as ice variable at_i not allocated on this timestep') 
    149                ENDIF 
    150             ENDIF 
    151 #endif 
    152             ! 
    153             CALL iom_close( inum ) 
    154          ENDIF 
    155          ! 
    156       ENDIF 
     77      IF( .NOT. l_istiled .OR. ntile == nijtile ) THEN                       ! Do only on the last tile 
     78          !                                !------------------------------------------- 
     79          IF( kt == nitbkg_r ) THEN        ! Write out background at time step nitbkg_r 
     80             !                             !-----------------------------------======== 
     81             ! 
     82             WRITE(cl_asmbkg, FMT='(A,".nc")' ) TRIM( c_asmbkg ) 
     83             cl_asmbkg = TRIM( cl_asmbkg ) 
     84             INQUIRE( FILE = cl_asmbkg, EXIST = llok ) 
     85             ! 
     86             IF( .NOT. llok ) THEN 
     87                IF(lwp) WRITE(numout,*) ' Setting up assimilation background file '// TRIM( c_asmbkg ) 
     88                ! 
     89                !                                      ! Define the output file         
     90                CALL iom_open( c_asmbkg, inum, ldwrt = .TRUE. ) 
     91                ! 
     92                IF( nitbkg_r == nit000 - 1 ) THEN      ! Treat special case when nitbkg = 0 
     93                   zdate = REAL( ndastp ) 
     94                   IF( ln_zdftke ) THEN                   ! read turbulent kinetic energy ( en ) 
     95                      IF(lwp) WRITE(numout,*) ' Reading TKE (en) from restart...' 
     96                      CALL tke_rst( nit000, 'READ' ) 
     97                   ENDIF 
     98                ELSE 
     99                   zdate = REAL( ndastp ) 
     100                ENDIF 
     101                ! 
     102                !                                      ! Write the information 
     103                CALL iom_rstput( kt, nitbkg_r, inum, 'rdastp' , zdate                ) 
     104                CALL iom_rstput( kt, nitbkg_r, inum, 'un'     , uu(:,:,:,Kmm)        ) 
     105                CALL iom_rstput( kt, nitbkg_r, inum, 'vn'     , vv(:,:,:,Kmm)        ) 
     106                CALL iom_rstput( kt, nitbkg_r, inum, 'tn'     , ts(:,:,:,jp_tem,Kmm) ) 
     107                CALL iom_rstput( kt, nitbkg_r, inum, 'sn'     , ts(:,:,:,jp_sal,Kmm) ) 
     108                CALL iom_rstput( kt, nitbkg_r, inum, 'sshn'   , ssh(:,:,Kmm)         ) 
     109                IF( ln_zdftke )   CALL iom_rstput( kt, nitbkg_r, inum, 'en'     , en ) 
     110                ! 
     111                CALL iom_close( inum ) 
     112             ENDIF 
     113             ! 
     114          ENDIF 
     115     
     116          !                                !------------------------------------------- 
     117          IF( kt == nitdin_r ) THEN        ! Write out background at time step nitdin_r 
     118             !                             !-----------------------------------======== 
     119             ! 
     120             WRITE(cl_asmdin, FMT='(A,".nc")' ) TRIM( c_asmdin ) 
     121             cl_asmdin = TRIM( cl_asmdin ) 
     122             INQUIRE( FILE = cl_asmdin, EXIST = llok ) 
     123             ! 
     124             IF( .NOT. llok ) THEN 
     125                IF(lwp) WRITE(numout,*) ' Setting up assimilation background file '// TRIM( c_asmdin ) 
     126                ! 
     127                !                                      ! Define the output file         
     128                CALL iom_open( c_asmdin, inum, ldwrt = .TRUE. ) 
     129                ! 
     130                IF( nitdin_r == nit000 - 1 ) THEN      ! Treat special case when nitbkg = 0 
     131     
     132                   zdate = REAL( ndastp ) 
     133                ELSE 
     134                   zdate = REAL( ndastp ) 
     135                ENDIF 
     136                ! 
     137                !                                      ! Write the information 
     138                CALL iom_rstput( kt, nitdin_r, inum, 'rdastp' , zdate                ) 
     139                CALL iom_rstput( kt, nitdin_r, inum, 'un'     , uu(:,:,:,Kmm)        ) 
     140                CALL iom_rstput( kt, nitdin_r, inum, 'vn'     , vv(:,:,:,Kmm)        ) 
     141                CALL iom_rstput( kt, nitdin_r, inum, 'tn'     , ts(:,:,:,jp_tem,Kmm) ) 
     142                CALL iom_rstput( kt, nitdin_r, inum, 'sn'     , ts(:,:,:,jp_sal,Kmm) ) 
     143                CALL iom_rstput( kt, nitdin_r, inum, 'sshn'   , ssh(:,:,Kmm)         ) 
     144    #if defined key_si3 
     145                IF( nn_ice == 2 ) THEN 
     146                  IF( ALLOCATED(at_i) ) THEN 
     147                      CALL iom_rstput( kt, nitdin_r, inum, 'iceconc', at_i(:,:)   ) 
     148                   ELSE 
     149                     CALL ctl_warn('asm_bkg_wri: Ice concentration not written to background ',   & 
     150                        &          'as ice variable at_i not allocated on this timestep') 
     151                  ENDIF 
     152                ENDIF 
     153    #endif 
     154                ! 
     155                CALL iom_close( inum ) 
     156             ENDIF 
     157             ! 
     158          ENDIF 
     159      ENDIF ! check for last tile 
    157160      !                     
    158161   END SUBROUTINE asm_bkg_wri 
  • NEMO/trunk/src/OCE/step.F90

    r15005 r15398  
    229229         IF(  lk_asminc .AND. ln_asmiau .AND. ln_dyninc )   & 
    230230                  &         CALL dyn_asm_inc   ( kstp, Nbb, Nnn, uu, vv, Nrhs )  ! apply dynamics assimilation increment 
     231         IF( ln_bkgwri )    CALL asm_bkg_wri( kstp, Nnn )     ! output background fields 
    231232         IF( ln_bdy     )   CALL bdy_dyn3d_dmp ( kstp, Nbb,      uu, vv, Nrhs )  ! bdy damping trends 
    232233#if defined key_agrif 
  • NEMO/trunk/src/OCE/stpmlf.F90

    r15386 r15398  
    241241         IF(  lk_asminc .AND. ln_asmiau .AND. ln_dyninc )   & 
    242242                  &         CALL dyn_asm_inc   ( kstp, Nbb, Nnn, uu, vv, Nrhs )  ! apply dynamics assimilation increment 
     243         IF( ln_bkgwri )    CALL asm_bkg_wri( kstp, Nnn )     ! output background fields 
    243244         IF( ln_bdy     )   CALL bdy_dyn3d_dmp ( kstp, Nbb,      uu, vv, Nrhs )  ! bdy damping trends 
    244245#if defined key_agrif 
Note: See TracChangeset for help on using the changeset viewer.