Changeset 14149
- Timestamp:
- 2020-12-10T15:43:37+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r14122_ENHANCE-14_smueller_OSMOSIS_streamlining/src/OCE/ZDF/zdfosm.F90
r14072 r14149 67 67 USE prtctl ! Print control 68 68 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 69 USE timing, ONLY : timing_start, timing_stop ! Timer 69 70 70 71 IMPLICIT NONE … … 346 347 !!-------------------------------------------------------------------- 347 348 ! 349 IF( ln_timing ) CALL timing_start('zdf_osm') 348 350 ibld(:,:) = 0 ; imld(:,:) = 0 349 351 zrad0(:,:) = 0._wp ; zradh(:,:) = 0._wp ; zradav(:,:) = 0._wp ; zustar(:,:) = 0._wp … … 1251 1253 1252 1254 END IF 1255 IF( ln_timing ) CALL timing_stop('zdf_osm') 1253 1256 1254 1257 CONTAINS … … 1280 1283 REAL(wp), PARAMETER :: rn_vispyc_shr = 0.15 1281 1284 1285 IF( ln_timing ) CALL timing_start('zdf_osm_dv') 1282 1286 DO_2D( 0, 0, 0, 0 ) 1283 1287 IF ( lconv(ji,jj) ) THEN … … 1383 1387 ! 1384 1388 END_2D 1389 IF( ln_timing ) CALL timing_stop('zdf_osm_dv') 1385 1390 1386 1391 END SUBROUTINE zdf_osm_diffusivity_viscosity … … 1421 1426 REAL, PARAMETER :: zrot=0._wp ! dummy rotation rate of surface stress. 1422 1427 1428 IF( ln_timing ) CALL timing_start('zdf_osm_os') 1423 1429 ! Determins stability and set flag lconv 1424 1430 DO_2D( 0, 0, 0, 0 ) … … 1531 1537 ENDIF ! lshear 1532 1538 END_2D 1539 IF( ln_timing ) CALL timing_stop('zdf_osm_os') 1533 1540 END SUBROUTINE zdf_osm_osbl_state 1534 1541 … … 1558 1565 1559 1566 1567 IF( ln_timing ) CALL timing_start('zdf_osm_va') 1560 1568 zt = 0._wp 1561 1569 zs = 0._wp … … 1600 1608 ENDIF 1601 1609 END_2D 1610 IF( ln_timing ) CALL timing_stop('zdf_osm_va') 1602 1611 END SUBROUTINE zdf_osm_vertical_average 1603 1612 … … 1619 1628 REAL(wp) :: ztemp 1620 1629 1630 IF( ln_timing ) CALL timing_start('zdf_osm_vr') 1621 1631 DO_2D( 0, 0, 0, 0 ) 1622 1632 ztemp = zu(ji,jj) … … 1627 1637 zdv(ji,jj) = zdv(ji,jj) * zsin_w(ji,jj) - ztemp * zsin_w(ji,jj) 1628 1638 END_2D 1639 IF( ln_timing ) CALL timing_stop('zdf_osm_vr') 1629 1640 END SUBROUTINE zdf_osm_velocity_rotation 1630 1641 … … 1651 1662 REAL(wp) :: zpe_mle_ref, zwb_ent, zdbdz_mle_int 1652 1663 1664 IF( ln_timing ) CALL timing_start('zdf_osm_osf') 1653 1665 znd_param(:,:) = 0._wp 1654 1666 … … 1732 1744 ENDIF ! lconv 1733 1745 END_2D 1746 IF( ln_timing ) CALL timing_stop('zdf_osm_osf') 1734 1747 END SUBROUTINE zdf_osm_osbl_state_fk 1735 1748 … … 1751 1764 1752 1765 1766 IF( ln_timing ) CALL timing_start('zdf_osm_eg') 1753 1767 DO_2D( 0, 0, 0, 0 ) 1754 1768 IF ( jbase(ji,jj)+1 < mbkt(ji,jj) ) THEN … … 1768 1782 END IF 1769 1783 END_2D 1784 IF( ln_timing ) CALL timing_stop('zdf_osm_eg') 1770 1785 END SUBROUTINE zdf_osm_external_gradients 1771 1786 … … 1781 1796 REAL(wp), PARAMETER :: zgamma_b = 2.25, zzeta_sh = 0.15 1782 1797 1798 IF( ln_timing ) CALL timing_start('zdf_osm_pscp') 1783 1799 DO_2D( 0, 0, 0, 0 ) 1784 1800 IF ( ibld(ji,jj) + jp_ext(ji,jj) < mbkt(ji,jj) ) THEN … … 1847 1863 ENDIF ! IF ( ibld(ji,jj) < mbkt(ji,jj) ) 1848 1864 END_2D 1865 IF( ln_timing ) CALL timing_stop('zdf_osm_pscp') 1849 1866 1850 1867 END SUBROUTINE zdf_osm_pycnocline_scalar_profiles … … 1866 1883 REAL(wp) :: zzeta_v = 0.45 1867 1884 ! 1885 IF( ln_timing ) CALL timing_start('zdf_osm_pshp') 1868 1886 DO_2D( 0, 0, 0, 0 ) 1869 1887 ! … … 1906 1924 END IF ! IF ( ibld(ji,jj) + ibld_ext < mbkt(ji,jj) ) 1907 1925 END_2D 1926 IF( ln_timing ) CALL timing_stop('zdf_osm_pshp') 1908 1927 END SUBROUTINE zdf_osm_pycnocline_shear_profiles 1909 1928 … … 1929 1948 REAL, PARAMETER :: a_ddh = 2.5, a_ddh_2 = 3.5 ! also in pycnocline_depth 1930 1949 1950 IF( ln_timing ) CALL timing_start('zdf_osm_cd') 1931 1951 DO_2D( 0, 0, 0, 0 ) 1932 1952 … … 2050 2070 ENDIF ! lshear 2051 2071 END_2D 2072 IF( ln_timing ) CALL timing_stop('zdf_osm_cd') 2052 2073 END SUBROUTINE zdf_osm_calculate_dhdt 2053 2074 … … 2072 2093 REAL(wp) :: zthermal, zbeta 2073 2094 2095 IF( ln_timing ) CALL timing_start('zdf_osm_th') 2074 2096 DO_2D( 0, 0, 0, 0 ) 2075 2097 IF ( ibld(ji,jj) - imld(ji,jj) > 1 ) THEN … … 2152 2174 zhbl(ji,jj) = gdepw(ji,jj,ibld(ji,jj),Kmm) 2153 2175 END_2D 2176 IF( ln_timing ) CALL timing_stop('zdf_osm_th') 2154 2177 2155 2178 END SUBROUTINE zdf_osm_timestep_hbl … … 2176 2199 REAL, PARAMETER :: a_ddh_2 = 3.5 ! also in pycnocline_depth 2177 2200 2201 IF( ln_timing ) CALL timing_start('zdf_osm_pt') 2178 2202 DO_2D( 0, 0, 0, 0 ) 2179 2203 … … 2287 2311 zdh(ji,jj) = zhbl(ji,jj) - zhml(ji,jj) 2288 2312 END_2D 2313 IF( ln_timing ) CALL timing_stop('zdf_osm_pt') 2289 2314 2290 2315 END SUBROUTINE zdf_osm_pycnocline_thickness … … 2317 2342 !!---------------------------------------------------------------------- 2318 2343 ! 2344 IF( ln_timing ) CALL timing_start('zdf_osm_zhg') 2319 2345 ! !== MLD used for MLE ==! 2320 2346 … … 2378 2404 & + dbdx_mle(ji-1,jj) * dbdx_mle(ji-1,jj) + dbdy_mle(ji,jj-1) * dbdy_mle(ji,jj-1) ) ) 2379 2405 END_2D 2406 IF( ln_timing ) CALL timing_stop('zdf_osm_zhg') 2380 2407 2381 2408 END SUBROUTINE zdf_osm_zmld_horizontal_gradients … … 2398 2425 REAL(wp) :: ztmp, zdbdz, zdtdz, zdsdz, zthermal,zbeta, zbuoy, zdb_mle 2399 2426 2427 IF( ln_timing ) CALL timing_start('zdf_osm_mp') 2400 2428 ! Calculate vertical buoyancy, heat and salinity fluxes due to MLE. 2401 2429 … … 2439 2467 zhmle(ji,jj) = gdepw(ji,jj, mld_prof(ji,jj),Kmm) 2440 2468 END_2D 2469 IF( ln_timing ) CALL timing_stop('zdf_osm_mp') 2441 2470 END SUBROUTINE zdf_osm_mle_parameters 2442 2471 … … 2471 2500 !!---------------------------------------------------------------------- 2472 2501 ! 2502 IF( ln_timing ) CALL timing_start('zdf_osm_init') 2473 2503 READ ( numnam_ref, namzdf_osm, IOSTAT = ios, ERR = 901) 2474 2504 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namzdf_osm in reference namelist' ) … … 2672 2702 ghamv(:,:,:) = 0. 2673 2703 ! 2704 IF( ln_timing ) CALL timing_stop('zdf_osm_init') 2674 2705 END SUBROUTINE zdf_osm_init 2675 2706 … … 2698 2729 !!---------------------------------------------------------------------- 2699 2730 ! 2731 IF( ln_timing ) CALL timing_start('osm_rst') 2700 2732 !!----------------------------------------------------------------------------- 2701 2733 ! If READ/WRITE Flag is 'READ', try to get hbl from restart file. If successful then return … … 2780 2812 ww(:,:,:) = 0._wp 2781 2813 WRITE(numout,*) ' ===>>>> : wn not in restart file, set to zero initially' 2814 IF( ln_timing ) CALL timing_stop('osm_rst') 2782 2815 END SUBROUTINE osm_rst 2783 2816 … … 2799 2832 INTEGER :: ji, jj, jk 2800 2833 ! 2834 IF( ln_timing ) CALL timing_start('tra_osm') 2801 2835 IF( kt == nit000 ) THEN 2802 2836 IF( ntile == 0 .OR. ntile == 1 ) THEN ! Do only on the first tile … … 2836 2870 ENDIF 2837 2871 ! 2872 IF( ln_timing ) CALL timing_stop('tra_osm') 2838 2873 END SUBROUTINE tra_osm 2839 2874 … … 2852 2887 !!---------------------------------------------------------------------- 2853 2888 INTEGER, INTENT(in) :: kt 2889 IF( ln_timing ) CALL timing_start('trc_osm') 2854 2890 WRITE(*,*) 'trc_osm: Not written yet', kt 2891 IF( ln_timing ) CALL timing_stop('trc_osm') 2855 2892 END SUBROUTINE trc_osm 2856 2893 … … 2872 2909 !!---------------------------------------------------------------------- 2873 2910 ! 2911 IF( ln_timing ) CALL timing_start('dyn_osm') 2874 2912 IF( kt == nit000 ) THEN 2875 2913 IF(lwp) WRITE(numout,*) … … 2890 2928 ! code for saving tracer trends removed 2891 2929 ! 2930 IF( ln_timing ) CALL timing_stop('dyn_osm') 2892 2931 END SUBROUTINE dyn_osm 2893 2932
Note: See TracChangeset
for help on using the changeset viewer.