- Timestamp:
- 2021-12-22T17:56:05+01:00 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.4_CO9_shelf_climate/src/OCE/DIA/diaharm_fast.F90
r15611 r15614 84 84 LOGICAL, PUBLIC :: ln_diaharm_postproc_vel 85 85 LOGICAL, PUBLIC :: ln_diaharm_verbose 86 LOGICAL, PUBLIC :: ln_diaharm_baroc3dvel_only 86 87 87 88 … … 222 223 DO jk=1,jpkm1 223 224 IF ( m_posi_3d(j3d) .eq. 1 ) dd_cumul = c(jh) * rhd(ji,jj,jk) * tmask(ji,jj,jk) 224 IF ( m_posi_3d(j3d) .eq. 2 ) dd_cumul = c(jh) * ( un(ji,jj,jk)-un_b(ji,jj) ) * umask(ji,jj,jk) 225 IF ( m_posi_3d(j3d) .eq. 3 ) dd_cumul = c(jh) * ( vn(ji,jj,jk)-vn_b(ji,jj) ) * vmask(ji,jj,jk) 225 IF ( ln_diaharm_baroc3dvel_only ) THEN 226 IF ( m_posi_3d(j3d) .eq. 2 ) dd_cumul = c(jh) * ( un(ji,jj,jk)-un_b(ji,jj) ) * umask(ji,jj,jk) 227 IF ( m_posi_3d(j3d) .eq. 3 ) dd_cumul = c(jh) * ( vn(ji,jj,jk)-vn_b(ji,jj) ) * vmask(ji,jj,jk) 228 ELSE 229 IF ( m_posi_3d(j3d) .eq. 2 ) dd_cumul = c(jh) * ( un(ji,jj,jk) ) * umask(ji,jj,jk) 230 IF ( m_posi_3d(j3d) .eq. 3 ) dd_cumul = c(jh) * ( vn(ji,jj,jk) ) * vmask(ji,jj,jk) 231 ENDIF 226 232 IF ( m_posi_3d(j3d) .eq. 4 ) dd_cumul = c(jh) * wn(ji,jj,jk) * wmask(ji,jj,jk) 227 233 g_cumul_var3D(jh,ji,jj,jk,j3d) = g_cumul_var3D(jh,ji,jj,jk,j3d) + dd_cumul … … 369 375 NAMELIST/nam_diaharm_fast/ ln_diaharm_fast, ln_diaharm_store, ln_diaharm_compute, ln_diaharm_read_restart, & 370 376 & ln_ana_ssh, ln_ana_uvbar, ln_ana_bfric, ln_ana_rho, ln_ana_uv3d, ln_ana_w3d, & 371 & tname,ln_diaharm_multiyear,nn_diaharm_multiyear,ln_diaharm_update_nodal_daily,ln_diaharm_postproc_vel, ln_diaharm_verbose 377 & tname,ln_diaharm_multiyear,nn_diaharm_multiyear,ln_diaharm_update_nodal_daily,& 378 & ln_diaharm_postproc_vel,ln_diaharm_baroc3dvel_only, ln_diaharm_verbose 372 379 !!---------------------------------------------------------------------- 373 380 !JT … … 382 389 383 390 ln_diaharm_postproc_vel = .FALSE. 391 ln_diaharm_baroc3dvel_only = .TRUE. 384 392 385 393 IF(lwp) WRITE(numout,*) … … 411 419 WRITE(numout,*) ' 3D velocities harmonic analysis: ln_ana_uv3d = ', ln_ana_uv3d 412 420 WRITE(numout,*) ' Vertical Velocities harmonic analysis: ln_ana_w3d = ', ln_ana_w3d 421 WRITE(numout,*) ' Use baroclinic component of vel for 3D velocities ' 422 WRITE(numout,*) ' rather than full velocities:ln_diaharm_baroc3dvel_only = ', ln_diaharm_baroc3dvel_only 413 423 WRITE(numout,*) ' Names of harmonics: tname = ', tname 414 424 WRITE(numout,*) ' Max number of harmonics: jpmax_harmo = ', jpmax_harmo … … 418 428 WRITE(numout,*) ' Multi-year harmonic analysis - number of years: ln_diaharm_update_nodal_daily = ', ln_diaharm_update_nodal_daily 419 429 WRITE(numout,*) ' Number of Harmonics: nyear, nmonth = ', nyear, nmonth 430 WRITE(numout,*) ' Verbose: ln_diaharm_verbose = ', ln_diaharm_verbose 420 431 WRITE(numout,*) ' Post-process velocity stats: ln_diaharm_postproc_vel = ',ln_diaharm_postproc_vel 421 WRITE(numout,*) ' Verbose: ln_diaharm_verbose = ', ln_diaharm_verbose 432 WRITE(numout,*) " " 433 WRITE(numout,*) " Examples of how to use the results of the harmonic analysis, with python code" 434 WRITE(numout,*) " #Variable names in example code match the variables output by NEMO iom_put." 435 WRITE(numout,*) " " 436 WRITE(numout,*) " #SSH/UY/V timeseries as estimated from the Harmonic Analysis" 437 WRITE(numout,*) " SSH = M2amp_ssh*np.sin(tide_t*M2_freq - M2phi_ssh) # + TA_u2d_off" 438 WRITE(numout,*) " " 439 WRITE(numout,*) " " 440 WRITE(numout,*) " # M2 U and V time series" 441 WRITE(numout,*) " u_ts = M2_u_amp_t_uvbar*np.sin(tide_t*M2_freq - M2_u_phi_t_uvbar) # + TA_u2d_off" 442 WRITE(numout,*) " v_ts = M2_v_amp_t_uvbar*np.sin(tide_t*M2_freq - M2_v_phi_t_uvbar) # + TA_v2d_off" 443 WRITE(numout,*) " " 444 WRITE(numout,*) " #Clockwise and anti-clockwise components of M2 tidal ellipse" 445 WRITE(numout,*) " " 446 WRITE(numout,*) " ang = np.linspace(0,2*np.pi,500)" 447 WRITE(numout,*) " " 448 WRITE(numout,*) " u_c = M2_Qc_uvbar*np.cos(-ang + M2_gc_uvbar) # + TA_u2d_off" 449 WRITE(numout,*) " u_ac = M2_Qac_uvbar*np.cos(ang + M2_gac_uvbar) # + TA_u2d_off" 450 WRITE(numout,*) " v_c = M2_Qc_uvbar*np.sin(-ang + M2_gc_uvbar) # + TA_v2d_off" 451 WRITE(numout,*) " v_ac = M2_Qac_uvbar*np.sin(ang + M2_gac_uvbar) # + TA_v2d_off" 452 WRITE(numout,*) " " 453 WRITE(numout,*) " # M2 tidal ellipse from harmonic analysis" 454 WRITE(numout,*) " plt.plot(u_ts, v_ts,'k.')" 455 WRITE(numout,*) " " 456 WRITE(numout,*) " # Circles, with radii of the semi-major (qmax) and semi-minor (qmin) axis, of the clockwise and anticlockwise component." 457 WRITE(numout,*) " plt.plot(u_c,v_c,'y+')" 458 WRITE(numout,*) " plt.plot(u_ac,v_ac,'g+')" 459 WRITE(numout,*) " plt.plot(M2_qmax_uvbar*np.cos(ang),M2_qmax_uvbar*np.sin(ang),'r')" 460 WRITE(numout,*) " plt.plot(M2_qmin_uvbar*np.cos(ang),M2_qmin_uvbar*np.sin(ang),'b')" 461 WRITE(numout,*) " " 462 WRITE(numout,*) " # M2 ellipse from the sum of the clockwise and anticlockwise component." 463 WRITE(numout,*) " plt.plot(u_c+u_ac,v_c+v_ac,'o')" 464 465 422 466 423 467 ENDIF … … 1872 1916 CALL FLUSH(numout) 1873 1917 1874 ! to output tidal parameters, u and v on t grid1875 !1876 ! !== standard Cd ==!1877 ! DO jj = 2, jpjm11878 ! DO ji = 2, jpim11879 ! imk = k_mk(ji,jj) ! ocean bottom level at t-points1880 ! zut = un(ji,jj,imk) + un(ji-1,jj,imk) ! 2 x velocity at t-point1881 ! zvt = vn(ji,jj,imk) + vn(ji,jj-1,imk)1882 ! ! ! here pCd0 = mask*boost * drag1883 ! pCdU(ji,jj) = - pCd0(ji,jj) * SQRT( 0.25 * ( zut*zut + zvt*zvt ) + pke0 )1884 ! END DO1885 ! END DO1886 1887 1888 1918 1889 1919 IF (ln_diaharm_postproc_vel) THEN
Note: See TracChangeset
for help on using the changeset viewer.