海の波について
竿先に集中しつつ、海を眺めるのは至福の時ですよね。
あっという間に時間が流れていきます。
水面に目を向けると大小問わず波を見ます。
今日はそんな波の性質を見ていきます。
波を知ることは海底の地形を想像したり、事前に危険を察知することもできますので、
波の理論を勉強しておくとなにかと役立ちます。
釣れないときには海面を眺めるだけでも面白いです。笑
工学的な話になりますので、できるだけ平易な説明を心がけますが、
難しかったらごめんなさい。波だけでもかなり奥が深いので、今回は規則波だけで考えます。
波の性質
実際の海では様々な大きさ、向きの波が複雑に重なりあって、押し寄せます。
工学上では基本的な波の性質は規則波(三角関数)で考えることが多いです。
なぜなら、実際の波は非常に複雑で、性質を理解するのは難しいからです。
単純な波でどこまで進んでも変化しないと仮定すれば、波の形(波形)は次の式で表されます。
ここで、η(イータと読みます)は水面の上昇量(m)、Hは波高(m)、kは波数()、σは角振動数()です。
Cは波速(m/s)を示します。xとtはそれぞれ位置と時間を表す変数です。
専門用語の説明は波形を用いて後ほど説明します。
例えば、を用いて、水深10m、波高1.0m、周期6sの波を規則波で表現すると次のようになります。
水面が波のように振動していますよね。
先ほどあった専門用語の説明です。
波高:波の峰から谷の高さ
※天気予報などでいわれる波高は一般に有義波高を示しています。詳しいことは後日。
波長:波の峰から次の波の峰までの距離
周期:波の峰から次の波の峰が来るまでの時間
波数:() ;Lは波長です。
角振動数:() ;Tは周期です。
グラフを描画するソースコード
fortranとgnuplotのプログラムを使える人はこちらのソースコードを使うと同じ波形を表現できます。
波長は任意水深に対応したものとなっています。波高、周期、水深を変えて実行してみてください。プログラムを実行するとgifが出力されます。
fortranコード
PROGRAM CALC_ETA IMPLICIT NONE REAL(8)::WH,H,T,L,C,K !波高、水深、周期,波長,波速,波数 REAL(8)::COTH,X1,XX,L0,A,D,N,SIGMA !COTH、一次近似、二次近似、沖波波長、変数A、変数D、係数N REAL(8)::PI2=3.14*2,G=9.8 REAL(8)::DX,XGRID(300),ETA(100,300) INTEGER::I,TS CHARACTER*128::FILENAME !SET PARAMTER WRITE(*,*)"INPUT DEPTH(M) (DEPTH>0)" READ(*,*)H IF (H<0)STOP WRITE(*,*)"INPUT WAVE PERIOD(S) (PERIOD>0)" READ(*,*)T IF (T<0)STOP WRITE(*,*)"INPUT WAVE HEIGHT(M) (HEIGHT>0)" READ(*,*)WH IF (T<0)STOP WRITE(*,"(A10,F10.2,A10,F10.2,A10,F10.2)")"DEPTH =",H,"PERIOD = ",T,"HEIGHT = ",WH !WRITE(*,*)"CALC L0" L0 = (G*T*T)/PI2 WRITE(*,"(A10,F10.2,A5)")"L0 =",L0,"m" WRITE(*,"(A10,F10.2,A5)")"C =",L0/T,"m/s" !WRITE(*,*)"SET INITIAL VALUE" A = (PI2*H)/L0 IF(A>=1.0)THEN X1 = A ELSE X1 = SQRT(A) END IF !NEWTON-RAPHSON METHOD DO WHILE(DABS(1-X1/XX)>1.0E-5) COTH = 1.0/DTANH(X1) XX = X1 - (X1-A*COTH)/(1+A*(COTH**2-1.0)) X1 = XX END DO L = PI2*H/XX C = PI2*H/XX/T K = PI2/L SIGMA = PI2/T !SET GRID 1波長を100分割 DX = L*0.01 DO TS = 1,100 DO I = 1,300 XGRID(I)=DX*I ETA(TS,I) = 0.5*WH*COS(K*XGRID(I)-SIGMA*TS) END DO END DO !OUTPUT OPEN(10,FILE="ETA.DAT") DO I = 1,300 WRITE(10,"(101F10.2)")XGRID(I),(ETA(TS,I),TS=1,100) END DO CLOSE(10) WRITE(*,*)"PRESS ENTER IF YOU WANT TO FINISH" READ * END PROGRAM
gnuplotコード
reset set nokey set xrange [0:150] set xlabel "x(m)" set yrange [-1:1] set ylabel "eta(m)" set term gif animate set output "eta.gif" do for [i=1:100]{ plot "eta.dat" using 1:i+1 with lines } set terminal png set output "eta.png" plot "eta.dat" using 1:2 with lines set out
本日のところはここまでです。
人間が作り出した概念である数や数式で自然現象を記述できるのは不思議ですよね。
参考文献:合田良實,わかり易い土木講座 17 海岸・港湾 p27
合田良實,海の波の波長計算プログラム,土木学会論文報告集,第179号・1970 p97-98(https://www.jstage.jst.go.jp/article/jscej1969/1970/179/1970_179_97/_pdf/-char/ja)
※このプログラムを利用した場合において生じた損害について筆者は責任を負いかねます。予めご了承ください。間違い等あればご指摘いただけると大変幸いです。