Ignore:
Timestamp:
2020-02-12T15:39:06+01:00 (11 months ago)
Author:
acc
Message:

The big one. Merging all 2019 developments from the option 1 branch back onto the trunk.

This changeset reproduces 2019/dev_r11943_MERGE_2019 on the trunk using a 2-URL merge
onto a working copy of the trunk. I.e.:

svn merge —ignore-ancestry \

svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/trunk \
svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/branches/2019/dev_r11943_MERGE_2019 ./

The —ignore-ancestry flag avoids problems that may otherwise arise from the fact that
the merge history been trunk and branch may have been applied in a different order but
care has been taken before this step to ensure that all applicable fixes and updates
are present in the merge branch.

The trunk state just before this step has been branched to releases/release-4.0-HEAD
and that branch has been immediately tagged as releases/release-4.0.2. Any fixes
or additions in response to tickets on 4.0, 4.0.1 or 4.0.2 should be done on
releases/release-4.0-HEAD. From now on future 'point' releases (e.g. 4.0.2) will
remain unchanged with periodic releases as needs demand. Note release-4.0-HEAD is a
transitional naming convention. Future full releases, say 4.2, will have a release-4.2
branch which fulfills this role and the first point release (e.g. 4.2.0) will be made
immediately following the release branch creation.

2020 developments can be started from any trunk revision later than this one.

Location:
NEMO/trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
  • NEMO/trunk/src/OCE/OBS/diaobs.F90

    r11536 r12377  
    103103CONTAINS 
    104104 
    105    SUBROUTINE dia_obs_init 
     105   SUBROUTINE dia_obs_init( Kmm ) 
    106106      !!---------------------------------------------------------------------- 
    107107      !!                    ***  ROUTINE dia_obs_init  *** 
     
    114114      !! 
    115115      !!---------------------------------------------------------------------- 
    116       INTEGER, PARAMETER ::   jpmaxnfiles = 1000    ! Maximum number of files for each obs type 
     116      INTEGER, INTENT(in)                ::   Kmm                      ! ocean time level indices 
     117      INTEGER, PARAMETER                 ::   jpmaxnfiles = 1000       ! Maximum number of files for each obs type 
    117118      INTEGER, DIMENSION(:), ALLOCATABLE ::   ifilesprof, ifilessurf   ! Number of profile & surface files 
    118119      INTEGER :: ios             ! Local integer output status for namelist read 
     
    201202 
    202203      ! Read namelist namobs : control observation diagnostics 
    203       REWIND( numnam_ref )   ! Namelist namobs in reference namelist 
    204204      READ  ( numnam_ref, namobs, IOSTAT = ios, ERR = 901) 
    205205901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namobs in reference namelist' ) 
    206       REWIND( numnam_cfg )   ! Namelist namobs in configuration namelist 
    207206      READ  ( numnam_cfg, namobs, IOSTAT = ios, ERR = 902 ) 
    208207902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namobs in configuration namelist' ) 
     
    429428               &               jpi, jpj, jpk, & 
    430429               &               zmask1, zglam1, zgphi1, zmask2, zglam2, zgphi2,  & 
    431                &               ln_nea, ln_bound_reject, & 
     430               &               ln_nea, ln_bound_reject, Kmm, & 
    432431               &               kdailyavtypes = nn_profdavtypes ) 
    433432         END DO 
     
    459458            ! 
    460459            IF( TRIM(cobstypessurf(jtype)) == 'sla' ) THEN 
    461                CALL obs_rea_mdt( surfdataqc(jtype), n2dintsurf(jtype) ) 
     460               CALL obs_rea_mdt( surfdataqc(jtype), n2dintsurf(jtype), Kmm ) 
    462461               IF( ln_altbias )   & 
    463462                  & CALL obs_rea_altbias ( surfdataqc(jtype), n2dintsurf(jtype), cn_altbiasfile ) 
     
    483482 
    484483 
    485    SUBROUTINE dia_obs( kstp ) 
     484   SUBROUTINE dia_obs( kstp, Kmm ) 
    486485      !!---------------------------------------------------------------------- 
    487486      !!                    ***  ROUTINE dia_obs  *** 
     
    496495      !! ** Action  : 
    497496      !!---------------------------------------------------------------------- 
    498       USE dom_oce, ONLY : gdept_n, gdept_1d   ! Ocean space and time domain variables 
     497      USE dom_oce, ONLY : gdept, gdept_1d     ! Ocean space domain variables (Kmm time-level only) 
    499498      USE phycst , ONLY : rday                ! Physical constants 
    500       USE oce    , ONLY : tsn, un, vn, sshn   ! Ocean dynamics and tracers variables 
     499      USE oce    , ONLY : ts, uu, vv, ssh     ! Ocean dynamics and tracers variables (Kmm time-level only) 
    501500      USE phycst , ONLY : rday                ! Physical constants 
    502501#if defined  key_si3 
     
    511510      !! * Arguments 
    512511      INTEGER, INTENT(IN) :: kstp  ! Current timestep 
     512      INTEGER, INTENT(in) :: Kmm   ! ocean time level indices 
    513513      !! * Local declarations 
    514514      INTEGER :: idaystp           ! Number of timesteps per day 
     
    551551            SELECT CASE ( TRIM(cobstypesprof(jtype)) ) 
    552552            CASE('prof') 
    553                zprofvar1(:,:,:) = tsn(:,:,:,jp_tem) 
    554                zprofvar2(:,:,:) = tsn(:,:,:,jp_sal) 
     553               zprofvar1(:,:,:) = ts(:,:,:,jp_tem,Kmm) 
     554               zprofvar2(:,:,:) = ts(:,:,:,jp_sal,Kmm) 
    555555               zprofmask1(:,:,:) = tmask(:,:,:) 
    556556               zprofmask2(:,:,:) = tmask(:,:,:) 
     
    560560               zgphi2(:,:) = gphit(:,:) 
    561561            CASE('vel') 
    562                zprofvar1(:,:,:) = un(:,:,:) 
    563                zprofvar2(:,:,:) = vn(:,:,:) 
     562               zprofvar1(:,:,:) = uu(:,:,:,Kmm) 
     563               zprofvar2(:,:,:) = vv(:,:,:,Kmm) 
    564564               zprofmask1(:,:,:) = umask(:,:,:) 
    565565               zprofmask2(:,:,:) = vmask(:,:,:) 
     
    575575               &               nit000, idaystp,                         & 
    576576               &               zprofvar1, zprofvar2,                    & 
    577                &               gdept_n(:,:,:), gdepw_n(:,:,:),            &  
     577               &               gdept(:,:,:,Kmm), gdepw(:,:,:,Kmm),      &  
    578578               &               zprofmask1, zprofmask2,                  & 
    579579               &               zglam1, zglam2, zgphi1, zgphi2,          & 
     
    594594            SELECT CASE ( TRIM(cobstypessurf(jtype)) ) 
    595595            CASE('sst') 
    596                zsurfvar(:,:) = tsn(:,:,1,jp_tem) 
     596               zsurfvar(:,:) = ts(:,:,1,jp_tem,Kmm) 
    597597            CASE('sla') 
    598                zsurfvar(:,:) = sshn(:,:) 
     598               zsurfvar(:,:) = ssh(:,:,Kmm) 
    599599            CASE('sss') 
    600                zsurfvar(:,:) = tsn(:,:,1,jp_sal) 
     600               zsurfvar(:,:) = ts(:,:,1,jp_sal,Kmm) 
    601601            CASE('sic') 
    602602               IF ( kstp == 0 ) THEN 
  • NEMO/trunk/src/OCE/OBS/obs_averg_h2d.F90

    r10425 r12377  
    5252   SUBROUTINE obs_avg_h2d_init( kpk, kpk2, kmaxifp, kmaxjfp, k2dint, plam,  pphi, & 
    5353      &                         pglam, pgphi, pglamf, pgphif, pmask, plamscl, pphiscl, lindegrees, & 
    54       &                         pweig, pobsmask, iminpoints ) 
     54      &                         pweig, iminpoints ) 
    5555      !!----------------------------------------------------------------------- 
    5656      !! 
     
    9898      REAL(KIND=wp), DIMENSION(kmaxifp,kmaxjfp,kpk2), INTENT(OUT) ::  & 
    9999         & pweig                ! Weights for averaging 
    100       REAL(KIND=wp), DIMENSION(kpk2), INTENT(OUT) ::  & 
    101          & pobsmask             ! Vertical mask for observations 
    102100      INTEGER, INTENT(IN), OPTIONAL :: & 
    103101         & iminpoints           ! Reject point which is not surrounded 
  • NEMO/trunk/src/OCE/OBS/obs_oper.F90

    r10068 r12377  
    3131   INTEGER, PARAMETER, PUBLIC ::   imaxavtypes = 20   !: Max number of daily avgd obs types 
    3232 
     33   !! * Substitutions 
     34#  include "do_loop_substitute.h90" 
    3335   !!---------------------------------------------------------------------- 
    3436   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    187189         ! Initialize daily mean for first timestep of the day 
    188190         IF ( idayend == 1 .OR. kt == 0 ) THEN 
    189             DO jk = 1, jpk 
    190                DO jj = 1, jpj 
    191                   DO ji = 1, jpi 
    192                      prodatqc%vdmean(ji,jj,jk,1) = 0.0 
    193                      prodatqc%vdmean(ji,jj,jk,2) = 0.0 
    194                   END DO 
    195                END DO 
    196             END DO 
    197          ENDIF 
    198  
    199          DO jk = 1, jpk 
    200             DO jj = 1, jpj 
    201                DO ji = 1, jpi 
    202                   ! Increment field 1 for computing daily mean 
    203                   prodatqc%vdmean(ji,jj,jk,1) = prodatqc%vdmean(ji,jj,jk,1) & 
    204                      &                        + pvar1(ji,jj,jk) 
    205                   ! Increment field 2 for computing daily mean 
    206                   prodatqc%vdmean(ji,jj,jk,2) = prodatqc%vdmean(ji,jj,jk,2) & 
    207                      &                        + pvar2(ji,jj,jk) 
    208                END DO 
    209             END DO 
    210          END DO 
     191            DO_3D_11_11( 1, jpk ) 
     192               prodatqc%vdmean(ji,jj,jk,1) = 0.0 
     193               prodatqc%vdmean(ji,jj,jk,2) = 0.0 
     194            END_3D 
     195         ENDIF 
     196 
     197         DO_3D_11_11( 1, jpk ) 
     198            ! Increment field 1 for computing daily mean 
     199            prodatqc%vdmean(ji,jj,jk,1) = prodatqc%vdmean(ji,jj,jk,1) & 
     200               &                        + pvar1(ji,jj,jk) 
     201            ! Increment field 2 for computing daily mean 
     202            prodatqc%vdmean(ji,jj,jk,2) = prodatqc%vdmean(ji,jj,jk,2) & 
     203               &                        + pvar2(ji,jj,jk) 
     204         END_3D 
    211205 
    212206         ! Compute the daily mean at the end of day 
     
    215209            IF (lwp) WRITE(numout,*) 'Calculating prodatqc%vdmean on time-step: ',kt 
    216210            CALL FLUSH(numout) 
    217             DO jk = 1, jpk 
    218                DO jj = 1, jpj 
    219                   DO ji = 1, jpi 
    220                      prodatqc%vdmean(ji,jj,jk,1) = prodatqc%vdmean(ji,jj,jk,1) & 
    221                         &                        * zdaystp 
    222                      prodatqc%vdmean(ji,jj,jk,2) = prodatqc%vdmean(ji,jj,jk,2) & 
    223                         &                        * zdaystp 
    224                   END DO 
    225                END DO 
    226             END DO 
     211            DO_3D_11_11( 1, jpk ) 
     212               prodatqc%vdmean(ji,jj,jk,1) = prodatqc%vdmean(ji,jj,jk,1) & 
     213                  &                        * zdaystp 
     214               prodatqc%vdmean(ji,jj,jk,2) = prodatqc%vdmean(ji,jj,jk,2) & 
     215                  &                        * zdaystp 
     216            END_3D 
    227217         ENDIF 
    228218 
     
    342332            CALL obs_int_h2d_init( 1, 1, k2dint, zlam, zphi,     & 
    343333               &                   zglam2(:,:,iobs), zgphi2(:,:,iobs), & 
    344                &                   zmask2(:,:,1,iobs), zweig2, zmsk_2 ) 
     334               &                   zmask2(:,:,1,iobs), zweig2, zmsk_2) 
    345335  
    346336         ENDIF 
     
    760750         ! Initialize night-time mean for first timestep of the day 
    761751         IF ( idayend == 1 .OR. kt == 0 ) THEN 
    762             DO jj = 1, jpj 
    763                DO ji = 1, jpi 
    764                   surfdataqc%vdmean(ji,jj) = 0.0 
    765                   zmeanday(ji,jj) = 0.0 
    766                   icount_night(ji,jj) = 0 
    767                END DO 
    768             END DO 
     752            DO_2D_11_11 
     753               surfdataqc%vdmean(ji,jj) = 0.0 
     754               zmeanday(ji,jj) = 0.0 
     755               icount_night(ji,jj) = 0 
     756            END_2D 
    769757         ENDIF 
    770758 
     
    773761         imask_night(:,:) = INT( zouttmp(:,:) ) 
    774762 
    775          DO jj = 1, jpj 
    776             DO ji = 1, jpi 
    777                ! Increment the temperature field for computing night mean and counter 
    778                surfdataqc%vdmean(ji,jj) = surfdataqc%vdmean(ji,jj)  & 
    779                       &                    + psurf(ji,jj) * REAL( imask_night(ji,jj) ) 
    780                zmeanday(ji,jj)          = zmeanday(ji,jj) + psurf(ji,jj) 
    781                icount_night(ji,jj)      = icount_night(ji,jj) + imask_night(ji,jj) 
    782             END DO 
    783          END DO 
     763         DO_2D_11_11 
     764            ! Increment the temperature field for computing night mean and counter 
     765            surfdataqc%vdmean(ji,jj) = surfdataqc%vdmean(ji,jj)  & 
     766                   &                    + psurf(ji,jj) * REAL( imask_night(ji,jj) ) 
     767            zmeanday(ji,jj)          = zmeanday(ji,jj) + psurf(ji,jj) 
     768            icount_night(ji,jj)      = icount_night(ji,jj) + imask_night(ji,jj) 
     769         END_2D 
    784770 
    785771         ! Compute the night-time mean at the end of the day 
     
    787773         IF ( idayend == 0 ) THEN 
    788774            IF (lwp) WRITE(numout,*) 'Calculating surfdataqc%vdmean on time-step: ',kt 
    789             DO jj = 1, jpj 
    790                DO ji = 1, jpi 
    791                   ! Test if "no night" point 
    792                   IF ( icount_night(ji,jj) > 0 ) THEN 
    793                      surfdataqc%vdmean(ji,jj) = surfdataqc%vdmean(ji,jj) & 
    794                        &                        / REAL( icount_night(ji,jj) ) 
    795                   ELSE 
    796                      !At locations where there is no night (e.g. poles), 
    797                      ! calculate daily mean instead of night-time mean. 
    798                      surfdataqc%vdmean(ji,jj) = zmeanday(ji,jj) * zdaystp 
    799                   ENDIF 
    800                END DO 
    801             END DO 
     775            DO_2D_11_11 
     776               ! Test if "no night" point 
     777               IF ( icount_night(ji,jj) > 0 ) THEN 
     778                  surfdataqc%vdmean(ji,jj) = surfdataqc%vdmean(ji,jj) & 
     779                    &                        / REAL( icount_night(ji,jj) ) 
     780               ELSE 
     781                  !At locations where there is no night (e.g. poles), 
     782                  ! calculate daily mean instead of night-time mean. 
     783                  surfdataqc%vdmean(ji,jj) = zmeanday(ji,jj) * zdaystp 
     784               ENDIF 
     785            END_2D 
    802786         ENDIF 
    803787 
     
    924908               &                   zglamf(:,:,iobs), zgphif(:,:,iobs), & 
    925909               &                   zmask(:,:,iobs), plamscl, pphiscl, & 
    926                &                   lindegrees, zweig, zobsmask ) 
     910               &                   lindegrees, zweig ) 
    927911 
    928912            ! Average the model SST to the observation footprint 
  • NEMO/trunk/src/OCE/OBS/obs_prep.F90

    r10068 r12377  
    244244      &                     kpi, kpj, kpk, & 
    245245      &                     zmask1, pglam1, pgphi1, zmask2, pglam2, pgphi2,  & 
    246       &                     ld_nea, ld_bound_reject, kdailyavtypes,  kqc_cutoff ) 
     246      &                     ld_nea, ld_bound_reject, Kmm, kdailyavtypes,  kqc_cutoff ) 
    247247 
    248248!!---------------------------------------------------------------------- 
     
    274274      LOGICAL, INTENT(IN) :: ld_bound_reject      ! Switch for rejecting observations near the boundary 
    275275      INTEGER, INTENT(IN) :: kpi, kpj, kpk        ! Local domain sizes 
     276      INTEGER, INTENT(IN) :: Kmm                  ! time-level index 
    276277      INTEGER, DIMENSION(imaxavtypes), OPTIONAL :: & 
    277278         & kdailyavtypes                          ! Types for daily averages 
     
    420421         &                 inlav1obs,             ld_nea,               & 
    421422         &                 ibdyv1obs,             ld_bound_reject,      & 
    422          &                 iqc_cutoff       ) 
     423         &                 iqc_cutoff,            Kmm                 ) 
    423424 
    424425      CALL obs_mpp_sum_integer( iosdv1obs, iosdv1obsmpp ) 
     
    442443         &                 inlav2obs,             ld_nea,               & 
    443444         &                 ibdyv2obs,             ld_bound_reject,      & 
    444          &                 iqc_cutoff       ) 
     445         &                 iqc_cutoff,            Kmm                 ) 
    445446 
    446447      CALL obs_mpp_sum_integer( iosdv2obs, iosdv2obsmpp ) 
     
    10941095      &                       klanobs, knlaobs, ld_nea,         & 
    10951096      &                       kbdyobs, ld_bound_reject,         & 
    1096       &                       kqc_cutoff                        ) 
     1097      &                       kqc_cutoff,       Kmm             ) 
    10971098      !!---------------------------------------------------------------------- 
    10981099      !!                    ***  ROUTINE obs_coo_spc_3d  *** 
     
    11161117      !!---------------------------------------------------------------------- 
    11171118      !! * Modules used 
    1118       USE dom_oce, ONLY : &       ! Geographical information 
     1119      USE dom_oce, ONLY : &       ! Geographical information  
    11191120         & gdepw_1d,      & 
    11201121         & gdepw_0,       &                        
    1121          & gdepw_n,       & 
    1122          & gdept_n,       & 
     1122         & gdepw       & 
     1123         & gdept       & 
    11231124         & ln_zco,        & 
    11241125         & ln_zps              
     
    11601161      LOGICAL, INTENT(IN) :: ld_bound_reject  ! Flag observations near open boundary 
    11611162      INTEGER, INTENT(IN) :: kqc_cutoff     ! Cutoff QC value 
     1163      INTEGER, INTENT(IN) :: Kmm            ! time-level index 
    11621164 
    11631165      !! * Local declarations 
     
    12301232      CALL obs_int_comm_2d( 2, 2, kprofno, kpi, kpj, igrdi, igrdj, plam, zglam ) 
    12311233      CALL obs_int_comm_2d( 2, 2, kprofno, kpi, kpj, igrdi, igrdj, pphi, zgphi ) 
    1232       CALL obs_int_comm_3d( 2, 2, kprofno, kpi, kpj, kpk, igrdi, igrdj, gdepw_n(:,:,:), & 
     1234      CALL obs_int_comm_3d( 2, 2, kprofno, kpi, kpj, kpk, igrdi, igrdj, gdepw(:,:,:,Kmm), & 
    12331235        &                     zgdepw ) 
    12341236 
  • NEMO/trunk/src/OCE/OBS/obs_read_altbias.F90

    r10068 r12377  
    2929      & gphit 
    3030   USE oce, ONLY : &           ! Model variables 
    31       & sshn 
     31      & ssh 
    3232   USE obs_inter_h2d 
    3333   USE obs_utils               ! Various observation tools 
  • NEMO/trunk/src/OCE/OBS/obs_readmdt.F90

    r10425 r12377  
    2525      &                    tmask, tmask_i, e1e2t, gphit, glamt 
    2626   USE obs_const, ONLY :   obfillflt      ! Fillvalue 
    27    USE oce      , ONLY :   sshn           ! Model variables 
     27   USE oce      , ONLY :   ssh            ! Model variables 
    2828 
    2929   IMPLICIT NONE 
     
    3737   REAL(wp), PUBLIC :: rn_mdtcutoff = 65.0_wp  ! MDT cutoff for computed correction 
    3838 
     39   !! * Substitutions 
     40#  include "do_loop_substitute.h90" 
    3941   !!---------------------------------------------------------------------- 
    4042   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    4446CONTAINS 
    4547 
    46    SUBROUTINE obs_rea_mdt( sladata, k2dint ) 
     48   SUBROUTINE obs_rea_mdt( sladata, k2dint, Kmm ) 
    4749      !!--------------------------------------------------------------------- 
    4850      !! 
     
    5961      TYPE(obs_surf), INTENT(inout) ::   sladata   ! SLA data 
    6062      INTEGER       , INTENT(in)    ::   k2dint    ! ? 
     63      INTEGER       , INTENT(in)    ::   Kmm       ! ? 
    6164      ! 
    6265      CHARACTER(LEN=12), PARAMETER ::   cpname  = 'obs_rea_mdt' 
     
    106109      ! Remove the offset between the MDT used with the sla and the model MDT 
    107110      IF( nn_msshc == 1 .OR. nn_msshc == 2 ) & 
    108          & CALL obs_offset_mdt( jpi, jpj, z_mdt, zfill ) 
     111         & CALL obs_offset_mdt( jpi, jpj, z_mdt, zfill, Kmm ) 
    109112 
    110113      ! Intepolate the MDT already on the model grid at the observation point 
     
    169172 
    170173 
    171    SUBROUTINE obs_offset_mdt( kpi, kpj, mdt, zfill ) 
     174   SUBROUTINE obs_offset_mdt( kpi, kpj, mdt, zfill, Kmm ) 
    172175      !!--------------------------------------------------------------------- 
    173176      !! 
     
    183186      !!---------------------------------------------------------------------- 
    184187      INTEGER, INTENT(IN) ::  kpi, kpj 
     188      INTEGER, INTENT(IN) ::  Kmm 
    185189      REAL(wp), DIMENSION(kpi,kpj), INTENT(INOUT) ::   mdt     ! MDT used on the model grid 
    186190      REAL(wp)                    , INTENT(IN   ) ::   zfill  
     
    211215      zeta2 = 0.0 
    212216 
    213       DO jj = 1, jpj 
    214          DO ji = 1, jpi 
    215           zdxdy = e1e2t(ji,jj) * zpromsk(ji,jj) 
    216           zarea = zarea + zdxdy 
    217           zeta1 = zeta1 + mdt(ji,jj) * zdxdy 
    218           zeta2 = zeta2 + sshn (ji,jj) * zdxdy 
    219         END DO       
    220       END DO 
     217      DO_2D_11_11 
     218       zdxdy = e1e2t(ji,jj) * zpromsk(ji,jj) 
     219       zarea = zarea + zdxdy 
     220       zeta1 = zeta1 + mdt(ji,jj) * zdxdy 
     221       zeta2 = zeta2 + ssh(ji,jj,Kmm) * zdxdy 
     222      END_2D 
    221223 
    222224      CALL mpp_sum( 'obs_readmdt', zeta1 ) 
  • NEMO/trunk/src/OCE/OBS/obs_sstbias.F90

    r9023 r12377  
    2828      & glamt 
    2929   USE oce, ONLY : &           ! Model variables 
    30       & sshn 
     30      & ssh 
    3131   USE obs_inter_h2d 
    3232   USE obs_utils               ! Various observation tools 
  • NEMO/trunk/src/OCE/OBS/obs_write.F90

    r10425 r12377  
    4646   END TYPE obswriinfo 
    4747 
     48   !! * Substitutions 
     49#  include "do_loop_substitute.h90" 
    4850   !!---------------------------------------------------------------------- 
    4951   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
Note: See TracChangeset for help on using the changeset viewer.