WAVEWATCH III  beta 0.0.1
w3canomd Module Reference

Calculation of the second order correction to the surface gravity wave spectrum. More...

Functions/Subroutines

subroutine w3add2ndorder (E, DEPTH, WN, CG, IACTION)
 Adds second order spectrum on top of first order spectrum. More...
 
subroutine cal_sec_order_spec (F1, F3, NFRE, NANG, FR, DFIM, TH, DELTH, DPTH, SIGM, NFREH, NANGH)
 Determines second order spectrum. More...
 
subroutine tables_2nd (NFRE, NANG, NDEPTH, DEPTHA, OMSTART, FRAC, XMR, DFDTH, OMEGA, TH)
 Computes tables for second order spectrum in frequency space. More...
 
subroutine secspom (F1, F3, NFRE, NANG, NMAX, NDEPTH, DEPTHA, DEPTHD, OMSTART, FRAC, MR, DFDTH, OMEGA, DEPTH, AKMEAN, TA, TB, TC_QL, TT_4M, TT_4P, IM_P, IM_M, COUNTER)
 Computes second order spectrum in frequency space. More...
 
real function a (XI, XJ, THI, THJ)
 Gives nonlinear transfer coefficient for three wave interactions interactions of gravity waves in the ideal case of no current. More...
 
real function b (XI, XJ, THI, THJ)
 Gives nonlinear transfer coefficient for three wave interactions interactions of gravity waves in the ideal case of no current. More...
 
real function c_ql (XK0, XK1, TH0, TH1)
 Determine contribution by quasi-linear terms. More...
 
real function vplus (XI, XJ, XK, THI, THJ, THK)
 Determines the second-order transfer coefficient for three wave interactions of gravity waves. More...
 
real function vmin (XI, XJ, XK, THI, THJ, THK)
 Determines the second-order transfer coefficient for three wave interactions of gravity waves. More...
 
real function u (XI, XJ, XK, XL, THI, THJ, THK, THL)
 Determines the third-order transfer coefficient for four wave interactions of gravity waves. More...
 
real function w2 (XI, XJ, XK, XL, THI, THJ, THK, THL)
 Determines the contribution of the direct four-wave interactions of gravity waves of the type A_2^*A_3A_4. More...
 
real function v2 (XI, XJ, XK, XL, THI, THJ, THK, THL)
 Determines the contribution of the virtual four-wave interactions of gravity waves. More...
 
real function w1 (XI, XJ, XK, XL, THI, THJ, THK, THL)
 Determines the nonlinear transfer coefficient for four wave interactions of gravity waves of the type A_2A_3A_4. More...
 
real function w4 (XI, XJ, XK, XL, THI, THJ, THK, THL)
 Determines the nonlinear transfer coefficient for four wave interactions of gravity waves of the type A_^*A_3^*A_4^*. More...
 
real function b3 (XI, XJ, XK, XL, THI, THJ, THK, THL)
 Weights of the A_2^*A_3^*A_4 part of the canonical transformation. More...
 
real function b4 (XI, XJ, XK, XL, THI, THJ, THK, THL)
 Weights of the A_2^*A_3^*A_4^* part of the canonical transformation. More...
 
real function b1 (XI, XJ, XK, XL, THI, THJ, THK, THL)
 Weights of the A_2A_3A_4 part of the canonical transformation. More...
 
real function b2 (XI, XJ, XK, XL, THI, THJ, THK, THL)
 Weights of the A_2^*A_3A_4 part of the canonical transformation. More...
 
real function a1 (XI, XJ, XK, THI, THJ, THK)
 Auxiliary second-order coefficient. More...
 
real function a2 (XI, XJ, XK, THI, THJ, THK)
 Auxiliary second-order function. More...
 
real function a3 (XI, XJ, XK, THI, THJ, THK)
 Auxiliary second-order function. More...
 
real function omeg (X)
 Determines the dispersion relation for gravity waves. More...
 
real function vg (X)
 Determines the group velocity for gravity- waves. More...
 
real function aki (OM, BETA)
 Gives the wavenumber. More...
 
real function vabs (XI, XJ, THI, THJ)
 NA. More...
 
real function vdir (XI, XJ, THI, THJ)
 NA. More...
 

Variables

real g
 
real pi
 
real zpi
 
real rad
 
real deg
 
integer ndepth
 
real deptha
 

Detailed Description

Calculation of the second order correction to the surface gravity wave spectrum.

Author
P.A.E.M. Janssen
Date
21-Aug-2014

Function/Subroutine Documentation

◆ a()

real function w3canomd::a ( real  XI,
real  XJ,
real  THI,
real  THJ 
)

Gives nonlinear transfer coefficient for three wave interactions interactions of gravity waves in the ideal case of no current.

Determines the minus interaction coefficients.

Parameters
XIwave number
XJwave number
THI
THJ
Returns
A
Author
Peter Janssen
Date
NA

Definition at line 1152 of file w3canomd.F90.

1152  !-----------------------------------------------------------------------
1153  !
1154  !*** *REAL FUNCTION* *A(XI,XJ,THI,THJ)
1155  !
1156  !-----------------------------------------------------------------------
1157  !
1158  !*** *A* DETERMINES THE MINUS INTERACTIONS.
1159  !
1160  ! PETER JANSSEN
1161  !
1162  ! PURPOSE.
1163  ! --------
1164  !
1165  ! GIVES NONLINEAR TRANSFER COEFFICIENT FOR THREE
1166  ! WAVE INTERACTIONS OF GRAVITY WAVES IN THE
1167  ! IDEAL CASE OF NO CURRENT. (CF.ZAKHAROV)
1168  !
1169  ! INTERFACE.
1170  ! ----------
1171  ! *A(XI,XJ)*
1172  ! *XI* - WAVE NUMBER
1173  ! *XJ* - WAVE NUMBER
1174  ! METHOD.
1175  ! -------
1176  ! NONE
1177  !
1178  ! EXTERNALS.
1179  ! ----------
1180  ! NONE.
1181  !
1182  !-----------------------------------------------------------------------
1183  !
1184  IMPLICIT NONE
1185  common/const/depth,alpha,mdw,gam_j,depthd
1186  INTEGER MDW
1187  REAL DEPTH,ALPHA,GAM_J,DEPTHA,DEPTHD
1188  REAL RI,RJ,RK,XI,XJ,THI,THJ,THK,OI,OJ,OK,FI,FJ,FK
1189  !
1190  !*** 1. DETERMINE NONLINEAR TRANSFER.
1191  ! --------------------------------
1192  !
1193 
1194  ri = xi
1195  rj = xj
1196  rk = vabs(ri,rj,thi,thj)
1197  thk = vdir(ri,rj,thi,thj)
1198 
1199  oi=omeg(ri)
1200  oj=omeg(rj)
1201  ok=omeg(rk)
1202 
1203  fi = sqrt(oi/(2.*g))
1204  fj = sqrt(oj/(2.*g))
1205  fk = sqrt(ok/(2.*g))
1206 
1207 
1208  a = fk/(fi*fj)*(a1(rk,ri,rj,thk,thi,thj)+&
1209  a3(rk,ri,rj,thk-pi,thi,thj))
1210 
1211  RETURN

References a1(), a3(), g, omeg(), pi, vabs(), and vdir().

Referenced by tables_2nd().

◆ a1()

real function w3canomd::a1 ( real  XI,
real  XJ,
real  XK,
real  THI,
real  THJ,
real  THK 
)

Auxiliary second-order coefficient.

Parameters
XIWave number
XJWave number
XKWave number
THI
THJ
THK
Returns
A1
Author
Peter Janssen
Date
NA

Definition at line 2492 of file w3canomd.F90.

2492  !-----------------------------------------------------------------------
2493  !
2494  !*** *REAL FUNCTION* *A1(XI,XJ,XK,THI,THJ,THK)
2495  !
2496  !-----------------------------------------------------------------------
2497  !
2498  !*** *A1* AUXILIARY SECOND-ORDER COEFFICIENT.
2499  !
2500  ! PETER JANSSEN
2501  !
2502  ! PURPOSE.
2503  ! --------
2504  !
2505  ! GIVES NONLINEAR TRANSFER COEFFICIENT FOR THREE
2506  ! WAVE INTERACTIONS OF GRAVITY-CAPILLARY WAVES IN THE
2507  ! IDEAL CASE OF NO CURRENT. (CF.ZAKHAROV)
2508  !
2509  ! INTERFACE.
2510  ! ----------
2511  ! *VMIN(XI,XJ,XK)*
2512  ! *XI* - WAVE NUMBER
2513  ! *XJ* - WAVE NUMBER
2514  ! *XK* - WAVE NUMBER
2515  ! METHOD.
2516  ! -------
2517  ! NONE
2518  !
2519  ! EXTERNALS.
2520  ! ----------
2521  ! NONE.
2522  !
2523  !-----------------------------------------------------------------------
2524  !
2525  IMPLICIT NONE
2526  common/const/depth,alpha,mdw,gam_j,depthd
2527  common/precis/doublep
2528  LOGICAL DOUBLEP
2529  INTEGER MDW
2530  REAL DEPTH,ALPHA,GAM_J,DEPTHA,DEPTHD
2531  REAL DEL1,XI,XJ,XK,THI,THJ,THK,OI,OJ,OK
2532  !
2533  !*** 1. DETERMINE NONLINEAR TRANSFER.
2534  ! --------------------------------
2535  !
2536  IF (doublep) THEN
2537  del1 = 10.**(-8)
2538  ELSE
2539  del1 = 10.**(-4)
2540  ENDIF
2541 
2542  oi=omeg(xi)+del1
2543  oj=omeg(xj)+del1
2544  ok=omeg(xk)+del1
2545 
2546  a1 = -vmin(xi,xj,xk,thi,thj,thk)/(oi-oj-ok)
2547 
2548  RETURN

References omeg(), and vmin().

Referenced by a(), a2(), b1(), b2(), b3(), and b4().

◆ a2()

real function w3canomd::a2 ( real  XI,
real  XJ,
real  XK,
real  THI,
real  THJ,
real  THK 
)

Auxiliary second-order function.

Parameters
XIWave number
XJWave number
XKWave number
THI
THJ
THK
Returns
A2
Author
Peter Janssen
Date
NA

Definition at line 2566 of file w3canomd.F90.

2566  !-----------------------------------------------------------------------
2567  !
2568  !*** *REAL FUNCTION* *A2(XI,XJ,XK,THI,THJ,THK)
2569  !
2570  !-----------------------------------------------------------------------
2571  !
2572  !*** *A2* AUXILIARY SECOND-ORDER FUNCTION.
2573  !
2574  ! PETER JANSSEN
2575  !
2576  ! PURPOSE.
2577  ! --------
2578  !
2579  ! GIVES NONLINEAR TRANSFER COEFFICIENT FOR THREE
2580  ! WAVE INTERACTIONS OF GRAVITY-CAPILLARY WAVES IN THE
2581  ! IDEAL CASE OF NO CURRENT. (CF.ZAKHAROV)
2582  !
2583  ! INTERFACE.
2584  ! ----------
2585  ! *VMIN(XI,XJ,XK)*
2586  ! *XI* - WAVE NUMBER
2587  ! *XJ* - WAVE NUMBER
2588  ! *XK* - WAVE NUMBER
2589  ! METHOD.
2590  ! -------
2591  ! NONE
2592  !
2593  ! EXTERNALS.
2594  ! ----------
2595  ! NONE.
2596  !
2597  !-----------------------------------------------------------------------
2598  !
2599  IMPLICIT NONE
2600  REAL DEL1,XI,XJ,XK,THI,THJ,THK
2601  !
2602  !*** 1. DETERMINE NONLINEAR TRANSFER.
2603  ! --------------------------------
2604  !
2605  a2 = -2.*a1(xk,xj,xi,thk,thj,thi)
2606  RETURN

References a1().

Referenced by b().

◆ a3()

real function w3canomd::a3 ( real  XI,
real  XJ,
real  XK,
real  THI,
real  THJ,
real  THK 
)

Auxiliary second-order function.

Parameters
XIWave number
XJWave number
XKWave number
THI
THJ
THK
Returns
A3
Author
Peter Janssen
Date
NA

Definition at line 2624 of file w3canomd.F90.

2624  !-----------------------------------------------------------------------
2625  !
2626  !*** *REAL FUNCTION* *A3(XI,XJ,XK,THI,THJ,THK)
2627  !
2628  !-----------------------------------------------------------------------
2629  !
2630  !*** *A3* AUXILIARY SECOND-ORDER FUNCTION.
2631  !
2632  ! PETER JANSSEN
2633  !
2634  ! PURPOSE.
2635  ! --------
2636  !
2637  ! GIVES NONLINEAR TRANSFER COEFFICIENT FOR THREE
2638  ! WAVE INTERACTIONS OF GRAVITY-CAPILLARY WAVES IN THE
2639  ! IDEAL CASE OF NO CURRENT. (CF.ZAKHAROV)
2640  !
2641  ! INTERFACE.
2642  ! ----------
2643  ! *VMIN(XI,XJ,XK)*
2644  ! *XI* - WAVE NUMBER
2645  ! *XJ* - WAVE NUMBER
2646  ! *XK* - WAVE NUMBER
2647  ! METHOD.
2648  ! -------
2649  ! NONE
2650  !
2651  ! EXTERNALS.
2652  ! ----------
2653  ! NONE.
2654  !
2655  !-----------------------------------------------------------------------
2656  !
2657  IMPLICIT NONE
2658  common/precis/doublep
2659  LOGICAL DOUBLEP
2660  REAL DEL1,OI,OJ,OK,XI,XJ,XK,THI,THJ,THK
2661  !
2662  !*** 1. DETERMINE NONLINEAR TRANSFER.
2663  ! --------------------------------
2664  !
2665  IF (doublep) THEN
2666  del1 = 10.**(-8)
2667  ELSE
2668  del1 = 10.**(-4)
2669  ENDIF
2670 
2671 
2672  oi=omeg(xi)+del1
2673  oj=omeg(xj)+del1
2674  ok=omeg(xk)+del1
2675 
2676  a3 = -vplus(xi,xj,xk,thi,thj,thk)/(oi+oj+ok)
2677  RETURN

References omeg(), and vplus().

Referenced by a(), b1(), b2(), b3(), and b4().

◆ aki()

real function w3canomd::aki ( real  OM,
real  BETA 
)

Gives the wavenumber.

Parameters
OM
BETA
Returns
AKI
Author
Peter Janssen
Date
NA

Definition at line 2806 of file w3canomd.F90.

2806  ! This function gives the wavenumber ...
2807  !---------------------------------------------------------------------
2808  !
2809  IMPLICIT NONE
2810  REAL OM,BETA,G,EBS,AKM1,AKM2,AO,AKP,BO,TH,STH
2811 
2812  g =9.806
2813  ebs=0.0001
2814  akm1=om**2/(4.*g )
2815  akm2=om/(2.*sqrt(g*beta))
2816  ao=max(akm1,akm2)
2817 10 CONTINUE
2818  akp=ao
2819  bo=beta*ao
2820  ! IF (BO.GT.10) GO TO 20
2821  IF (bo.GT.20.) GO TO 20
2822  th=g*ao*tanh(bo)
2823  sth=sqrt(th)
2824  ao=ao+(om-sth)*sth*2./(th/ao+g*bo/cosh(bo)**2)
2825  IF (abs(akp-ao).GT.ebs*ao) GO TO 10
2826  aki=ao
2827  RETURN
2828 20 CONTINUE
2829  aki=om**2/g
2830  RETURN

References g.

Referenced by cal_sec_order_spec(), and tables_2nd().

◆ b()

real function w3canomd::b ( real  XI,
real  XJ,
real  THI,
real  THJ 
)

Gives nonlinear transfer coefficient for three wave interactions interactions of gravity waves in the ideal case of no current.

Determines the plus interaction coefficients.

Parameters
XIwave number
XJwave number
THI
THJ
Returns
B
Author
Peter Janssen
Date
NA

Definition at line 1229 of file w3canomd.F90.

1229  !*** *REAL FUNCTION* *B(XI,XJ,THI,THJ)
1230  !
1231  !-----------------------------------------------------------------------
1232  !
1233  !*** *B* DETERMINES THE PLUS INTERACTION COEFFICIENTS.
1234  !
1235  ! PETER JANSSEN
1236  !
1237  ! PURPOSE.
1238  ! --------
1239  !
1240  ! GIVES NONLINEAR TRANSFER COEFFICIENT FOR THREE
1241  ! WAVE INTERACTIONS OF GRAVITY WAVES IN THE
1242  ! IDEAL CASE OF NO CURRENT. (CF.ZAKHAROV)
1243  !
1244  ! INTERFACE.
1245  ! ----------
1246  ! *B(XI,XJ)*
1247  ! *XI* - WAVE NUMBER
1248  ! *XJ* - WAVE NUMBER
1249  ! METHOD.
1250  ! -------
1251  ! NONE
1252  !
1253  ! EXTERNALS.
1254  ! ----------
1255  ! NONE.
1256  !
1257  !-----------------------------------------------------------------------
1258  !
1259  IMPLICIT NONE
1260  common/const/depth,alpha,mdw,gam_j,depthd
1261  INTEGER MDW
1262  REAL DEPTH,ALPHA,GAM_J,DEPTHA,DEPTHD
1263  REAL DEL,RI,RJ,RK,XI,XJ,THI,THJ,THK,OI,OJ,OK,FI,FJ,FK
1264  !
1265  !*** 1. DETERMINE NONLINEAR TRANSFER.
1266  ! --------------------------------
1267  !
1268  del = 0.
1269  ri = xi
1270  rj = xj
1271  rk = vabs(rj,ri,thj,thi-pi)
1272  thk = vdir(rj,ri,thj,thi-pi)
1273 
1274  oi=omeg(ri)+del
1275  oj=omeg(rj)+del
1276  ok=omeg(rk)+del
1277 
1278  fi = sqrt(oi/(2.*g))
1279  fj = sqrt(oj/(2.*g))
1280  fk = sqrt(ok/(2.*g))
1281 
1282  b = 0.5*fk/(fi*fj)*(a2(rk,ri,rj,thk,thi,thj)+&
1283  a2(rk,rj,ri,thk-pi,thj,thi))
1284 
1285  RETURN

References a2(), g, omeg(), pi, vabs(), and vdir().

Referenced by tables_2nd().

◆ b1()

real function w3canomd::b1 ( real  XI,
real  XJ,
real  XK,
real  XL,
real  THI,
real  THJ,
real  THK,
real  THL 
)

Weights of the A_2A_3A_4 part of the canonical transformation.

Parameters
XIWave number
XJWave number
XKWave number
XLWave number
THI
THJ
THK
THL
Returns
B1
Author
Peter Janssen
Date
NA

Definition at line 2262 of file w3canomd.F90.

2262  !-----------------------------------------------------------------------
2263  !
2264  !*** *REAL FUNCTION* *B1(XI,XJ,XK,XL,THI,THJ,THK,THL)
2265  !
2266  !-----------------------------------------------------------------------
2267  !
2268  !*** *B1* WEIGHTS OF THE A_2A_3A_4 PART OF THE CANONICAL
2269  ! TRANSFORMATION.
2270  !
2271  ! PETER JANSSEN
2272  !
2273  ! PURPOSE.
2274  ! --------
2275  !
2276  ! GIVES NONLINEAR TRANSFER COEFFICIENT FOR FOUR
2277  ! WAVE INTERACTIONS OF GRAVITY-CAPILLARY WAVES IN THE
2278  ! IDEAL CASE OF NO CURRENT. (CF.ZAKHAROV,AND CRAWFORD ET AL)
2279  !
2280  ! INTERFACE.
2281  ! ----------
2282  ! *B1(XI,XJ,XK,XL)*
2283  ! *XI* - WAVE NUMBER
2284  ! *XJ* - WAVE NUMBER
2285  ! *XK* - WAVE NUMBER
2286  ! *XL* - WAVE NUMBER
2287  ! METHOD.
2288  ! -------
2289  ! NONE
2290  !
2291  !
2292  ! EXTERNALS.
2293  ! ----------
2294  ! NONE.
2295  !
2296  !-----------------------------------------------------------------------
2297  !
2298  IMPLICIT NONE
2299  common/const/depth,alpha,mdw,gam_j,depthd
2300  common/precis/doublep
2301  LOGICAL DOUBLEP
2302  INTEGER MDW
2303  REAL DEPTH,ALPHA,GAM_J,DEPTHA,DEPTHD
2304  REAL DEL1,XI,XJ,XK,XL,THI,THJ,THK,THL,OI,OJ,OK,OL,RI,RJ,RK,RL,&
2305  RIJ,RJI,RIK,RKI,RJL,RJK,RLI,RIL,RKL,THIJ,THJI,&
2306  THIK,THKI,THJL,THJK,THLI,THIL,THKL,ZIJKL
2307  !
2308  !
2309  !*** 1. DETERMINE NONLINEAR TRANSFER.
2310  ! --------------------------------
2311  !
2312 
2313  ri=xi
2314  rj=xj
2315  rk=xk
2316  rl=xl
2317 
2318  oi=omeg(ri)
2319  oj=omeg(rj)
2320  ok=omeg(rk)
2321  ol=omeg(rl)
2322 
2323  rij = vabs(ri,rj,thi,thj-pi)
2324  thij = vdir(ri,rj,thi,thj-pi)
2325 
2326  rji = vabs(rj,ri,thj,thi-pi)
2327  thji = vdir(rj,ri,thj,thi-pi)
2328 
2329  rik = vabs(ri,rk,thi,thk-pi)
2330  thik = vdir(ri,rk,thi,thk-pi)
2331 
2332  rki = vabs(rk,ri,thk,thi-pi)
2333  thki = vdir(rk,ri,thk,thi-pi)
2334 
2335  ril = vabs(ri,rl,thi,thl-pi)
2336  thil = vdir(ri,rl,thi,thl-pi)
2337 
2338  rli = vabs(rl,ri,thl,thi-pi)
2339  thli = vdir(rl,ri,thl,thi-pi)
2340 
2341  rjl = vabs(rj,rl,thj,thl)
2342  thjl = vdir(rj,rl,thj,thl)
2343 
2344  rjk = vabs(rj,rk,thj,thk)
2345  thjk = vdir(rj,rk,thj,thk)
2346 
2347  rkl = vabs(rk,rl,thk,thl)
2348  thkl = vdir(rk,rl,thk,thl)
2349 
2350  zijkl = oi-oj-ok-ol
2351 
2352  b1= -1./zijkl*(2./3.*( &
2353  min(ri,rj,rij,thi,thj,thij)*a1(rkl,rk,rl,thkl,thk,thl)&
2354  +vmin(ri,rk,rik,thi,thk,thik)*a1(rjl,rj,rl,thjl,thj,thl)&
2355  +vmin(ri,rl,ril,thi,thl,thil)*a1(rjk,rj,rk,thjk,thj,thk)&
2356  +vmin(rk,ri,rki,thk,thi,thki)*a3(rjl,rj,rl,thjl-pi,thj,thl)&
2357  +vmin(rl,ri,rli,thl,thi,thli)*a3(rjk,rj,rk,thjk-pi,thj,thk)&
2358  +vmin(rj,ri,rji,thj,thi,thji)*a3(rkl,rk,rl,thkl-pi,thk,thl) &
2359  ) +w1(ri,rj,rk,rl,thi,thj,thk,thl) )
2360  RETURN

References a1(), a3(), omeg(), pi, vabs(), vdir(), vmin(), and w1().

◆ b2()

real function w3canomd::b2 ( real  XI,
real  XJ,
real  XK,
real  XL,
real  THI,
real  THJ,
real  THK,
real  THL 
)

Weights of the A_2^*A_3A_4 part of the canonical transformation.

Parameters
XIWave number
XJWave number
XKWave number
XLWave number
THI
THJ
THK
THL
Returns
B2
Author
Peter Janssen
Date
NA

Definition at line 2381 of file w3canomd.F90.

2381  !-----------------------------------------------------------------------
2382  !
2383  !*** *REAL FUNCTION* *B2(XI,XJ,XK,XL,THI,THJ,THK,THL)
2384  !
2385  !-----------------------------------------------------------------------
2386  !
2387  !*** *B2* WEIGHTS OF THE A_2^*A_3A_4 PART OF THE CANONICAL
2388  ! TRANSFORMATION.
2389  !
2390  ! PETER JANSSEN
2391  !
2392  ! PURPOSE.
2393  ! --------
2394  !
2395  ! GIVES NONLINEAR TRANSFER COEFFICIENT FOR FOUR
2396  ! WAVE INTERACTIONS OF GRAVITY-CAPILLARY WAVES IN THE
2397  ! IDEAL CASE OF NO CURRENT. (CF.ZAKHAROV,AND CRAWFORD ET AL)
2398  !
2399  ! INTERFACE.
2400  ! ----------
2401  ! *B2(XI,XJ,XK,XL)*
2402  ! *XI* - WAVE NUMBER
2403  ! *XJ* - WAVE NUMBER
2404  ! *XK* - WAVE NUMBER
2405  ! *XL* - WAVE NUMBER
2406  ! METHOD.
2407  ! -------
2408  ! NONE
2409  !
2410  !
2411  ! EXTERNALS.
2412  ! ----------
2413  ! NONE.
2414  !
2415  !-----------------------------------------------------------------------
2416  !
2417  IMPLICIT NONE
2418  common/const/depth,alpha,mdw,gam_j,depthd
2419  common/precis/doublep
2420  LOGICAL DOUBLEP
2421  INTEGER MDW
2422  REAL DEPTH,ALPHA,GAM_J,DEPTHA,DEPTHD
2423  REAL DEL1,XI,XJ,XK,XL,THI,THJ,THK,THL,OI,OJ,OK,OL,RI,RJ,RK,RL,&
2424  RIJ,RIK,RKI,RJL,RLJ,RJK,RKJ,RLI,RIL,RKL,THIJ,&
2425  THIK,THKI,THJL,THLJ,THJK,THKJ,THLI,THIL,THKL,ZIJKL
2426  !
2427  !*** 1. DETERMINE NONLINEAR TRANSFER.
2428  ! --------------------------------
2429  !
2430 
2431  ri=xi
2432  rj=xj
2433  rk=xk
2434  rl=xl
2435 
2436  rij = vabs(ri,rj,thi,thj)
2437  thij = vdir(ri,rj,thi,thj)
2438 
2439  rik = vabs(ri,rk,thi,thk-pi)
2440  thik = vdir(ri,rk,thi,thk-pi)
2441 
2442  rki = vabs(rk,ri,thk,thi-pi)
2443  thki = vdir(rk,ri,thk,thi-pi)
2444 
2445  ril = vabs(ri,rl,thi,thl-pi)
2446  thil = vdir(ri,rl,thi,thl-pi)
2447 
2448  rli = vabs(rl,ri,thl,thi-pi)
2449  thli = vdir(rl,ri,thl,thi-pi)
2450 
2451  rjl = vabs(rj,rl,thj,thl-pi)
2452  thjl = vdir(rj,rl,thj,thl-pi)
2453 
2454  rlj = vabs(rl,rj,thl,thj-pi)
2455  thlj = vdir(rl,rj,thl,thj-pi)
2456 
2457  rjk = vabs(rj,rk,thj,thk-pi)
2458  thjk = vdir(rj,rk,thj,thk-pi)
2459 
2460  rkj = vabs(rk,rj,thk,thj-pi)
2461  thkj = vdir(rk,rj,thk,thj-pi)
2462 
2463  rkl = vabs(rk,rl,thk,thl)
2464  thkl = vdir(rk,rl,thk,thl)
2465 
2466  b2= a3(ri,rj,rij,thi,thj,thij-pi)*a3(rk,rl,rkl,thk,thl,thkl-pi)&
2467  +a1(rj,rk,rjk,thj,thk,thjk)*a1(rl,ri,rli,thl,thi,thli)&
2468  +a1(rj,rl,rjl,thj,thl,thjl)*a1(rk,ri,rki,thk,thi,thki)&
2469  -a1(rij,ri,rj,thij,thi,thj)*a1(rkl,rk,rl,thkl,thk,thl)&
2470  -a1(ri,rk,rik,thi,thk,thik)*a1(rl,rj,rlj,thl,thj,thlj)&
2471  -a1(ri,rl,ril,thi,thl,thil)*a1(rk,rj,rkj,thk,thj,thkj)
2472 
2473 
2474  RETURN

References a1(), a3(), pi, vabs(), and vdir().

Referenced by c_ql().

◆ b3()

real function w3canomd::b3 ( real  XI,
real  XJ,
real  XK,
real  XL,
real  THI,
real  THJ,
real  THK,
real  THL 
)

Weights of the A_2^*A_3^*A_4 part of the canonical transformation.

Parameters
XIWave number
XJWave number
XKWave number
XLWave number
THI
THJ
THK
THL
Returns
B3
Author
Peter Janssen
Date
NA

Definition at line 2016 of file w3canomd.F90.

2016  !-----------------------------------------------------------------------
2017  !
2018  !*** *REAL FUNCTION* *B3(XI,XJ,XK,XL,THI,THJ,THK,THL)
2019  !
2020  !-----------------------------------------------------------------------
2021  !
2022  !*** *B3* WEIGHTS OF THE A_2^*A_3^*A_4 PART OF THE
2023  ! CANONICAL TRANSFORMATION.
2024  !
2025  ! PETER JANSSEN
2026  !
2027  ! PURPOSE.
2028  ! --------
2029  !
2030  ! GIVES NONLINEAR TRANSFER COEFFICIENT FOR FOUR
2031  ! WAVE INTERACTIONS OF GRAVITY-CAPILLARY WAVES IN THE
2032  ! IDEAL CASE OF NO CURRENT. (CF.ZAKHAROV,AND CRAWFORD ET AL)
2033  !
2034  ! INTERFACE.
2035  ! ----------
2036  ! *B3(XI,XJ,XK,XL)*
2037  ! *XI* - WAVE NUMBER
2038  ! *XJ* - WAVE NUMBER
2039  ! *XK* - WAVE NUMBER
2040  ! *XL* - WAVE NUMBER
2041  ! METHOD.
2042  ! -------
2043  ! NONE
2044  !
2045  !
2046  ! EXTERNALS.
2047  ! ----------
2048  ! NONE.
2049  !
2050  !-----------------------------------------------------------------------
2051  !
2052  IMPLICIT NONE
2053  common/const/depth,alpha,mdw,gam_j,depthd
2054  common/precis/doublep
2055  LOGICAL DOUBLEP
2056  INTEGER MDW
2057  REAL DEPTH,ALPHA,GAM_J,DEPTHA,DEPTHD
2058  REAL DEL1,XI,XJ,XK,XL,THI,THJ,THK,THL,OI,OJ,OK,OL,RI,RJ,RK,RL,&
2059  RIJ,RJI,RIK,RKI,RLJ,RJL,RJK,RKJ,RLI,RIL,RLK,RKL,THIJ,THJI,&
2060  THIK,THKI,THLJ,THJL,THJK,THKJ,THLI,THIL,THLK,THKL,ZIJKL
2061  !
2062  !*** 1. DETERMINE NONLINEAR TRANSFER.
2063  ! --------------------------------
2064  !
2065  IF (doublep) THEN
2066  del1=10.**(-5)
2067  ELSE
2068  del1=0.01
2069  ENDIF
2070 
2071  ri=xi
2072  rj=xj
2073  rk=xk
2074  rl=xl
2075 
2076  oi=omeg(ri)+del1
2077  oj=omeg(rj)+del1
2078  ok=omeg(rk)+del1
2079  ol=omeg(rl)+del1
2080 
2081  rij = vabs(ri,rj,thi,thj)
2082  thij = vdir(ri,rj,thi,thj)
2083 
2084  rji = vabs(rj,ri,thj,thi)
2085  thji = vdir(rj,ri,thj,thi)
2086 
2087  rik = vabs(ri,rk,thi,thk)
2088  thik = vdir(ri,rk,thi,thk)
2089 
2090  rki = vabs(rk,ri,thk,thi)
2091  thki = vdir(rk,ri,thk,thi)
2092 
2093  rlj = vabs(rl,rj,thl,thj-pi)
2094  thlj = vdir(rl,rj,thl,thj-pi)
2095 
2096  rjl = vabs(rj,rl,thj,thl-pi)
2097  thjl = vdir(rj,rl,thj,thl-pi)
2098 
2099  rjk = vabs(rj,rk,thj,thk)
2100  thjk = vdir(rj,rk,thj,thk)
2101 
2102  rkj = vabs(rk,rj,thk,thj)
2103  thkj = vdir(rk,rj,thk,thj)
2104 
2105  rli = vabs(rl,ri,thl,thi-pi)
2106  thli = vdir(rl,ri,thl,thi-pi)
2107 
2108  ril = vabs(ri,rl,thi,thl-pi)
2109  thil = vdir(ri,rl,thi,thl-pi)
2110 
2111  rlk = vabs(rl,rk,thl,thk-pi)
2112  thlk = vdir(rl,rk,thl,thk-pi)
2113 
2114  rkl = vabs(rk,rl,thk,thl-pi)
2115  thkl = vdir(rk,rl,thk,thl-pi)
2116 
2117  zijkl = oi+oj+ok-ol
2118 
2119  b3= -1./zijkl*(2.*( &
2120  vmin(rl,ri,rli,thl,thi,thli)*a1(rjk,rj,rk,thjk,thj,thk)&
2121  -vmin(rij,ri,rj,thij,thi,thj)*a1(rl,rk,rlk,thl,thk,thlk)&
2122  -vmin(rik,ri,rk,thik,thi,thk)*a1(rl,rj,rlj,thl,thj,thlj)&
2123  -vplus(rj,ri,rji,thj,thi,thji-pi)*a1(rk,rl,rkl,thk,thl,thkl)&
2124  -vplus(rk,ri,rki,thk,thi,thki-pi)*a1(rj,rl,rjl,thj,thl,thjl)&
2125  +vmin(ri,rl,ril,thi,thl,thil)*a3(rj,rk,rjk,thj,thk,thjk-pi))&
2126  +3.*w1(rl,rk,rj,ri,thl,thk,thj,thi) )
2127 
2128  RETURN

References a1(), a3(), omeg(), pi, vabs(), vdir(), vmin(), vplus(), and w1().

Referenced by c_ql().

◆ b4()

real function w3canomd::b4 ( real  XI,
real  XJ,
real  XK,
real  XL,
real  THI,
real  THJ,
real  THK,
real  THL 
)

Weights of the A_2^*A_3^*A_4^* part of the canonical transformation.

Parameters
XIWave number
XJWave number
XKWave number
XLWave number
THI
THJ
THK
THL
Returns
B4
Author
Peter Janssen
Date
NA

Definition at line 2149 of file w3canomd.F90.

2149  !-----------------------------------------------------------------------
2150  !
2151  !*** *REAL FUNCTION* *B4(XI,XJ,XK,XL,THI,THJ,THK,THL)
2152  !
2153  !-----------------------------------------------------------------------
2154  !
2155  !*** *B4* WEIGHTS OF THE A_2^*A_3^*A_4^* PART OF THE CANONICAL
2156  ! TRANSFORMATION.
2157  !
2158  ! PETER JANSSEN
2159  !
2160  ! PURPOSE.
2161  ! --------
2162  !
2163  ! GIVES NONLINEAR TRANSFER COEFFICIENT FOR FOUR
2164  ! WAVE INTERACTIONS OF GRAVITY-CAPILLARY WAVES IN THE
2165  ! IDEAL CASE OF NO CURRENT. (CF.ZAKHAROV,AND CRAWFORD ET AL)
2166  !
2167  ! INTERFACE.
2168  ! ----------
2169  ! *B4(XI,XJ,XK,XL)*
2170  ! *XI* - WAVE NUMBER
2171  ! *XJ* - WAVE NUMBER
2172  ! *XK* - WAVE NUMBER
2173  ! *XL* - WAVE NUMBER
2174  ! METHOD.
2175  ! -------
2176  ! NONE
2177  !
2178  !
2179  ! EXTERNALS.
2180  ! ----------
2181  ! NONE.
2182  !
2183  !-----------------------------------------------------------------------
2184  !
2185  IMPLICIT NONE
2186  common/const/depth,alpha,mdw,gam_j,depthd
2187  common/precis/doublep
2188  LOGICAL DOUBLEP
2189  INTEGER MDW
2190  REAL DEPTH,ALPHA,GAM_J,DEPTHA,DEPTHD
2191  REAL DEL1,XI,XJ,XK,XL,THI,THJ,THK,THL,OI,OJ,OK,OL,RI,RJ,RK,RL,&
2192  RIJ,RIK,RIL,RJL,RJK,RKL,THIJ,THIK,THIL,THJL,THJK,THLK,THKL,&
2193  ZIJKL
2194  !
2195  !*** 1. DETERMINE NONLINEAR TRANSFER.
2196  ! --------------------------------
2197  !
2198 
2199 
2200  ri=xi
2201  rj=xj
2202  rk=xk
2203  rl=xl
2204 
2205  oi=omeg(ri)
2206  oj=omeg(rj)
2207  ok=omeg(rk)
2208  ol=omeg(rl)
2209 
2210 
2211  rij = vabs(ri,rj,thi,thj)
2212  thij = vdir(ri,rj,thi,thj)
2213 
2214  rik = vabs(ri,rk,thi,thk)
2215  thik = vdir(ri,rk,thi,thk)
2216 
2217  ril = vabs(ri,rl,thi,thl)
2218  thil = vdir(ri,rl,thi,thl)
2219 
2220  rjl = vabs(rj,rl,thj,thl)
2221  thjl = vdir(rj,rl,thj,thl)
2222 
2223  rjk = vabs(rj,rk,thj,thk)
2224  thjk = vdir(rj,rk,thj,thk)
2225 
2226  rkl = vabs(rk,rl,thk,thl)
2227  thkl = vdir(rk,rl,thk,thl)
2228 
2229 
2230  zijkl = oi+oj+ok+ol
2231 
2232  b4= -1./zijkl*(2./3.*( &
2233  vplus(rij,ri,rj,thij-pi,thi,thj)*a1(rkl,rk,rl,thkl,thk,thl)&
2234  +vplus(rik,ri,rk,thik-pi,thi,thk)*a1(rjl,rj,rl,thjl,thj,thl)&
2235  +vplus(ril,ri,rl,thil-pi,thi,thl)*a1(rjk,rj,rk,thjk,thj,thk)&
2236  +vmin(rik,ri,rk,thik,thi,thk)*a3(rjl,rj,rl,thjl-pi,thj,thl)&
2237  +vmin(ril,ri,rl,thil,thi,thl)*a3(rjk,rj,rk,thjk-pi,thj,thk)&
2238  +vmin(rij,ri,rj,thij,thi,thj)*a3(rkl,rk,rl,thkl-pi,thk,thl) )&
2239  +w4(ri,rj,rk,rl,thi,thj,thk,thl) )
2240 
2241  RETURN

References a1(), a3(), omeg(), pi, vabs(), vdir(), vmin(), vplus(), and w4().

◆ c_ql()

real function w3canomd::c_ql ( real  XK0,
real  XK1,
real  TH0,
real  TH1 
)

Determine contribution by quasi-linear terms.

Parameters
XK0
XK1
TH0
TH1
Returns
C_QL
Author
Peter Janssen
Date
NA

Definition at line 1301 of file w3canomd.F90.

1301  !-----------------------------------------------------------------------
1302  !
1303  !*** *REAL FUNCTION* *C_QL(XK0,XK1,TH0,TH1)
1304  !
1305  !-----------------------------------------------------------------------
1306  !
1307  !*** *A* DETERMINES THE QUASI-LINEAR TERM.
1308  !
1309  ! PETER JANSSEN
1310  !
1311  ! PURPOSE.
1312  ! --------
1313  !
1314  ! DETERMINE CONTRIBUTION BY QUASI-LINEAR TERMS
1315  !
1316  ! INTERFACE.
1317  ! ----------
1318  ! *C_QL(XK0,XK1)*
1319  ! *XK0* - WAVE NUMBER
1320  ! *XK1* - WAVE NUMBER
1321  ! METHOD.
1322  ! -------
1323 
1324  ! NONE
1325  !
1326  ! EXTERNALS.
1327  ! ----------
1328  ! NONE.
1329  !
1330  !-----------------------------------------------------------------------
1331  !
1332  IMPLICIT NONE
1333  common/const/depth,alpha,mdw,gam_j,depthd
1334  INTEGER MDW
1335  REAL DEPTH,ALPHA,GAM_J,DEPTHA,DEPTHD
1336  REAL XK0,XK1,TH0,TH1,OM1,F1
1337  !
1338  !*** 1. DETERMINE NONLINEAR TRANSFER.
1339  ! --------------------------------
1340  !
1341  om1 = omeg(xk1)
1342  f1 = sqrt(om1/(2.*g))
1343 
1344  c_ql = 2./f1**2*(b2(xk0,xk1,xk1,xk0,th0,th1,th1,th0)+&
1345  b3(xk0,xk0,xk1,xk1,th0-pi,th0,th1,th1))
1346 
1347  RETURN

References b2(), b3(), g, omeg(), and pi.

Referenced by tables_2nd().

◆ cal_sec_order_spec()

subroutine w3canomd::cal_sec_order_spec ( real, dimension(nang,nfre), intent(in)  F1,
real, dimension(nang,nfre), intent(out)  F3,
integer, intent(in)  NFRE,
integer, intent(in)  NANG,
real, dimension(nfre), intent(in)  FR,
real, dimension(nfre), intent(in)  DFIM,
real, dimension(nang), intent(in)  TH,
real, intent(in)  DELTH,
real, intent(in)  DPTH,
real, intent(in)  SIGM,
integer, intent(in)  NFREH,
integer, intent(in)  NANGH 
)

Determines second order spectrum.

Parameters
[in]F12-D free wave spectrum
[out]F32-D spectrum including 2nd-order correction
[in]NFREnumber of frequencies
[in]NANGnumber of directions
[in]FRfrequencies
[in]DFIMfrequency increment
[in]THdirectional array
[in]DELTHdirectional increment
[in]DPTHdepth array
[in]SIGMmapping indicator
[in]NFREH
[in]NANGH
Author
Peter Janssen
Date
NA

Definition at line 369 of file w3canomd.F90.

369  !
370  !*** *CAL_SEC_ORDER_SPEC* DETERMINES SECOND_ORDER SPECTRUM
371  !
372  ! PETER JANSSEN
373  !
374  ! PURPOSE.
375  ! --------
376  !
377  ! DETERMINATION OF SECOND-ORDER SPECTRUM
378  !
379  ! INTERFACE.
380  ! ----------
381  ! *CALL* *CAL_SEC_ORDER_SPEC(F1,F3,NFRE,NANG,FR,
382  ! DFIM,TH,DELTH,DPTH,SIGM)*
383  !
384  ! INPUT:
385  ! *F1* - 2-D FREE WAVE SPECTRUM
386  ! *NFRE* - NUMBER OF FREQUENCIES
387  ! *NANG* - NUMBER OF DIRECTIONS
388  ! *FR* - FREQUENCIES
389  ! *DFIM* - FREQUENCY INCREMENT
390  ! *TH* - DIRECTIONAL ARRAY
391  ! *DELTH* - DIRECTIONAL INCREMENT
392  ! *DPTH* - DEPTH ARRAY
393  ! *SIGM* - FOR SIGM = 1 FORWARD MAPPING
394  ! WHILE FOR SIGM = -1 INVERSE
395  ! MAPPING.
396  !
397  ! OUTPUT:
398  ! *F3* - 2-D SPECTRUM INCLUDING SECOND-ORDER
399  ! CORRECTION
400  !
401  ! METHOD.
402  ! -------
403  ! IS DESCRIBED IN JANSSEN (2009), JFM, 637, 1-44.
404  !
405  ! EXTERNALS.
406  ! ----------
407  ! NONE
408  !
409  !-----------------------------------------------------------------------
410  !
411  IMPLICIT NONE
412 
413  REAL, INTENT(IN) :: F1(NANG,NFRE)
414  REAL, INTENT(OUT) :: F3(NANG,NFRE)
415 
416  INTEGER, INTENT(IN) :: NFRE,NANG,NFREH, NANGH
417 
418  REAL, INTENT(IN) :: DFIM(NFRE),FR(NFRE), TH(NANG), DELTH
419  REAL, INTENT(IN) :: DPTH, SIGM
420 
421  LOGICAL FRSTIME,DOUBLEP
422 
423  INTEGER MDW,M,K, K0,M0,MP,KP,MM,KM,KL,KLL,ML,JD
424  INTEGER, SAVE :: MR, MA,NMAX
425 #ifdef W3_OMPG
426  !$omp threadprivate( MR, MA, NMAX )
427 #endif
428 
429  ! PARAMETER (NFREH=32,NANGH=36)
430 
431  INTEGER, SAVE :: INDEP
432 #ifdef W3_OMPG
433  !$omp threadprivate( INDEP )
434 #endif
435  REAL,ALLOCATABLE :: PF1(:,:),PF3(:,:)
436 
437 
438  REAL DEPTH,ALPHA,GAM_J,DEPTHD
439  REAL OM0,AA1,BB1,&
440  F,EPSMIN,DELFF,SPEC1,SQRTK
441  REAL FRAC,DEL,DELF,D1,D2,D3,D4,C1,&
442  C2,XM,XK
443  REAL, SAVE :: OMSTART
444  REAL, SAVE :: XMR,XMA, DELTHH, CO1
445 #ifdef W3_OMPG
446  !$omp threadprivate( OMSTART, XMR,XMA, DELTHH, CO1 )
447 #endif
448  REAL :: F13(NFREH,NANGH)
449  REAL :: SUM0,AKMEAN
450  REAL :: DELOM(NFREH),THH(NANGH),DFDTH(NFREH)
451 
452  DATA frstime/.true./
453 
454  common/const/depth,alpha,mdw,gam_j,depthd
455  common/precis/doublep
456 
457  !
458  !*** 2. DETERMINE SECOND ORDER CORRECTION TO THE SPECTRUM
459  ! ----------------------------------------------------
460 
461  !
462 #ifdef W3_T
463  print*,' START SECOND-ORDER CALC.'
464 #endif
465 
466  doublep = .true.
467  !
468  !*** 2.1 SET UP OF LOW-RESOLUTION CALCULATION GRID.
469  ! ---------------------------------------------
470  !
471  epsmin = 1.0e-4
472  frac = 0.1
473  omstart = zpi*fr(1)
474  mr = max(1,nfre/nfreh)
475  xmr = 1./float(mr)
476  ma = nang/nangh
477  xma = 1./float(ma)
478  delthh = float(ma)*delth
479 
480  IF (frstime) THEN
481  ! IF (COUNTER.GT.0) THEN
482  ! DEALLOCATE(OMEGA,TFAK,TA,TB,TC_QL,TT_4M,TT_4P,IM_P,IM_M,TFAKH)
483  ! ENDIF
484  ALLOCATE(omega(nfreh))
485  ALLOCATE(tfak(nfre,ndepth))
486  ALLOCATE(ta(nangh,nfreh,nfreh,ndepth))
487  ALLOCATE(tb(nangh,nfreh,nfreh,ndepth))
488  ALLOCATE(tc_ql(nangh,nfreh,nfreh,ndepth))
489  ALLOCATE(tt_4m(nangh,nfreh,nfreh,ndepth))
490  ALLOCATE(tt_4p(nangh,nfreh,nfreh,ndepth))
491  ALLOCATE(im_p(nfreh,nfreh))
492  ALLOCATE(im_m(nfreh,nfreh))
493  ALLOCATE(tfakh(nfreh,ndepth))
494 
495  DO m=1,nfreh
496  omega(m) = zpi*fr(mr*m)
497  ENDDO
498 
499  DO k=1,nangh
500  k0 = ma*k+1
501  IF (k0.GT.nang) k0 = k0-nang
502  thh(k) = th(k0)
503  ENDDO
504 
505  co1 = 1./2.*delthh
506  delom(1) = co1*(omega(2)-omega(1))
507  DO m=2,nfreh-1
508  delom(m)=co1*(omega(m+1)-omega(m-1))
509  ENDDO
510  delom(nfreh)=co1*(omega(nfreh)-omega(nfreh-1))
511  !
512  dfdth = delom/zpi
513  !
514  !*** 2.2 INITIALISE TABLES
515  ! ---------------------
516  !
517  nmax = xmr*(1+nint(log(2.*omega(nfreh)/omstart)/log(1.+frac)))
518  nmax = nmax+1
519 #ifdef W3_T
520  print*,' NMAX = ',nmax
521 #endif
522 
523  depthd = 1.1
524 
525  DO jd=1,ndepth
526  depth = deptha*depthd**(jd-1)
527  DO m=1,nfre
528  om0 = zpi*fr(m)
529  tfak(m,jd) = aki(om0,depth)
530  ENDDO
531  ENDDO
532 
533  indep = 1+nint(log(dpth/deptha)/log(depthd))
534  indep = min(ndepth,indep)
535  indep = max(1,indep)
536 
537  CALL tables_2nd(nfreh,nangh,ndepth,deptha,omstart,frac,xmr,&
538  dfdth,omega,thh)
539  print*, '2ND ORDER TABLES GENERATED:',ndepth,deptha, delthh
540 
541  frstime = .false.
542  ENDIF ! end of test on FRSTIME
543  !
544  counter=counter+1
545  !
546  !*** DETERMINE SOME MOMENTS.
547  ! ----------------------
548  !
549  sum0 = 0.
550  akmean = 0.
551  DO m=1,nfre
552  DO k=1,nang
553  sqrtk=sqrt(tfak(m,indep))
554  sum0 = sum0+f1(k,m)*dfim(m)
555  akmean = akmean+f1(k,m)*dfim(m)/sqrtk
556  ENDDO
557  ENDDO
558  !
559  ! NB: AKMEAN is the mean wavenumber corresponding to Tm0,-1 in deep water
560  !
561  akmean = (sum0/akmean)**2
562 
563  !
564  !*** 2.2 INTERPOLATION OR NOT.
565  ! ------------------------
566  !
567  IF (mr.EQ.1 .AND. ma.EQ.1) THEN
568  !
569  !*** 2.21 NO INTERPOLATION.
570  ! ----------------------
571  !
572 #ifdef W3_T
573  print*,' NO THINNING AND INTERPOLATION'
574  print*,'nanG:',nang,nmax,nfre,ndepth,deptha,depthd,dpth,'##',delth,delthh
575 #endif
576 
577  CALL secspom(f1,f3,nfre,nang,nmax,ndepth,&
578  deptha,depthd,omstart,frac,mr,dfdth,omega,&
579  dpth,akmean,ta,tb,tc_ql,tt_4m,tt_4p,&
580  im_p,im_m,counter)
581  DO m=1,nfre
582  DO k=1,nang
583  delf = f3(k,m)
584  f3(k,m)=max(0.00000001,f1(k,m)+sigm*delf)
585  ENDDO
586  ENDDO
587 
588  ELSE
589 
590  !
591  !*** 2.22 ENERGY CONSERVING INTERPOLATION SCHEME
592  ! -------------------------------------------
593  !
594  print*,' !THINNING AND INTERPOLATION!'
595  ALLOCATE(pf1(nangh,nfreh))
596  ALLOCATE(pf3(nangh,nfreh))
597 
598  pf1 = 0.
599  DO m=1,nfreh
600  DO k=1,nangh
601  m0 = mr*m
602  mp = m0+1
603  mp = min(nfre,mp)
604  mm = m0-1
605 
606  k0 = ma*k+1
607  kp = k0+1
608  km = k0-1
609  delff = 0.
610  DO kl = km,kp
611  kll = kl
612  IF (kll.GT.nang) kll = kll-nang
613  IF (kll.LT.1) kll = kll+nang
614  DO ml = mm,mp
615  del = dfim(ml)
616  delff = delff+del
617  spec1 = f1(kll,ml)
618  pf1(k,m)=pf1(k,m)+spec1*del
619  ENDDO
620  ENDDO
621  pf1(k,m) =pf1(k,m)/delff
622  ENDDO
623  ENDDO
624  !
625  !*** 2.23 DETERMINE SECOND-ORDER SPEC
626  ! --------------------------------
627  !
628  CALL secspom(pf1,pf3,nfreh,nangh,nmax,ndepth,&
629  deptha,depthd,omstart,frac,mr,dfdth,omega,&
630  dpth,akmean,ta,tb,tc_ql,tt_4m,tt_4p,&
631  im_p,im_m,counter)
632  !
633  !*** 2.24 INTERPOLATE TOWARDS HIGH-RES GRID
634  ! --------------------------------------
635  !
636  DO m=1,nfre
637  DO k=1,nang
638  xm = real(m/mr)
639  xk = real((k-1)/ma)
640 
641  m0 = max(1,int(xm))
642  k0 = int(xk)
643 
644  d1 = real(m)/real(mr)-xm
645  d2 = 1.-d1
646  d3 = real(k-1)/real(ma)-xk
647  d4 = 1.-d3
648 
649  IF (k0.LT.1) k0 = k0+nangh
650  mp = min(nfreh,m0+1)
651  kp = k0+1
652  IF (kp.GT.nangh) kp = kp-nangh
653 
654  c1 = pf3(k0,m0)*d4+pf3(kp,m0)*d3
655  c2 = pf3(kp,mp)*d3+pf3(k0,mp)*d4
656 
657  delf = c1*d2+c2*d1
658  f3(k,m)=max(0.00000001,f1(k,m)+sigm*delf)
659  ENDDO
660  ENDDO
661 
662  ENDIF
663 
664 
665  IF (mr.GT.1 .OR. ma.GT.1 ) THEN
666  DO m=1,nfreh
667  aa1 = 0.
668  DO k=1,nangh
669  aa1 = aa1+pf1(k,m)*delthh
670  ENDDO
671  aa1 = max(aa1,epsmin)
672 
673  bb1 = 0.
674  DO k=1,nangh
675  bb1 = bb1+(pf1(k,m)+pf3(k,m))*delthh
676  ENDDO
677  bb1 = max(bb1,epsmin)
678  f = omega(m)/zpi
679 
680 #ifdef W3_T
681  WRITE(6,62) m,f,aa1,bb1,delthh
682  WRITE(80,62) m,f,aa1,bb1,delthh
683 #endif
684  ENDDO
685 
686  DO m=1,nfreh
687  DO k=1,nangh
688  f13(m,k)=pf1(k,m)+pf3(k,m)
689  ENDDO
690  ENDDO
691  ENDIF
692 
693  !
694 #ifdef W3_T
695 62 FORMAT(i4,9f16.9)
696 #endif
697  !
698  RETURN

References aki(), deptha, ndepth, secspom(), tables_2nd(), and zpi.

Referenced by w3add2ndorder().

◆ omeg()

real function w3canomd::omeg ( real  X)

Determines the dispersion relation for gravity waves.

Parameters
XWave number
Returns
OMEG
Author
Peter Janssen
Date
NA

Definition at line 2692 of file w3canomd.F90.

2692  !-----------------------------------------------------------------------
2693  !
2694  !*** *REAL FUNCTION* *OMEG(X)*
2695  !
2696  !-----------------------------------------------------------------------
2697  !
2698  !
2699  !*** *OMEG* DETERMINES THE DISPERSION RELATION FOR GRAVITY
2700  ! WAVES.
2701  !
2702  ! PETER JANSSEN
2703  !
2704  ! PURPOSE.
2705  ! --------
2706  !
2707  ! GIVES DISPERSION RELATION FOR GRAVITY-
2708  ! WAVES IN THE IDEAL CASE OF NO CURRENT.
2709  !
2710  ! INTERFACE.
2711  ! ----------
2712  ! *OMEG(X)*
2713  ! *X* - WAVE NUMBER
2714  !
2715  ! METHOD.
2716  ! -------
2717  ! NONE
2718  !
2719  ! EXTERNALS.
2720  ! ----------
2721  ! NONE.
2722  !
2723  !-----------------------------------------------------------------------
2724  !
2725  IMPLICIT NONE
2726  common/const/depth,alpha,mdw,gam_j,depthd
2727  INTEGER MDW
2728  REAL DEPTH,ALPHA,GAM_J,DEPTHD
2729  REAL D,XK,X,T
2730 
2731  d = depth
2732  xk = abs(x)
2733  t = tanh(xk*d)
2734  omeg=sqrt(g*xk*t)
2735 
2736  RETURN

References g.

Referenced by a(), a1(), a3(), b(), b1(), b3(), b4(), c_ql(), u(), v2(), vmin(), and vplus().

◆ secspom()

subroutine w3canomd::secspom ( real, dimension(nang,nfre)  F1,
real, dimension(nang,nfre)  F3,
integer  NFRE,
integer  NANG,
integer  NMAX,
integer  NDEPTH,
real  DEPTHA,
real  DEPTHD,
real  OMSTART,
real  FRAC,
integer  MR,
real, dimension(nfre)  DFDTH,
real, dimension(nfre)  OMEGA,
real  DEPTH,
real  AKMEAN,
real, dimension(nang,nfre,nfre,ndepth TA,
real, dimension(nang,nfre,nfre,ndepth TB,
real, dimension(nang,nfre,nfre,ndepth TC_QL,
real, dimension(nang,nfre,nfre,ndepth TT_4M,
real, dimension(nang,nfre,nfre,ndepth TT_4P,
integer, dimension(nfre,nfre)  IM_P,
integer, dimension(nfre,nfre)  IM_M,
integer  COUNTER 
)

Computes second order spectrum in frequency space.

Parameters
F12D free wave spectrum (input)
F3bound waves spectrum (output)
NFREnumber of frequencies
NANGnumber of directions
NMAXmaximum index corresponds to twice the cut-off frequency
NDEPTHnumber of entries in depth table
DEPTHAstart value depth array
DEPTHDincrement depth array
OMSTARTstart value angular frequency array
FRACfractional increase in frequency space
MRthinning factor in frequency space
OMEGAangular frequency array
DEPTHdepth array
AKMEANmean wavenumber array
TAtable for minus interactions
TBtable for plus interactions
TC_QLtable for quasi-linear interactions
TT_4Mtable for stokes frequency correction
TT_4Ptable for stokes frequency correction
IM_Ptable for wavenumber m2 plus
IM_Mtable for wavenumber m2 min
Author
NA
Date
NA

Definition at line 925 of file w3canomd.F90.

925  !
926  !--------------------------------------------------------------------
927  !
928  !*****SECSPOM** COMPUTES SECOND ORDER SPECTRUM IN FREQUENCY SPACE.
929  !
930  ! P.JANSSEN JULY 2008
931  !
932  ! PURPOSE
933  ! -------
934  ! DETERMINES SECOND-ORDER SPECTRUM, BASED ON JANSSEN (2008)
935  ! THERE ARE THREE CORRECTIONS:
936  ! 1) GENERATION OF SECOND-HARMONICS
937  ! 2) QUASI-LINEAR EFFECT
938  ! 3) SHIFT OF SPECTRUM BECAUSE OF STOKES FREQUENCY
939  ! CORRECTION.
940  !
941  ! INTERFACE
942  ! ---------
943  ! *CALL* *SECSPOM(F1,F3,NFRE,NANG,NMAX,NDEPTH,
944  ! DEPTHA,DEPTHD,OMSTART,FRAC,MR,DFDTH,OMEGA,
945  ! DEPTH,AKMEAN,TA,TB,TC_QL,TT_4M,TT_4P,
946  ! IM_P,IM_M)*
947  !
948  !
949  ! PARAMETER TYPE PURPOSE.
950  ! --------- ---- -------
951  !
952  ! F1 REAL 2D FREE WAVE SPECTRUM (INPUT)
953  ! F3 REAL BOUND WAVES SPECTRUM (OUTPUT)
954  ! NFRE INTEGER NUMBER OF FREQUENCIES
955  ! NANG INTEGER NUMBER OF DIRECTIONS
956  ! NMAX INTEGER MAXIMUM INDEX CORRESPONDS TO TWICE THE CUT-OFF
957  ! FREQUENCY
958  ! NDEPTH INTEGER NUMBER OF ENTRIES IN DEPTH TABLE
959  ! DEPTHA REAL START VALUE DEPTH ARRAY
960  ! DEPTHD REAL INCREMENT DEPTH ARRAY
961  ! OMSTART REAL START VALUE ANG. FREQUENCY ARRAY
962  ! FRAC REAL FRACTIONAL INCREASE IN FREQUENCY SPACE
963  ! MR INTEGER THINNING FACTOR IN FREQUENCY SPACE
964  ! OMEGA REAL ANGULAR FREQUENCY ARRAY
965  ! DEPTH REAL DEPTH ARRAY
966  ! AKMEAN REAL MEAN WAVENUMBER ARRAY
967  ! TA REAL TABLE FOR MINUS INTERACTIONS
968  ! TB REAL TABLE FOR PLUS INTERACTIONS
969  ! TC_QL REAL TABLE FOR QUASI-LINEAR INTERACTIONS
970  ! TT_4M REAL TABLE FOR STOKES FREQUENCY CORRECTION
971  ! TT_4P REAL TABLE FOR STOKES FREQUENCY CORRECTION
972  ! IM_P INTEGER TABLE FOR WAVENUMBER M2 PLUS
973  ! IM_M INTEGER TABLE FOR WAVENUMBER M2 MIN
974  !
975  !
976  !
977  ! METHOD
978  ! ------
979  ! EVALUATE SECOND ORDER SPECTRUM IN FREQUENCY BASED ON
980  ! KRASITSKII'S CANONICAL TRANSFORMATION.
981  !
982  ! EXTERNALS
983  ! ---------
984  ! NONE
985  !
986  ! REFERENCES
987  ! ----------
988  ! V.E. ZAKHAROV, HAMILTONIAN APPROACH (1968)
989  ! M.A. SROKOSZ, J.G.R.,91,995-1006 (1986)
990  ! P.A.E.M. JANSSEN, JFM (2009)
991  !
992  !
993  !--------------------------------------------------------------------
994  !
995  !
996  !
997  USE w3gdatmd, ONLY: igpars
998  IMPLICIT NONE
999 
1000  INTEGER NFRE,NANG,NDEPTH,M,K,M1,K1,M2_M,M2_P,K2,MP,&
1001  MM,L,MR,NMAX,JD,COUNTER
1002  INTEGER IM_P(NFRE,NFRE),IM_M(NFRE,NFRE),IL(NANG,NANG)
1003 
1004  REAL OM0,OM0H,OM1,OM0P,OM0M,&
1005  OMSTART,FRAC,XINCR1,XINCR2,XINCR3,XINCR4,FAC1,FAC2,&
1006  FAC3,T_4M,T_4P,F2K,F2KP,F2KM,F2K1,F2K2,DELM1,DEPTHA,DEPTHD,&
1007  XD,X_MIN
1008  REAL OMEGA(NFRE), DFDTH(NFRE), OMEGAHF(NFRE+1:NMAX)
1009  REAL TA(NANG,NFRE,NFRE,NDEPTH),TB(NANG,NFRE,NFRE,NDEPTH),&
1010  TC_QL(NANG,NFRE,NFRE,NDEPTH),TT_4M(NANG,NFRE,NFRE,NDEPTH),&
1011  TT_4P(NANG,NFRE,NFRE,NDEPTH)
1012  REAL F1(NANG,NFRE),F3(NANG,NFRE),DEPTH
1013  REAL AKMEAN
1014  REAL G1(NANG,NMAX),G3(NANG,NFRE)
1015 
1016  LOGICAL :: LL2H
1017 
1018  !
1019  !*** 1. COMPUTATION OF TAIL OF THE SPECTRUM AND INDEX JD
1020  ! ---------------------------------------------------
1021  !
1022  !
1023  x_min = igpars(9) ! this was 1.1 in Janssen's original code
1024 
1025  DO m=nfre+1,nmax
1026  omegahf(m) = omstart*(1.+frac)**(mr*m-1)
1027  ENDDO
1028 
1029  DO k=1,nang
1030  DO k1=1,nang
1031  l = k-k1
1032  IF (l.GT.nang) l=l-nang
1033  IF (l.LT.1) l=l+nang
1034  il(k,k1) = l
1035  ENDDO
1036  ENDDO
1037 
1038 
1039  ! This was Janssen's version ... limited to kD > X_MIN ... (here set to 1.1)
1040  xd = max(x_min/akmean,depth) ! note by FA: why do we have X_MIN/AKMEAN??!
1041  xd = depth
1042  xd = log(xd/deptha)/log(depthd)+1.
1043  jd = nint(xd)
1044  jd = max(jd,1)
1045  jd = min(jd,ndepth)
1046 
1047  DO m=1,nfre
1048  DO k=1,nang
1049  g1(k,m) = f1(k,m)
1050  g3(k,m) = 0.
1051  ENDDO
1052  ENDDO
1053 
1054  DO m=nfre+1,nmax
1055  DO k=1,nang
1056  g1(k,m) = omega(nfre)**5*g1(k,nfre)/omegahf(m)**5
1057  ENDDO
1058  ENDDO
1059  !
1060  !
1061  !
1062  !
1063  !*** 2. COMPUTATION OF THE 2nd ORDER FREQUENCY SPECTRUM.
1064  ! ---------------------------------------------------
1065  !
1066  !
1067  DO m=1,nfre
1068  om0 = omega(m)
1069  om0h = om0/2.
1070  mp = min(m+1,nfre)
1071  om0p = omega(mp)
1072  mm = max(m-1,1)
1073  om0m = omega(mm)
1074  delm1 = 1./(om0p-om0m)
1075  DO k=1,nang
1076  k2 = k
1077  f2k = g1(k,m)
1078  f2kp = g1(k,mp)
1079  f2km = g1(k,mm)
1080  DO m1=1,nfre
1081  om1 = omega(m1)
1082  ll2h = (abs(om1).LT.om0h)
1083  m2_m = im_m(m1,m)
1084  m2_p = im_p(m1,m)
1085  DO k1=1,nang
1086  f2k1 = g1(k1,m1)
1087  l = il(k,k1)
1088  !
1089  ! 2.1 OM0-OM1 CASE: SECOND HARMONICS
1090  ! OM2 = OM0-OM1
1091  !
1092  IF (ll2h) THEN
1093  f2k2 = g1(k2,m2_m)
1094  fac1 = ta(l,m1,m,jd)
1095  fac2 = f2k1*f2k2+g1(k2,m1)*g1(k1,m2_m)
1096 
1097  xincr1 = fac1*fac2
1098  g3(k,m) = g3(k,m)+xincr1
1099  ENDIF
1100  !
1101  ! 2.2 OM1+OM0 CASE: INFRA-GRAVITY WAVES
1102  ! OM2 = OM1+OM0
1103  !
1104  f2k2 = g1(k2,m2_p)
1105  fac3 = 2.*tb(l,m1,m,jd)
1106  xincr2 = fac3*f2k2
1107  !
1108  ! 2.3 QUASI-LINEAR EFFECT
1109  !
1110  xincr3 = tc_ql(l,m1,m,jd)*f2k
1111  !
1112  ! 2.4 STOKES-FREQUENCY CORRECTION
1113  !
1114  t_4m = tt_4m(l,m1,m,jd)
1115  t_4p = tt_4p(l,m1,m,jd)
1116  xincr4 = -(f2kp*t_4p-f2km*t_4m)*delm1
1117 
1118  g3(k,m) = g3(k,m)+f2k1*(xincr2+xincr3+xincr4)
1119 
1120  ENDDO
1121  ENDDO
1122  ENDDO
1123  ENDDO
1124  !
1125  DO m=1,nfre
1126  DO k=1,nang
1127  f3(k,m) = g3(k,m)
1128  ENDDO
1129  ENDDO
1130  !
1131  !--------------------------------------------------------------------
1132  !
1133  RETURN

References w3gdatmd::igpars.

Referenced by cal_sec_order_spec().

◆ tables_2nd()

subroutine w3canomd::tables_2nd ( integer  NFRE,
integer  NANG,
integer  NDEPTH,
real  DEPTHA,
real  OMSTART,
real  FRAC,
real  XMR,
real, dimension(nfre)  DFDTH,
real, dimension(nfre)  OMEGA,
real, dimension(nang)  TH 
)

Computes tables for second order spectrum in frequency space.

Parameters
NFREnumber of frequencies
NANGnumber of directions
NDEPTHnumber of entries in the depth table
DEPTHA
OMSTARTstart frequency
FRACfractional increase in frequency space
XMRinverse of thinning factor in frequency space
DFDTHproduct of increment in frequency and direction
OMEGAangular frequency array
THdirection array
Author
NA
Date
NA

Definition at line 722 of file w3canomd.F90.

722  !
723  !--------------------------------------------------------------------
724  !
725  !*****TABLES** COMPUTES TABLES FOR SECOND ORDER SPECTRUM IN FREQUENCY SPACE.
726  !
727  ! P.JANSSEN DECEMBER 2008
728  !
729  ! PURPOSE
730  ! -------
731  ! DETERMINES TABLES, BASED ON JANSSEN (2008)
732  ! THERE ARE THREE CORRECTIONS:
733  ! 1) GENERATION OF SECOND-HARMONICS
734  ! 2) QUASI-LINEAR EFFECT
735  ! 3) SHIFT OF SPECTRUM BECAUSE OF STOKES FREQUENCY
736  ! CORRECTION.
737  !
738  ! INTERFACE
739  ! ---------
740  ! *CALL* *TABLES(NFRE,NANG,NDEPTH,OMSTART,FRAC,XMR,
741  ! OMEGA,TA,TB,TC_QL,TT_4M,TT_4P,IM_P,IM_M,
742  ! TFAK)*
743  !
744  !
745  ! PARAMETER TYPE PURPOSE.
746  ! --------- ---- -------
747  !
748  ! NFRE INTEGER NUMBER OF FREQUENCIES
749  ! NANG INTEGER NUMBER OF DIRECTIONS
750  ! NDEPTH INTEGER NUMBER OF ENTRIES IN THE DEPTH TABLE
751  ! OMSTART REAL START FREQUENCY
752  ! FRAC REAL FRACTIONAL INCREASE IN FREQUENCY SPACE
753  ! XMR REAL INVERSE OF THINNING FACTOR IN FREQUENCY SPACE
754  ! OMEGA REAL ANGULAR FREQUENCY ARRAY
755  ! DFDTH REAL PRODUCT OF INCREMENT IN FREQUENCY AND DIRECTION
756  ! TH REAL DIRECTION ARRAY
757  ! TA REAL TABLE FOR MINUS INTERACTIONS
758  ! TB REAL TABLE FOR PLUS INTERACTIONS
759  ! TC_QL REAL TABLE FOR QUASI-LINEAR INTERACTIONS
760  ! TT_4M REAL TABLE FOR STOKES FREQUENCY CORRECTION
761  ! TT_4P REAL TABLE FOR STOKES FREQUENCY CORRECTION
762  ! IM_P INTEGER TABLE FOR WAVENUMBER M2 PLUS
763  ! IM_M INTEGER TABLE FOR WAVENUMBER M2 MIN
764  ! TFAK REAL WAVENUMBER TABLE
765  !
766  !
767  ! METHOD
768  ! ------
769  !
770  ! EXTERNALS
771  ! ---------
772  ! NONE
773  !
774  ! REFERENCES
775  ! ----------
776  ! V.E. ZAKHAROV, HAMILTONIAN APPROACH (1968)
777  ! M.A. SROKOSZ, J.G.R.,91,995-1006 (1986)
778  ! P.A.E.M. JANSSEN, ECMWF TECH MEMO (2008),JFM PAPER (2009)
779  !
780  !
781  !--------------------------------------------------------------------
782  !
783  !
784  !
785  IMPLICIT NONE
786 
787  INTEGER NFRE,NANG,NDEPTH,MDW,JD,M,K,M1,K1,MP,MM,L
788 
789  REAL DEPTH,ALPHA,GAM_J,DEPTHA,DEPTHD
790  REAL OM0,TH0,XK0,OM1,TH1,XK1,OM2,XK2,OM0P,XK0P,OM0M,XK0M,OMSTART,&
791  FRAC,XMR,XM2,FAC
792  REAL OMEGA(NFRE),TH(NANG),DFDTH(NFRE)
793 
794  common/const/depth,alpha,mdw,gam_j,depthd
795  !
796  ! 1. COMPUTATION OF WAVENUMBER ARRAY TFAK
797  ! ---------------------------------------
798  !
799  !
800  DO jd=1,ndepth
801  depth = deptha*depthd**(jd-1)
802  DO m=1,nfre
803  om0 = omega(m)
804  tfak(m,jd) = aki(om0,depth)
805  ENDDO
806  WRITE(6,*) 'GENERATING TABLES FOR DEPTH:',jd,depth,deptha,ndepth
807  !
808  ! 2. COMPUTATION OF THE 2nd ORDER COEFFICIENTS.
809  ! ---------------------------------------------
810  !
811  !
812  k1 = 0
813  th1 = th(nang)
814  DO m=1,nfre
815  om0 = omega(m)
816  xk0 = tfak(m,jd)
817 
818  mp = min(m+1,nfre)
819  om0p = omega(mp)
820  xk0p = tfak(mp,jd)
821 
822  mm = max(m-1,1)
823  om0m = omega(mm)
824  xk0m = tfak(mm,jd)
825 
826  DO m1=1,nfre
827 
828  om1 = omega(m1)
829 
830  DO l=1,nang
831  !
832  ! XK0-XK1 CASE
833  !
834  k = k1+l
835  th0 = th(k)
836  om2 = om0-om1
837 
838 
839  IF (abs(om1).LT.om0/2.) THEN
840  xm2 = log(om2/omstart)/log(1.+frac)
841  im_m(m1,m) = nint(xmr*(xm2+1.))
842  xk1 = tfak(m1,jd)
843  xk2 = aki(om2,depth)
844 
845  ta(l,m1,m,jd) = dfdth(m1)*a(xk1,xk2,th1,th0)**2
846  ELSE
847  ta(l,m1,m,jd) = 0.
848  im_m(m1,m) = 1
849  ENDIF
850  !
851  ! XK1+XK0 CASE
852  !
853  om2 = om1+om0
854  xm2 = log(om2/omstart)/log(1.+frac)
855  im_p(m1,m) = nint(xmr*(xm2+1.))
856  xk1 = tfak(m1,jd)
857  xk2 = aki(om2,depth)
858 
859  tb(l,m1,m,jd) = dfdth(m1)*b(xk1,xk2,th1,th0)**2
860  !
861  ! QUASI-LINEAR EFFECT
862  !
863  !
864  tc_ql(l,m1,m,jd) = dfdth(m1)*c_ql(xk0,xk1,th0,th1)
865  !
866  ! STOKES-FREQUENCY CORRECTION
867  !
868  !
869  fac = 2.*g/om1*dfdth(m1)
870  tt_4m(l,m1,m,jd) = &
871  fac*(w2(xk0m,xk1,xk1,xk0m,th0,th1,th1,th0)+&
872  v2(xk0m,xk1,xk1,xk0m,th0,th1,th1,th0))
873  tt_4p(l,m1,m,jd) = &
874  fac*(w2(xk0p,xk1,xk1,xk0p,th0,th1,th1,th0)+&
875  v2(xk0p,xk1,xk1,xk0p,th0,th1,th1,th0))
876  ! Table identical to Janssen: verified.
877  ! IF (JD.EQ.1) WRITE(998,'(F4.1,3I3,5G11.3)') DEPTH,M,M1,L, TB(L,M1,M,JD), &
878  ! TC_QL(L,M1,M,JD) , FAC, TT_4M(L,M1,M,JD), TT_4P(L,M1,M,JD)
879  ENDDO
880  ENDDO
881  ENDDO
882  ENDDO
883  !
884  !
885  !--------------------------------------------------------------------
886  !
887  RETURN

References a(), aki(), b(), c_ql(), g, v2(), and w2().

Referenced by cal_sec_order_spec().

◆ u()

real function w3canomd::u ( real  XI,
real  XJ,
real  XK,
real  XL,
real  THI,
real  THJ,
real  THK,
real  THL 
)

Determines the third-order transfer coefficient for four wave interactions of gravity waves.

Parameters
XIwave number
XJwave number
XKwave number
XLwave number
THI
THJ
THK
THL
Returns
U
Author
Peter Janssen
Date
NA

Definition at line 1552 of file w3canomd.F90.

1552  !-----------------------------------------------------------------------
1553  !
1554  !*** *REAL FUNCTION* *U(XI,XJ,XK,XL,THI,THJ,THK,THL)
1555  !
1556  !-----------------------------------------------------------------------
1557  !
1558  !*** *U* DETERMINES THE THIRD-ORDER TRANSFER COEFFICIENT FOR FOUR
1559  ! WAVE INTERACTIONS OF GRAVITY WAVES.
1560  !
1561  ! PETER JANSSEN
1562  !
1563  ! PURPOSE.
1564  ! --------
1565  !
1566  ! GIVES NONLINEAR TRANSFER COEFFICIENT FOR FOUR
1567  ! WAVE INTERACTIONS OF GRAVITY-CAPILLARY WAVES IN THE
1568  ! IDEAL CASE OF NO CURRENT. (CF.ZAKHAROV,AND CRAWFORD ET AL)
1569  !
1570  ! INTERFACE.
1571  ! ----------
1572  ! *U(XI,XJ,XK,XL)*
1573  ! *XI* - WAVE NUMBER
1574  ! *XJ* - WAVE NUMBER
1575  ! *XK* - WAVE NUMBER
1576  ! *XL* - WAVE NUMBER
1577  ! METHOD.
1578  ! -------
1579  ! NONE
1580  !
1581  ! EXTERNALS.
1582  ! ----------
1583  ! NONE.
1584  !
1585  !-----------------------------------------------------------------------
1586  !
1587  IMPLICIT NONE
1588  common/const/depth,alpha,mdw,gam_j,depthd
1589  INTEGER MDW
1590  REAL DEPTH,ALPHA,GAM_J,DEPTHA,DEPTHD
1591  REAL XI,XJ,XK,XL,THI,THJ,THK,THL,OI,OJ,OK,OL,XIK,XJK,XIL,XJL,&
1592  OIK,OJK,OIL,OJL,QI,QJ,QIK,QJK,QIL,QJL,SQIJKL,ZCONST
1593  !
1594  !*** 1. DETERMINE NONLINEAR TRANSFER.
1595  ! --------------------------------
1596  !
1597  zconst=1./(16.)
1598 
1599  oi=omeg(xi)
1600  oj=omeg(xj)
1601  ok=omeg(xk)
1602  ol=omeg(xl)
1603 
1604  xik = vabs(xi,xk,thi,thk)
1605  xjk = vabs(xj,xk,thj,thk)
1606  xil = vabs(xi,xl,thi,thl)
1607  xjl = vabs(xj,xl,thj,thl)
1608  oik=omeg(xik)
1609  ojk=omeg(xjk)
1610  oil=omeg(xil)
1611  ojl=omeg(xjl)
1612 
1613  qi=oi**2/g
1614  qj=oj**2/g
1615  qik=oik**2/g
1616  qjk=ojk**2/g
1617  qil=oil**2/g
1618  qjl=ojl**2/g
1619  sqijkl=sqrt(ok*ol/(oi*oj))
1620  u = zconst*sqijkl*( 2.*(xi**2*qj+xj**2*qi)-qi*qj*(&
1621  qik+qjk+qil+qjl) )
1622  RETURN

References g, omeg(), and vabs().

Referenced by w1(), w2(), and w4().

◆ v2()

real function w3canomd::v2 ( real  XI,
real  XJ,
real  XK,
real  XL,
real  THI,
real  THJ,
real  THK,
real  THL 
)

Determines the contribution of the virtual four-wave interactions of gravity waves.

Parameters
XIWave number
XJWave number
XKWave number
XLWave number
THI
THJ
THK
THL
Returns
V2
Author
Peter Janssen
Date
NA

Definition at line 1712 of file w3canomd.F90.

1712  !-----------------------------------------------------------------------
1713  !
1714  !*** *REAL FUNCTION* *V2(XI,XJ,XK,XL,THI,THJ,THK,THL)
1715  !
1716  !-----------------------------------------------------------------------
1717  !
1718  !*** *V2* DETERMINES THE CONTRIBUTION OF THE VIRTUAL
1719  ! FOUR-WAVE INTERACTIONS OF GRAVITY WAVES.
1720  !
1721  ! PETER JANSSEN
1722  !
1723  ! PURPOSE.
1724  ! --------
1725  !
1726  ! GIVES NONLINEAR TRANSFER COEFFICIENT FOR FOUR
1727  ! WAVE INTERACTIONS OF GRAVITY WAVES IN THE
1728  ! IDEAL CASE OF NO CURRENT. (CF.ZAKHAROV,AND
1729  ! CRAWFORD ET AL)
1730  !
1731  ! INTERFACE.
1732  ! ----------
1733  ! *V2(XI,XJ,XK,XL)*
1734  ! *XI* - WAVE NUMBER
1735  ! *XJ* - WAVE NUMBER
1736  ! *XK* - WAVE NUMBER
1737  ! *XL* - WAVE NUMBER
1738  ! METHOD.
1739  ! -------
1740  ! NONE
1741  !
1742  !
1743  ! EXTERNALS.
1744  ! ----------
1745  ! NONE.
1746  !
1747  !-----------------------------------------------------------------------
1748  !
1749  IMPLICIT NONE
1750  common/const/depth,alpha,mdw,gam_j,depthd
1751  common/precis/doublep
1752  LOGICAL DOUBLEP
1753  INTEGER MDW
1754  REAL DEPTH,ALPHA,GAM_J,DEPTHA,DEPTHD
1755  REAL DEL1,XI,XJ,XK,XL,THI,THJ,THK,THL,OI,OJ,OK,OL,RI,RJ,RK,RL,&
1756  RIJ,RIK,RLI,RJL,RJK,RKL,THIJ,THIK,THLI,THJL,THJK,THKL,OIJ,&
1757  OIK,OJL,OJK,OLI,OKL,XNIK,XNJL,XNJK,XNIL,YNIL,YNJK,YNJL,YNIK,&
1758  ZNIJ,ZNKL,ZPIJ,ZPKL,THLJ,THIL,THKJ,THKI,THJI,THLK
1759  !
1760  !*** 1. DETERMINE NONLINEAR TRANSFER.
1761  ! --------------------------------
1762  !
1763  IF (doublep) THEN
1764  del1=10.**(-5)
1765  ELSE
1766  del1=10.**(-2)
1767  ENDIF
1768 
1769 
1770  ri=xi+del1
1771  rj=xj+del1/2.
1772  rk=xk+del1/3.
1773  rl=xl+del1*(1.+1./2.-1./3.)
1774 
1775  oi=omeg(ri)
1776  oj=omeg(rj)
1777  ok=omeg(rk)
1778  ol=omeg(rl)
1779 
1780  rij = vabs(ri,rj,thi,thj)
1781  thij = vdir(ri,rj,thi,thj)
1782 
1783  rik = vabs(ri,rk,thi,thk-pi)
1784  thik = vdir(ri,rk,thi,thk-pi)
1785 
1786  rli = vabs(rl,ri,thl,thi-pi)
1787  thli = vdir(xl,xi,thl,thi-pi)
1788 
1789  rjl = vabs(rj,rl,thj,thl-pi)
1790  thjl = vdir(rj,rl,thj,thl-pi)
1791 
1792  rjk = vabs(rj,rk,thj,thk-pi)
1793  thjk = vdir(rj,rk,thj,thk-pi)
1794 
1795  rkl = vabs(rk,rl,thk,thl)
1796  thkl = vdir(rk,rl,thk,thl)
1797 
1798  oij=omeg(rij)
1799  oik=omeg(rik)
1800  ojl=omeg(rjl)
1801  ojk=omeg(rjk)
1802  oli=omeg(rli)
1803  okl=omeg(rkl)
1804 
1805  xnik = ok+oik-oi
1806  xnjl = oj+ojl-ol
1807  xnjk = ok+ojk-oj
1808  xnil = oi+oli-ol
1809 
1810  ynil = ol+oli-oi
1811  ynjk = oj+ojk-ok
1812  ynjl = ol+ojl-oj
1813  ynik = oi+oik-ok
1814 
1815  znij = oij-oi-oj
1816  znkl = okl-ok-ol
1817  zpij = oij+oi+oj
1818  zpkl = okl+ok+ol
1819 
1820  thlj = thjl-pi
1821  thil = thli-pi
1822  thkj = thjk-pi
1823  thki = thik-pi
1824  thji = thij-pi
1825  thlk = thkl-pi
1826 
1827  v2= vmin(ri,rk,rik,thi,thk,thik)*vmin(rl,rj,rjl,thl,thj,thlj)*&
1828  (1./xnik+1./xnjl)&
1829  +vmin(rj,rk,rjk,thj,thk,thjk)*vmin(rl,ri,rli,thl,thi,thli)*&
1830  (1./xnjk+1./xnil)&
1831  +vmin(ri,rl,rli,thi,thl,thil)*vmin(rk,rj,rjk,thk,thj,thkj)*&
1832  (1./ynil+1./ynjk)&
1833  +vmin(rj,rl,rjl,thj,thl,thjl)*vmin(rk,ri,rik,thk,thi,thki)*&
1834  (1./ynjl+1./ynik)&
1835  +vmin(rij,ri,rj,thij,thi,thj)*vmin(rkl,rk,rl,thkl,thk,thl)*&
1836  (1./znij+1./znkl)&
1837  +vplus(rij,ri,rj,thji,thi,thj)*vplus(rkl,rk,rl,thlk,thk,thl)*&
1838  (1./zpij+1./zpkl)
1839 
1840  v2 = -v2
1841 
1842  RETURN

References omeg(), pi, vabs(), vdir(), vmin(), and vplus().

Referenced by tables_2nd().

◆ vabs()

real function w3canomd::vabs ( real  XI,
real  XJ,
real  THI,
real  THJ 
)

NA.

Parameters
XI
XJ
THI
THJ
Returns
VABS
Author
NA
Date
NA

Definition at line 2846 of file w3canomd.F90.

2846  !
2847  !---------------------------------------------------------------------
2848  !
2849  IMPLICIT NONE
2850  REAL XI,XJ,THI,THJ,ARG
2851 
2852  arg = xi**2+xj**2+2.*xi*xj*cos(thi-thj)
2853 
2854  IF (arg.LE.0.) THEN
2855  vabs = 0.
2856  ELSE
2857  vabs = sqrt(arg)
2858  ENDIF
2859 
2860  RETURN

Referenced by a(), b(), b1(), b2(), b3(), b4(), u(), and v2().

◆ vdir()

real function w3canomd::vdir ( real  XI,
real  XJ,
real  THI,
real  THJ 
)

NA.

Parameters
XI
XJ
THI
THJ
Returns
VDIR
Author
NA
Date
NA

Definition at line 2876 of file w3canomd.F90.

2876  !
2877  !---------------------------------------------------------------------
2878  !
2879  IMPLICIT NONE
2880  REAL XI,XJ,THI,THJ,EPS,Y,X
2881 
2882  eps = 0.
2883 
2884  y = xj*sin(thj-thi)
2885  x = xi+xj*cos(thj-thi)+eps
2886  vdir = atan2(y,x)+thi
2887  IF (x.EQ.0.) vdir = 0.
2888 
2889  RETURN

Referenced by a(), b(), b1(), b2(), b3(), b4(), and v2().

◆ vg()

real function w3canomd::vg ( real  X)

Determines the group velocity for gravity- waves.

Parameters
XWave number
Returns
VG
Author
Peter Janssen
Date
NA

Definition at line 2749 of file w3canomd.F90.

2749  !-----------------------------------------------------------------------
2750  !
2751  !*** *REAL FUNCTION* *VG(X)*
2752  !
2753  !-----------------------------------------------------------------------
2754  !
2755  !*** *VG* DETERMINES THE GROUP VELOCITY FOR GRAVITY- WAVES.
2756  !
2757  ! PETER JANSSEN
2758  !
2759  ! PURPOSE.
2760  ! --------
2761  !
2762  ! GIVES GROUP VELOCITY FOR GRAVITY-
2763  ! WAVES IN THE IDEAL CASE OF NO CURRENT.
2764  !
2765  ! INTERFACE.
2766  ! ----------
2767  ! *VG(X)*
2768  ! *X* - WAVE NUMBER
2769  !
2770  ! METHOD.
2771  ! -------
2772  ! NONE
2773  !
2774  ! EXTERNALS.
2775  ! ----------
2776  ! NONE.
2777  !
2778  !-----------------------------------------------------------------------
2779  !
2780  IMPLICIT NONE
2781  common/const/depth,alpha,mdw,gam_j,depthd
2782  INTEGER MDW
2783  REAL DEPTH,ALPHA,GAM_J,DEPTHD
2784  REAL D,XK,X,XD
2785 
2786  d = depth
2787  xk = abs(x)
2788  xd = xk*depth
2789 
2790  vg = 0.5*sqrt(g*tanh(xd)/xk)*(1.+2.*xd/sinh(2.*xd))
2791 
2792  RETURN

References g.

◆ vmin()

real function w3canomd::vmin ( real  XI,
real  XJ,
real  XK,
real  THI,
real  THJ,
real  THK 
)

Determines the second-order transfer coefficient for three wave interactions of gravity waves.

Parameters
XIwave number
XJwave number
XKwave number
THIwave direction
THJwave direction
THKwave direction
Returns
VMIN
Author
Peter Janssen
Date
NA

Definition at line 1459 of file w3canomd.F90.

1459  !-----------------------------------------------------------------------
1460  !
1461  !*** *REAL FUNCTION* *VMIN(XI,XJ,XK,THI,THJ,THK)
1462  !
1463  !-----------------------------------------------------------------------
1464  !
1465  !*** *VMIN* DETERMINES THE SECOND-ORDER TRANSFER COEFFICIENT FOR
1466  ! THREE WAVE INTERACTIONS OF GRAVITY WAVES.
1467  !
1468  ! PETER JANSSEN
1469  !
1470  ! PURPOSE.
1471  ! --------
1472  !
1473  ! GIVES NONLINEAR TRANSFER COEFFICIENT FOR THREE
1474  ! WAVE INTERACTIONS OF GRAVITY WAVES IN THE
1475  ! IDEAL CASE OF NO CURRENT. (CF.ZAKHAROV)
1476  !
1477  ! INTERFACE.
1478  ! ----------
1479  ! *VMIN(XI,XJ,XK)*
1480  ! *XI* - WAVE NUMBER
1481  ! *XJ* - WAVE NUMBER
1482  ! *XK* - WAVE NUMBER
1483  ! *THI* - WAVE DIRECTION
1484  ! *THJ* - WAVE DIRECTION
1485  ! *THK* - WAVE DIRECTION
1486  ! METHOD.
1487  ! -------
1488  ! NONE
1489  !
1490  ! EXTERNALS.
1491  ! ----------
1492  ! NONE.
1493  !
1494  !-----------------------------------------------------------------------
1495  !
1496  IMPLICIT NONE
1497  common/const/depth,alpha,mdw,gam_j,depthd
1498  INTEGER MDW
1499  REAL DEPTH,ALPHA,GAM_J,DEPTHA,DEPTHD
1500  REAL DEL1,RI,RJ,RK,XI,XJ,XK,THI,THJ,THK,OI,OJ,OK,QI,QJ,QK,&
1501  RIJ,RIK,RJK,SQIJK,SQIKJ,SQJKI,ZCONST
1502  !
1503  !*** 1. DETERMINE NONLINEAR TRANSFER.
1504  ! --------------------------------
1505  !
1506  del1 = 10.**(-12)
1507  zconst=1./(4*sqrt(2.))
1508 
1509  ri = xi
1510  rj = xj
1511  rk = xk
1512 
1513  oi=omeg(ri)+del1
1514  oj=omeg(rj)+del1
1515  ok=omeg(rk)+del1
1516 
1517  qi=oi**2/g
1518  qj=oj**2/g
1519  qk=ok**2/g
1520 
1521  rij = ri*rj*cos(thj-thi)
1522  rik = ri*rk*cos(thk-thi)
1523  rjk = rj*rk*cos(thk-thj)
1524 
1525  sqijk=sqrt(g*ok/(oi*oj))
1526  sqikj=sqrt(g*oj/(oi*ok))
1527  sqjki=sqrt(g*oi/(oj*ok))
1528 
1529  vmin=zconst*( (rij-qi*qj)*sqijk + (rik-qi*qk)*sqikj&
1530  + (rjk+qj*qk)*sqjki )
1531  RETURN

References g, and omeg().

Referenced by a1(), b1(), b3(), b4(), and v2().

◆ vplus()

real function w3canomd::vplus ( real  XI,
real  XJ,
real  XK,
real  THI,
real  THJ,
real  THK 
)

Determines the second-order transfer coefficient for three wave interactions of gravity waves.

Parameters
XIwave numbers
XJwave numbers
XKwave numbers
THIwave direction
THJwave direction
THKwave direction
Returns
VPLUS
Author
Peter Janssen
Date
NA

Definition at line 1368 of file w3canomd.F90.

1368  !-----------------------------------------------------------------------
1369  !
1370  !*** *REAL FUNCTION* *VPLUS(XI,XJ,XK,THI,THJ,THK)
1371  !
1372  !-----------------------------------------------------------------------
1373  !
1374  !*** *VPLUS* DETERMINES THE SECOND-ORDER TRANSFER COEFFICIENT
1375  ! FOR THREE WAVE INTERACTIONS OF GRAVITY WAVES.
1376  !
1377  ! PETER JANSSEN
1378  !
1379  ! PURPOSE.
1380  ! --------
1381  !
1382  ! GIVES NONLINEAR TRANSFER COEFFICIENT FOR THREE
1383  ! WAVE INTERACTIONS OF GRAVITY WAVES IN THE
1384  ! IDEAL CASE OF NO CURRENT. (CF.ZAKHAROV)
1385  !
1386  ! INTERFACE.
1387  ! ----------
1388  ! *VPLUS(XI,XJ,XK)*
1389  ! *XI* - WAVE NUMBER
1390  ! *XJ* - WAVE NUMBER
1391  ! *XK* - WAVE NUMBER
1392  ! *THI* - WAVE DIRECTION
1393  ! *THJ* - WAVE DIRECTION
1394  ! *THK* - WAVE DIRECTION
1395  ! METHOD.
1396  ! -------
1397  ! NONE
1398  !
1399  ! EXTERNALS.
1400  ! ----------
1401  ! NONE.
1402  !
1403  !-----------------------------------------------------------------------
1404  !
1405  IMPLICIT NONE
1406  common/const/depth,alpha,mdw,gam_j,depthd
1407  INTEGER MDW
1408  REAL DEPTH,ALPHA,GAM_J,DEPTHA,DEPTHD
1409  REAL DEL1,RI,RJ,RK,XI,XJ,XK,THI,THJ,THK,OI,OJ,OK,QI,QJ,QK,&
1410  RIJ,RIK,RJK,SQIJK,SQIKJ,SQJKI,ZCONST
1411  !
1412  !*** 1. DETERMINE NONLINEAR TRANSFER.
1413  ! --------------------------------
1414  !
1415  del1 = 10.**(-12)
1416  zconst=1./(4*sqrt(2.))
1417 
1418  ri = xi
1419  rj = xj
1420  rk = xk
1421 
1422  oi=omeg(ri)+del1
1423  oj=omeg(rj)+del1
1424  ok=omeg(rk)+del1
1425 
1426  qi=oi**2/g
1427  qj=oj**2/g
1428  qk=ok**2/g
1429 
1430  rij = ri*rj*cos(thj-thi)
1431  rik = ri*rk*cos(thk-thi)
1432  rjk = rj*rk*cos(thk-thj)
1433 
1434  sqijk=sqrt(g*ok/(oi*oj))
1435  sqikj=sqrt(g*oj/(oi*ok))
1436  sqjki=sqrt(g*oi/(oj*ok))
1437 
1438  vplus=zconst*( (rij+qi*qj)*sqijk + (rik+qi*qk)*sqikj&
1439  + (rjk+qj*qk)*sqjki )
1440  RETURN

References g, and omeg().

Referenced by a3(), b3(), b4(), and v2().

◆ w1()

real function w3canomd::w1 ( real  XI,
real  XJ,
real  XK,
real  XL,
real  THI,
real  THJ,
real  THK,
real  THL 
)

Determines the nonlinear transfer coefficient for four wave interactions of gravity waves of the type A_2A_3A_4.

Parameters
XIWave number
XJWave number
XKWave number
XLWave number
THI
THJ
THK
THL
Returns
W1
Author
Peter Janssen
Date
NA

Definition at line 1863 of file w3canomd.F90.

1863  !-----------------------------------------------------------------------
1864  !
1865  !*** *REAL FUNCTION* *W1(XI,XJ,XK,XL,THI,THJ,THK,THL)
1866  !
1867  !-----------------------------------------------------------------------
1868  !
1869  !*** *W1* DETERMINES THE NONLINEAR TRANSFER COEFFICIENT FOR FOUR
1870  ! WAVE INTERACTIONS OF GRAVITY WAVES OF THE TYPE
1871  ! A_2A_3A_4.
1872  !
1873  ! PETER JANSSEN
1874  !
1875  ! PURPOSE.
1876  ! --------
1877  !
1878  ! GIVES NONLINEAR TRANSFER COEFFICIENT FOR FOUR
1879  ! WAVE INTERACTIONS OF GRAVITY-CAPILLARY WAVES IN THE
1880  ! IDEAL CASE OF NO CURRENT. (CF.ZAKHAROV,AND CRAWFORD ET AL)
1881  !
1882  ! INTERFACE.
1883  ! ----------
1884  ! *W1(XI,XJ,XK,XL)*
1885  ! *XI* - WAVE NUMBER
1886  ! *XJ* - WAVE NUMBER
1887  ! *XK* - WAVE NUMBER
1888  ! *XL* - WAVE NUMBER
1889  ! METHOD.
1890  ! -------
1891  ! NONE
1892  !
1893  ! EXTERNALS.
1894  ! ----------
1895  ! NONE.
1896  !
1897  !-----------------------------------------------------------------------
1898  !
1899  IMPLICIT NONE
1900  common/const/depth,alpha,mdw,gam_j,depthd
1901  INTEGER MDW
1902  REAL DEPTH,ALPHA,GAM_J,DEPTHA,DEPTHD
1903  REAL XI,XJ,XK,XL,THI,THJ,THK,THL
1904  !
1905  !
1906  !*** 1. DETERMINE NONLINEAR TRANSFER.
1907  ! --------------------------------
1908  !
1909  w1= -u(xi,xj,xk,xl,thi-pi,thj,thk,thl)-&
1910  u(xi,xk,xj,xl,thi-pi,thk,thj,thl)-&
1911  u(xi,xl,xj,xk,thi-pi,thl,thj,thk)+&
1912  u(xj,xk,xi,xl,thj,thk,thi-pi,thl)+&
1913  u(xj,xl,xi,xk,thj,thl,thi-pi,thk)+&
1914  u(xk,xl,xi,xj,thk,thl,thi-pi,thj)
1915 
1916  w1=w1/3.
1917 
1918  RETURN

References pi, and u().

Referenced by b1(), and b3().

◆ w2()

real function w3canomd::w2 ( real  XI,
real  XJ,
real  XK,
real  XL,
real  THI,
real  THJ,
real  THK,
real  THL 
)

Determines the contribution of the direct four-wave interactions of gravity waves of the type A_2^*A_3A_4.

Parameters
XIWave number
XJWave number
XKWave number
XLWave number
THI
THJ
THK
THL
Returns
W2
Author
Peter Janssen
Date
NA

Definition at line 1643 of file w3canomd.F90.

1643  !-----------------------------------------------------------------------
1644  !
1645  !*** *REAL FUNCTION* *W2(XI,XJ,XK,XL,THI,THJ,THK,THL)
1646  !
1647  !-----------------------------------------------------------------------
1648  !
1649  !*** *W2* DETERMINES THE CONTRIBUTION OF THE DIRECT FOUR-WAVE
1650  ! INTERACTIONS OF GRAVITY WAVES OF THE TYPE
1651  ! A_2^*A_3A_4.
1652  !
1653  ! PETER JANSSEN
1654  !
1655  ! PURPOSE.
1656  ! --------
1657  !
1658  ! GIVES NONLINEAR TRANSFER COEFFICIENT FOR FOUR
1659  ! WAVE INTERACTIONS OF GRAVITY WAVES IN THE
1660  ! IDEAL CASE OF NO CURRENT. (CF.ZAKHAROV,AND CRAWFORD ET AL)
1661  !
1662  ! INTERFACE.
1663  ! ----------
1664  ! *W(XI,XJ,XK,XL)*
1665  ! *XI* - WAVE NUMBER
1666  ! *XJ* - WAVE NUMBER
1667  ! *XK* - WAVE NUMBER
1668  ! *XL* - WAVE NUMBER
1669  ! METHOD.
1670  ! -------
1671  ! NONE
1672  !
1673  ! EXTERNALS.
1674  ! ----------
1675  ! NONE.
1676  !
1677  !-----------------------------------------------------------------------
1678  !
1679  IMPLICIT NONE
1680  REAL XI,XJ,XK,XL,THI,THJ,THK,THL
1681  !
1682  !*** 1. DETERMINE NONLINEAR TRANSFER.
1683  ! --------------------------------
1684  !
1685  w2= u(xi,xj,xk,xl,thi-pi,thj-pi,thk,thl)+&
1686  u(xk,xl,xi,xj,thk,thl,thi-pi,thj-pi)-&
1687  u(xk,xj,xi,xl,thk,thj-pi,thi-pi,thl)-&
1688  u(xi,xk,xj,xl,thi-pi,thk,thj-pi,thl)-&
1689  u(xi,xl,xk,xj,thi-pi,thl,thk,thj-pi)-&
1690  u(xl,xj,xk,xi,thl,thj-pi,thk,thi-pi)
1691  RETURN

References pi, and u().

Referenced by tables_2nd().

◆ w3add2ndorder()

subroutine w3canomd::w3add2ndorder ( real, dimension(nspec), intent(inout)  E,
real, intent(in)  DEPTH,
real, dimension(nk), intent(in)  WN,
real, dimension(nk), intent(in)  CG,
integer, intent(in)  IACTION 
)

Adds second order spectrum on top of first order spectrum.

Parameters
[in,out]EEnergy density spectrum (1-D), f-theta.
[in]DEPTHMean water depth.
[in]WNWavenumbers.
[in]CGGroup velocities.
[in]IACTIONAction density spectrum (1-D).
Author
F. Ardhuin
Date
19-Oct-2012

Definition at line 153 of file w3canomd.F90.

153  !/
154  !/ +-----------------------------------+
155  !/ | WAVEWATCH III NOAA/NCEP |
156  !/ | F. Ardhuin |
157  !/ | FORTRAN 90 |
158  !/ | Last update : 19-Oct-2012 |
159  !/ +-----------------------------------+
160  !/
161  !/ 19-Oct-2012 : Origination ( version 4.08 )
162  !/
163  ! 1. Purpose :
164  !
165  ! Adds second order spectrum on top of first order spectrum
166  !
167  ! 2. Method :
168  !
169  ! Uses P. Janssen's code for the inverse canonical transform
170  !
171  !
172  ! 3. Parameters :
173  !
174  ! Parameter list
175  ! ----------------------------------------------------------------
176  ! A R.A. I Action density spectrum (1-D)
177  ! CG R.A. I Group velocities.
178  ! WN R.A. I Wavenumbers.
179  ! DEPTH Real I Mean water depth.
180  ! S R.A. O Source term (1-D version).
181  ! D R.A. O Diagonal term of derivative (1-D version).
182  ! ----------------------------------------------------------------
183  ! ----------------------------------------------------------------
184  ! E R.A. I/O Energy density spectrum (1-D), f-theta
185  ! DEPTH Real I Water depth
186  ! WN R.A. wavenumbers
187  ! CG R.A. group velocities
188  ! IACTION Int I Switch to specify if the input spectrum
189  ! is E(f,theta) or A(k,theta)
190  ! ----------------------------------------------------------------
191  !
192  ! 4. Subroutines used :
193  !
194  ! Name Type Module Description
195  ! ----------------------------------------------------------------
196  ! STRACE Subr. W3SERVMD Subroutine tracing.
197  ! ----------------------------------------------------------------
198  !
199  ! 5. Called by :
200  !
201  ! Name Type Module Description
202  ! ----------------------------------------------------------------
203  ! W3SREF Subr. W3REF1MD Shoreline reflection source term
204  ! W3EXPO Subr. N/A Point output post-processor.
205  ! ----------------------------------------------------------------
206  !
207  ! 6. Error messages :
208  !
209  ! None.
210  !
211  ! 7. Remarks :
212  !
213  ! 8. Structure :
214  !
215  ! See source code.
216  !
217  ! 9. Switches :
218  !
219  ! !/S Enable subroutine tracing.
220  !
221  ! 10. Source code :
222  !
223  !/ ------------------------------------------------------------------- /
224  USE constants, ONLY: grav
225  USE w3dispmd
226  USE w3gdatmd, ONLY: nk, nth, nspec, sig, th, dth, igpars
227 
228 #ifdef W3_S
229  USE w3servmd, ONLY: strace
230 #endif
231  !/
232  !
233  IMPLICIT NONE
234  !/
235  !/ ------------------------------------------------------------------- /
236  !/ Parameter list
237  !/
238  REAL, INTENT(INOUT) :: E(NSPEC)
239  REAL, INTENT(IN) :: DEPTH
240  REAL, INTENT(IN) :: WN(NK)
241  REAL, INTENT(IN) :: CG(NK)
242  INTEGER, INTENT(IN) :: IACTION
243  !/
244  !/ ------------------------------------------------------------------- /
245  !/ Local parameters
246  !/
247  INTEGER :: ISPEC, IK, ITH, M
248  REAL :: CO1, ATOE, DPTH
249 #ifdef W3_S
250  INTEGER, SAVE :: IENT = 0
251 #endif
252  LOGICAL, SAVE :: FIRST = .true.
253 #ifdef W3_OMPG
254  !$omp threadprivate( FIRST )
255 #endif
256  REAL, ALLOCATABLE, SAVE :: FR(:), DFIM(:)
257  REAL, ALLOCATABLE, SAVE :: F1(:,:), F3(:,:)
258 #ifdef W3_OMPG
259  !$omp threadprivate( FR, DFIM, F1, F3 )
260 #endif
261  INTEGER, SAVE :: NFRE, NANG
262  INTEGER, SAVE :: NFREH, NANGH
263 #ifdef W3_OMPG
264  !$omp threadprivate( NFRE, NANG, NFREH, NANGH )
265 #endif
266  !/
267  !/ ------------------------------------------------------------------- /
268  !/
269 #ifdef W3_S
270  CALL strace (ient, 'W3ADD2NDORDER')
271 #endif
272  !
273  ! 0. Initializations ------------------------------------------------ *
274  !
275  IF (first) THEN
276  first=.false.
277  nfre=nk
278  nang=nth
279  nfreh=nk
280  nangh=nth
281  g=grav
282  pi = 4.*atan(1.)
283  zpi=2*pi
284  rad = pi/180.
285  deg = 180./pi
286  ALLOCATE(fr(nfre), dfim(nfre))
287  fr(1:nfre)=sig(1:nk)/zpi
288  ! The following can be replaced using DSIP from WWATCH
289  co1 = 0.5*dth
290  dfim(1)= co1*(fr(2)-fr(1))
291  DO m=2,nfre-1
292  dfim(m)=co1*(fr(m+1)-fr(m-1))
293  ENDDO
294  dfim(nfre)=co1*(fr(nfre)-fr(nfre-1))
295  !
296  ALLOCATE(f1(nang,nfre), f3(nang,nfre))
297  ndepth=igpars(6)
298  deptha=igpars(7)
299  END IF
300  dpth = depth
301 
302  DO ik=1,nk
303  IF (iaction.EQ.0) THEN
304  atoe=1
305  ELSE
306  atoe=sig(ik)*zpi / cg(ik)
307  END IF
308  DO ith=1,nth
309  ispec=ith+(ik-1)*nth
310  f1(ith,ik)=e(ispec)*atoe
311  END DO
312  !WRITE(100,'(100G16.8)') SIG(IK)*ZPI,(F1(ITH,IK),ITH=1,NTH)
313 
314  END DO
315  !
316  ! 1. DETERMINE SECOND-ORDER SPECTRUM.
317  !
318 
319  CALL cal_sec_order_spec(f1,f3,nfre,nang,fr,dfim,th, &
320  dth,dpth,+1., nfreh, nangh)
321 
322  !
323  ! 2. Adds 2nd order spectrum to 1st order
324  !
325  DO ik=1,nk
326  IF (iaction.EQ.0) THEN
327  atoe=1
328  ELSE
329  atoe=sig(ik)*zpi / cg(ik)
330  END IF
331  DO ith=1,nth
332  ispec=ith+(ik-1)*nth
333  e(ispec)=f3(ith,ik)/atoe
334  END DO
335  !WRITE(101,'(I3,100G16.8)') SIG(IK)*ZPI,(F3(ITH,IK),ITH=1,NTH)
336  END DO
337 
338 #ifdef W3_T
339  print*,' END CAL_SEC_ORDER_SPEC'
340 #endif
341  RETURN
342 

References cal_sec_order_spec(), deg, deptha, w3gdatmd::dth, g, constants::grav, w3gdatmd::igpars, ndepth, w3gdatmd::nk, w3gdatmd::nspec, w3gdatmd::nth, pi, rad, w3gdatmd::sig, w3servmd::strace(), w3gdatmd::th, and zpi.

Referenced by w3exnc(), w3outp(), and w3ref1md::w3sref().

◆ w4()

real function w3canomd::w4 ( real  XI,
real  XJ,
real  XK,
real  XL,
real  THI,
real  THJ,
real  THK,
real  THL 
)

Determines the nonlinear transfer coefficient for four wave interactions of gravity waves of the type A_^*A_3^*A_4^*.

Parameters
XIWave number
XJWave number
XKWave number
XLWave number
THI
THJ
THK
THL
Returns
W4
Author
Peter Janssen
Date
NA

Definition at line 1939 of file w3canomd.F90.

1939  !-----------------------------------------------------------------------
1940  !
1941  !*** *REAL FUNCTION* *W4(XI,XJ,XK,XL,THI,THJ,THK,THL)
1942  !
1943  !-----------------------------------------------------------------------
1944  !
1945  !*** *W4* DETERMINES THE NONLINEAR TRANSFER COEFFICIENT FOR FOUR
1946  ! WAVE INTERACTIONS OF GRAVITY WAVES of the type
1947  ! A_^*A_3^*A_4^*.
1948  !
1949  ! PETER JANSSEN
1950  !
1951  ! PURPOSE.
1952  ! --------
1953  !
1954  ! GIVES NONLINEAR TRANSFER COEFFICIENT FOR FOUR
1955  ! WAVE INTERACTIONS OF GRAVITY-CAPILLARY WAVES IN THE
1956  ! IDEAL CASE OF NO CURRENT. (CF.ZAKHAROV,AND CRAWFORD ET AL)
1957  !
1958  ! INTERFACE.
1959  ! ----------
1960  ! *W4(XI,XJ,XK,XL)*
1961  ! *XI* - WAVE NUMBER
1962  ! *XJ* - WAVE NUMBER
1963  ! *XK* - WAVE NUMBER
1964  ! *XL* - WAVE NUMBER
1965  ! METHOD.
1966  ! -------
1967  ! NONE
1968  !
1969  ! EXTERNALS.
1970  ! ----------
1971  ! NONE.
1972  !
1973  !-----------------------------------------------------------------------
1974  !
1975  IMPLICIT NONE
1976  common/const/depth,alpha,mdw,gam_j,depthd
1977  INTEGER MDW
1978  REAL DEPTH,ALPHA,GAM_J,DEPTHA,DEPTHD
1979  REAL XI,XJ,XK,XL,THI,THJ,THK,THL
1980  !
1981  !
1982  !*** 1. DETERMINE NONLINEAR TRANSFER.
1983  ! --------------------------------
1984  !
1985 
1986  w4= u(xi,xj,xk,xl,thi,thj,thk,thl)+&
1987  u(xi,xk,xj,xl,thi,thk,thj,thl)+&
1988  u(xi,xl,xj,xk,thi,thl,thj,thk)+&
1989  u(xj,xk,xi,xl,thj,thk,thi,thl)+&
1990  u(xj,xl,xi,xk,thj,thl,thi,thk)+&
1991  u(xk,xl,xi,xj,thk,thl,thi,thj)
1992 
1993 
1994  w4=w4/3.
1995 
1996  RETURN

References u().

Referenced by b4().

Variable Documentation

◆ deg

real w3canomd::deg

Definition at line 112 of file w3canomd.F90.

Referenced by w3add2ndorder().

◆ deptha

real w3canomd::deptha

Definition at line 114 of file w3canomd.F90.

114  REAL :: DEPTHA ! first depth in table

Referenced by cal_sec_order_spec(), and w3add2ndorder().

◆ g

real w3canomd::g

Definition at line 112 of file w3canomd.F90.

112  REAL :: G, PI, ZPI, RAD, DEG

Referenced by a(), aki(), b(), c_ql(), omeg(), tables_2nd(), u(), vg(), vmin(), vplus(), and w3add2ndorder().

◆ ndepth

integer w3canomd::ndepth

Definition at line 113 of file w3canomd.F90.

113  INTEGER :: NDEPTH

Referenced by cal_sec_order_spec(), and w3add2ndorder().

◆ pi

real w3canomd::pi

Definition at line 112 of file w3canomd.F90.

Referenced by a(), b(), b1(), b2(), b3(), b4(), c_ql(), v2(), w1(), w2(), and w3add2ndorder().

◆ rad

real w3canomd::rad

Definition at line 112 of file w3canomd.F90.

Referenced by w3add2ndorder().

◆ zpi

real w3canomd::zpi

Definition at line 112 of file w3canomd.F90.

Referenced by cal_sec_order_spec(), and w3add2ndorder().

w3gdatmd::nk
integer, pointer nk
Definition: w3gdatmd.F90:1230
w3gdatmd::dth
real, pointer dth
Definition: w3gdatmd.F90:1232
w3gdatmd::nspec
integer, pointer nspec
Definition: w3gdatmd.F90:1230
w3gdatmd::sig
real, dimension(:), pointer sig
Definition: w3gdatmd.F90:1234
w3gdatmd::th
real, dimension(:), pointer th
Definition: w3gdatmd.F90:1234
w3snl4md::nang
integer nang
Definition: w3snl4md.F90:139
w3servmd
Definition: w3servmd.F90:3
w3gdatmd::nth
integer, pointer nth
Definition: w3gdatmd.F90:1230
m_constants::pi
real pi
circular constant, 3.1415...
Definition: mod_constants.f90:29
w3servmd::strace
subroutine strace(IENT, SNAME)
Definition: w3servmd.F90:148
constants
Define some much-used constants for global use (all defined as PARAMETER).
Definition: constants.F90:20
w3gdatmd
Definition: w3gdatmd.F90:16
w3gdatmd::igpars
real, dimension(:), pointer igpars
Definition: w3gdatmd.F90:1142
w3dispmd
Definition: w3dispmd.F90:3
constants::grav
real, parameter grav
GRAV Acc.
Definition: constants.F90:61