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 12377 for NEMO/trunk/src/OCE/OBS/obs_oper.F90 – NEMO

Ignore:
Timestamp:
2020-02-12T15:39:06+01:00 (4 years 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:
2 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/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 
Note: See TracChangeset for help on using the changeset viewer.