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 12928 for NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/OCE/OBS/obs_oper.F90 – NEMO

Ignore:
Timestamp:
2020-05-14T21:46:00+02:00 (4 years ago)
Author:
smueller
Message:

Synchronizing with /NEMO/trunk@12925 (ticket #2170)

Location:
NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser

    • Property svn:externals
      •  

        old new  
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
         8 
         9# SETTE 
         10^/utils/CI/sette@HEAD         sette 
  • NEMO/branches/2019/dev_r11078_OSMOSIS_IMMERSE_Nurser/src/OCE/OBS/obs_oper.F90

    r10068 r12928  
    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.