Tech カテゴリのイメージ

高潮で海面がどこまで上がるかを試せるシミュレーターを作った

台風の被害というと風と雨に目が行くが、過去に大きな犠牲を出してきたのは高潮のほうだった。仕組みは以前記事に書いたのだが、文章だけだと条件の組み合わせが効いてくる感じが伝わらない。動かせるものを作った。

高潮シミュレーターを開く

何を動かせるか

設定するのは5つになる。

・中心気圧。低いほど海面が吸い上げられる
・沿岸の風速。海水を岸へ吹き寄せる力
・風向。湾に吹き込むか、横から吹くか、吹き出すか
・湾の形。開けた海岸、広い湾、奥が浅く狭い湾
・潮位。干潮、中間、満潮、大潮の満潮

動かすと断面図の海面が上下し、堤防を越えるかどうかが見える。越えると陸側に水が流れ込んで、家が浸かる。

画面左上に内訳が出るようにした。吸い上げが何センチ、吹き寄せが何センチ、そのときの潮位が何センチ。合計がそのまま総水位になる。

吹き寄せが主役だと分かる

このアプリでいちばん見てほしいのは、内訳の比率になる。

気圧による吸い上げは、1ヘクトパスカル下がるごとにおよそ1センチという関係で決まる。中心気圧930hPaなら、平年の1013hPaとの差で83センチほど。数字としては大きいが、これだけなら堤防を越えない。

一方の吹き寄せは風速の2乗に比例する。風速が2倍になれば効果は4倍近くになる。設定を動かすと、こちらが数メートル単位で効いてくるのが分かる。高潮の主役は気圧ではなく風だ、というのが数字で見える。

風向を「吹き出す」にすると、吹き寄せがマイナスになって水位が下がる。これも実際に起きることで、風向き次第で同じ台風でも被害の有無が変わる理由になる。

湾の形と満潮が効く

条件を変えて比べると、地形と時刻の効きがはっきりする。

同じ950hPa・風速40m/sでも、開けた海岸なら総水位129センチ、奥が浅く狭い湾なら273センチになる。倍以上違う。湾が奥に向かって狭く浅くなっていると、集まった海水の逃げ場がなくなって水位が上がるためだ。

潮位の差はもっと単純で、干潮と大潮の満潮では200センチの差がある。同じ高潮が起きても、干潮なら堤防内に収まり、満潮と重なれば越える。台風の接近予想時刻と、その地域の満潮時刻が近いときに警戒の水準を上げるべき理由がここにある。

数値の合わせ方

モデルは単純な足し算で、吸い上げと吹き寄せと潮位を足しているだけになる。ただし係数は適当に決めたわけではなく、実際の事例に合うよう調整した。

基準にしたのは伊勢湾台風で、上陸時の中心気圧はおよそ929hPa、沿岸の風速は45m/s前後とされる。この条件を入れると、吸い上げ84センチ、吹き寄せ266センチ、合わせて偏差350センチになるよう合わせた。実際の伊勢湾台風の高潮偏差が3.5メートル前後とされているので、そこに一致する。満潮を重ねると総水位430センチで、堤防350センチを80センチ越える計算になる。実際に堤防が破られた事実とも整合する。

作ったあとに、条件を変えたときに符号と大きさが正しい向きに動くかを一通り確かめた。平常時(1013hPa・無風)で偏差ゼロになること、風が吹き出す向きで吹き寄せが負になること、湾の形で2倍以上の差が出ること、潮位の差がそのまま総水位の差になること。ここが逆になっていると、伝えたいことと逆のことを伝えてしまう。

実装の話

例によって外部ライブラリなしの単一HTMLで、断面図はCanvasに直接描いている。

・海面の高さは総水位をピクセルに換算して描くだけ。波は正弦波を時間で流している
・越流したときは、堤防の内側に水を描き、超過分に応じて深さを変える
・100センチごとの目盛りを背景に引いて、数字と絵が対応するようにした

堤防の高さは350センチで固定した仮の値になる。実際の海岸堤防は場所によってまるで違うので、ここは可変にしてもよかったのだが、比較の基準を固定したほうが条件の効きが分かりやすいと判断した。

まとめ

・高潮は気圧による吸い上げと、風による吹き寄せの足し算で起きる
・吸い上げは1hPaにつき約1センチ。主役は風速の2乗で効く吹き寄せのほう
・風向が逆なら水位は下がる。同じ台風でも風向き次第で被害が変わる
・同じ気圧・風速でも、湾の形で総水位が2倍以上違う
・干潮と大潮の満潮では200センチの差がある。時刻が重なるかどうかが決定的
・伊勢湾台風の条件で偏差3.5メートル級になるよう係数を合わせた
高潮シミュレーターから。実際の高潮情報は気象庁と自治体の発表を確認すること