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 14149 for NEMO – NEMO

Changeset 14149 for NEMO


Ignore:
Timestamp:
2020-12-10T15:43:37+01:00 (3 years ago)
Author:
smueller
Message:

Addition of timer instructions to the subroutines of module zdfosm (ticket #2353)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r14122_ENHANCE-14_smueller_OSMOSIS_streamlining/src/OCE/ZDF/zdfosm.F90

    r14072 r14149  
    6767   USE prtctl         ! Print control 
    6868   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 
     69   USE timing, ONLY : timing_start, timing_stop   ! Timer 
    6970 
    7071   IMPLICIT NONE 
     
    346347      !!-------------------------------------------------------------------- 
    347348      ! 
     349      IF( ln_timing ) CALL timing_start('zdf_osm') 
    348350      ibld(:,:)   = 0     ; imld(:,:)  = 0 
    349351      zrad0(:,:)  = 0._wp ; zradh(:,:) = 0._wp ; zradav(:,:)    = 0._wp ; zustar(:,:)    = 0._wp 
     
    12511253 
    12521254      END IF 
     1255      IF( ln_timing ) CALL timing_stop('zdf_osm') 
    12531256 
    12541257CONTAINS 
     
    12801283      REAL(wp), PARAMETER :: rn_vispyc_shr = 0.15 
    12811284 
     1285      IF( ln_timing ) CALL timing_start('zdf_osm_dv') 
    12821286      DO_2D( 0, 0, 0, 0 ) 
    12831287          IF ( lconv(ji,jj) ) THEN 
     
    13831387          ! 
    13841388       END_2D 
     1389      IF( ln_timing ) CALL timing_stop('zdf_osm_dv') 
    13851390 
    13861391  END SUBROUTINE zdf_osm_diffusivity_viscosity 
     
    14211426     REAL, PARAMETER :: zrot=0._wp  ! dummy rotation rate of surface stress. 
    14221427 
     1428     IF( ln_timing ) CALL timing_start('zdf_osm_os') 
    14231429! Determins stability and set flag lconv 
    14241430     DO_2D( 0, 0, 0, 0 ) 
     
    15311537      ENDIF    ! lshear 
    15321538     END_2D 
     1539     IF( ln_timing ) CALL timing_stop('zdf_osm_os') 
    15331540   END SUBROUTINE zdf_osm_osbl_state 
    15341541 
     
    15581565 
    15591566 
     1567        IF( ln_timing ) CALL timing_start('zdf_osm_va') 
    15601568        zt   = 0._wp 
    15611569        zs   = 0._wp 
     
    16001608         ENDIF 
    16011609        END_2D 
     1610     IF( ln_timing ) CALL timing_stop('zdf_osm_va') 
    16021611   END SUBROUTINE zdf_osm_vertical_average 
    16031612 
     
    16191628        REAL(wp) :: ztemp 
    16201629 
     1630        IF( ln_timing ) CALL timing_start('zdf_osm_vr') 
    16211631        DO_2D( 0, 0, 0, 0 ) 
    16221632           ztemp = zu(ji,jj) 
     
    16271637           zdv(ji,jj) = zdv(ji,jj) * zsin_w(ji,jj) - ztemp * zsin_w(ji,jj) 
    16281638        END_2D 
     1639        IF( ln_timing ) CALL timing_stop('zdf_osm_vr') 
    16291640    END SUBROUTINE zdf_osm_velocity_rotation 
    16301641 
     
    16511662      REAL(wp)                      :: zpe_mle_ref, zwb_ent, zdbdz_mle_int 
    16521663 
     1664      IF( ln_timing ) CALL timing_start('zdf_osm_osf') 
    16531665      znd_param(:,:) = 0._wp 
    16541666 
     
    17321744          ENDIF  ! lconv 
    17331745        END_2D 
     1746        IF( ln_timing ) CALL timing_stop('zdf_osm_osf') 
    17341747    END SUBROUTINE zdf_osm_osbl_state_fk 
    17351748 
     
    17511764 
    17521765 
     1766     IF( ln_timing ) CALL timing_start('zdf_osm_eg') 
    17531767     DO_2D( 0, 0, 0, 0 ) 
    17541768        IF ( jbase(ji,jj)+1 < mbkt(ji,jj) ) THEN 
     
    17681782        END IF 
    17691783     END_2D 
     1784     IF( ln_timing ) CALL timing_stop('zdf_osm_eg') 
    17701785    END SUBROUTINE zdf_osm_external_gradients 
    17711786 
     
    17811796     REAL(wp), PARAMETER :: zgamma_b = 2.25, zzeta_sh = 0.15 
    17821797 
     1798     IF( ln_timing ) CALL timing_start('zdf_osm_pscp') 
    17831799     DO_2D( 0, 0, 0, 0 ) 
    17841800        IF ( ibld(ji,jj) + jp_ext(ji,jj) < mbkt(ji,jj) ) THEN 
     
    18471863        ENDIF      ! IF ( ibld(ji,jj) < mbkt(ji,jj) ) 
    18481864     END_2D 
     1865     IF( ln_timing ) CALL timing_stop('zdf_osm_pscp') 
    18491866 
    18501867    END SUBROUTINE zdf_osm_pycnocline_scalar_profiles 
     
    18661883      REAL(wp) :: zzeta_v = 0.45 
    18671884      ! 
     1885      IF( ln_timing ) CALL timing_start('zdf_osm_pshp') 
    18681886      DO_2D( 0, 0, 0, 0 ) 
    18691887         ! 
     
    19061924         END IF      ! IF ( ibld(ji,jj) + ibld_ext < mbkt(ji,jj) ) 
    19071925      END_2D 
     1926      IF( ln_timing ) CALL timing_stop('zdf_osm_pshp') 
    19081927    END SUBROUTINE zdf_osm_pycnocline_shear_profiles 
    19091928 
     
    19291948    REAL, PARAMETER :: a_ddh = 2.5, a_ddh_2 = 3.5 ! also in pycnocline_depth 
    19301949 
     1950    IF( ln_timing ) CALL timing_start('zdf_osm_cd') 
    19311951  DO_2D( 0, 0, 0, 0 ) 
    19321952 
     
    20502070      ENDIF ! lshear 
    20512071  END_2D 
     2072    IF( ln_timing ) CALL timing_stop('zdf_osm_cd') 
    20522073    END SUBROUTINE zdf_osm_calculate_dhdt 
    20532074 
     
    20722093    REAL(wp) :: zthermal, zbeta 
    20732094 
     2095     IF( ln_timing ) CALL timing_start('zdf_osm_th') 
    20742096     DO_2D( 0, 0, 0, 0 ) 
    20752097        IF ( ibld(ji,jj) - imld(ji,jj) > 1 ) THEN 
     
    21522174        zhbl(ji,jj) = gdepw(ji,jj,ibld(ji,jj),Kmm) 
    21532175     END_2D 
     2176     IF( ln_timing ) CALL timing_stop('zdf_osm_th') 
    21542177 
    21552178    END SUBROUTINE zdf_osm_timestep_hbl 
     
    21762199      REAL, PARAMETER :: a_ddh_2 = 3.5 ! also in pycnocline_depth 
    21772200 
     2201      IF( ln_timing ) CALL timing_start('zdf_osm_pt') 
    21782202    DO_2D( 0, 0, 0, 0 ) 
    21792203 
     
    22872311      zdh(ji,jj) = zhbl(ji,jj) - zhml(ji,jj) 
    22882312    END_2D 
     2313      IF( ln_timing ) CALL timing_stop('zdf_osm_pt') 
    22892314 
    22902315    END SUBROUTINE zdf_osm_pycnocline_thickness 
     
    23172342!!---------------------------------------------------------------------- 
    23182343      ! 
     2344      IF( ln_timing ) CALL timing_start('zdf_osm_zhg') 
    23192345      !                                      !==  MLD used for MLE  ==! 
    23202346 
     
    23782404             & + dbdx_mle(ji-1,jj) * dbdx_mle(ji-1,jj) + dbdy_mle(ji,jj-1) * dbdy_mle(ji,jj-1) ) ) 
    23792405      END_2D 
     2406      IF( ln_timing ) CALL timing_stop('zdf_osm_zhg') 
    23802407 
    23812408 END SUBROUTINE zdf_osm_zmld_horizontal_gradients 
     
    23982425      REAL(wp) ::  ztmp, zdbdz, zdtdz, zdsdz, zthermal,zbeta, zbuoy, zdb_mle 
    23992426 
     2427      IF( ln_timing ) CALL timing_start('zdf_osm_mp') 
    24002428   ! Calculate vertical buoyancy, heat and salinity fluxes due to MLE. 
    24012429 
     
    24392467         zhmle(ji,jj) = gdepw(ji,jj, mld_prof(ji,jj),Kmm) 
    24402468      END_2D 
     2469      IF( ln_timing ) CALL timing_stop('zdf_osm_mp') 
    24412470END SUBROUTINE zdf_osm_mle_parameters 
    24422471 
     
    24712500     !!---------------------------------------------------------------------- 
    24722501     ! 
     2502     IF( ln_timing ) CALL timing_start('zdf_osm_init') 
    24732503     READ  ( numnam_ref, namzdf_osm, IOSTAT = ios, ERR = 901) 
    24742504901  IF( ios /= 0 ) CALL ctl_nam ( ios , 'namzdf_osm in reference namelist' ) 
     
    26722702     ghamv(:,:,:) = 0. 
    26732703     ! 
     2704     IF( ln_timing ) CALL timing_stop('zdf_osm_init') 
    26742705   END SUBROUTINE zdf_osm_init 
    26752706 
     
    26982729     !!---------------------------------------------------------------------- 
    26992730     ! 
     2731     IF( ln_timing ) CALL timing_start('osm_rst') 
    27002732     !!----------------------------------------------------------------------------- 
    27012733     ! If READ/WRITE Flag is 'READ', try to get hbl from restart file. If successful then return 
     
    27802812     ww(:,:,:) = 0._wp 
    27812813     WRITE(numout,*) ' ===>>>> :  wn not in restart file, set to zero initially' 
     2814     IF( ln_timing ) CALL timing_stop('osm_rst') 
    27822815   END SUBROUTINE osm_rst 
    27832816 
     
    27992832      INTEGER :: ji, jj, jk 
    28002833      ! 
     2834      IF( ln_timing ) CALL timing_start('tra_osm') 
    28012835      IF( kt == nit000 ) THEN 
    28022836         IF( ntile == 0 .OR. ntile == 1 ) THEN                    ! Do only on the first tile 
     
    28362870      ENDIF 
    28372871      ! 
     2872      IF( ln_timing ) CALL timing_stop('tra_osm') 
    28382873   END SUBROUTINE tra_osm 
    28392874 
     
    28522887      !!---------------------------------------------------------------------- 
    28532888      INTEGER, INTENT(in) :: kt 
     2889      IF( ln_timing ) CALL timing_start('trc_osm') 
    28542890      WRITE(*,*) 'trc_osm: Not written yet', kt 
     2891      IF( ln_timing ) CALL timing_stop('trc_osm') 
    28552892   END SUBROUTINE trc_osm 
    28562893 
     
    28722909      !!---------------------------------------------------------------------- 
    28732910      ! 
     2911      IF( ln_timing ) CALL timing_start('dyn_osm') 
    28742912      IF( kt == nit000 ) THEN 
    28752913         IF(lwp) WRITE(numout,*) 
     
    28902928      ! code for saving tracer trends removed 
    28912929      ! 
     2930      IF( ln_timing ) CALL timing_stop('dyn_osm') 
    28922931   END SUBROUTINE dyn_osm 
    28932932 
Note: See TracChangeset for help on using the changeset viewer.