ArticlePDF Available

Celeris: A GPU-accelerated open source software with a Boussinesq-type wave solver for real-time interactive simulation and visualization

Authors:

Abstract and Figures

In this paper, we introduce an interactive coastal wave simulation and visualization software, called Celeris. Celeris is an open source software which needs minimum preparation to run on a Windows machine. The software solves the extended Boussinesq equations using a hybrid finite volume - finite difference method and supports moving shoreline boundaries. The simulation and visualization are performed on the GPU using Direct3D libraries, which enables the software to run faster than real-time. Celeris provides a first-of-its-kind interactive modeling platform for coastal wave applications and it supports simultaneous visualization with both photorealistic and colormapped rendering capabilities. We validate our software through comparison with three standard benchmarks for non-breaking and breaking waves.
Content may be subject to copyright.
To cite this paper, please use the following reference:
Tavakkol, Sasan, and Patrick Lynett. "Celeris: A GPU-accelerated open source
software with a Boussinesq-type wave solver for real-time interactive simulation
and visualization." Computer Physics Communications 217 (2017): 117-127.
!"#"$%&'()(*+,-.//"#"$.0"1(23"4(&25$/"(&2607.$"(7%08(.(
925&&%4"&:-0;3"(7.<"(&2#<"$(62$($".#-0%=">(%40"$./0%<"(
&%=5#.0%24(.41(<%&5.#%?.0%24(
@.&.4(A.<.BB2#>(+.0$%/B(C;4"00(
Department)of)Civil)and)Environmental)Engineering,)University)of)Southern)California,)Los)Angeles,)
California,)USA)
)D&0$./0(
!"#$%&'#()(*+,#-*#&"$+./01*#)"#&"$*+)1$&2*#1.)'$)3#-)2*#'&403)$&."#)"/#2&'0)3&5)$&."#'.6$-)+*,#1)33*/#
7*3*+&'8#7*3*+&'#&'#)"#.(*"#'.0+1*#'.6$-)+*#-%&1%#"**/'#4&"&404#(+*()+)$&."#$.#+0"#."#)#9&"/.-'#
4)1%&"*8#:%*#'.6$-)+*#'.32*'#$%*#*;$*"/*/#<.0''&"*'=#*=0)$&."'#0'&">#)#%?@+&/#6&"&$*#2.304*#A#6&"&$*#
/&66*+*"1*#4*$%./#)"/#'0((.+$'#4.2&">#'%.+*3&"*#@.0"/)+&*'8#:%*#'&403)$&."#)"/#2&'0)3&5)$&."#)+*#
(*+6.+4*/#."#$%*#BCD#0'&">#E&+*1$FE#3&@+)+&*',#-%&1%#*")@3*'#$%*#'.6$-)+*#$.#+0"#6)'$*+#$%)"#+*)3G$&4*8#
7*3*+&'#(+.2&/*'#)#6&+'$G.6G&$'GH&"/#&"$*+)1$&2*#4./*3&">#(3)$6.+4#6.+#1.)'$)3#-)2*#)((3&1)$&."'#)"/#&$#
'0((.+$'#'&403$)"*.0'#2&'0)3&5)$&."#-&$%#@.$%#(%.$.+*)3&'$&1#)"/#1.3.+4)((*/#+*"/*+&">#1)()@&3&$&*'8#
9*#2)3&/)$*#.0+#'.6$-)+*#$%+.0>%#1.4()+&'."#-&$%#$%+**#'$)"/)+/#@*"1%4)+H'#6.+#"."G@+*)H&">#)"/#
@+*)H&">#-)2*'8#
E";72$1&I#9)2*#C+.()>)$&."J#9)2*#2&'0)3&5)$&."J#!"$*+)1$&2*#4./*3&">J#K%)/*+J#<.0''&"*'=J#BCD#
#
F G40$215/0%24(
L*'*)+1%#-&$%#$%*#<.0''&"*'=G$?(*#*=0)$&."'#%)'#3*/#$.#$+)"'6.+4)$&2*#1%)">*'#&"#1.)'$)3#*">&"**+&">#
'&403)$&."#)"/#(+)1$&1*#.2*+#$%*#3)'$#6*-#/*1)/*'#M*8>8#NOPQ##:%*'*#*=0)$&."'#)+*#(.-*+603#6.+#$%*#'$0/?#
.6#"*)+'%.+*#/?")4&1',#&"130/&">#@.$%#"."3&"*)+#)"/#/&'(*+'&2*#*66*1$'8#9%&3*#<.0''&"*'=G$?(*#
*=0)$&."'#)+*#1)()@3*#.6#'&403)$&">#+*3)$&2*3?#'%.+$G-)2*',#$%*?#)+*#1.4(0$)$&.")33?#4.+*#*;(*"'&2*#
$%)"#$%*&+#1.0"$*+()+$,#"."G3&"*)+#'%)33.-#-)$*+#MRSK9Q#*=0)$&."'8#:%*#1.4(0$)$&.")3#*66.+$#"**/*/#
6.+#<.0''&"*'=G$?(*#*=0)$&."'#%&"/*+'#+*)3G$&4*#'&403)$&."'#0'&">#$%*4,#+*=0&+&">#()+)33*3#(+.1*''&">#."#
/.5*"'#$.#%0"/+*/'#.6#7CD#1.+*'#$.#)1%&*2*#NTP8#:%*#"**/*/#'0(*+1.4(0$&">#6)1&3&$&*'#)+*#"*&$%*+#*)'&3?#
)11*''&@3*#".+#&"*;(*"'&2*,#()+$&103)+3?#6.+#$%*#$?(*'#.6#.6$*"#3.-G@0/>*$#1.)'$)3#)"/#1&2&3#*">&"**+&">#
(+.U*1$'#6.+#-%&1%#$%*?#)+*#)((3&1)@3*8#9%&3*#B+)(%&1'#C+.1*''&">#D"&$'#MBCD'Q,#)+*#)66.+/)@3*#
)3$*+")$&2*'#$.#)11*3*+)$*#$%*'*#"04*+&1)3#4./*3',#$%*?#)+*#".$#.6$*"#3*2*+)>*/#6.+#<.0''&"*'=#
*=0)$&."',#(*+%)('#@*1)0'*#$%*'*#*=0)$&."'#/.#".$#*)'&3?#3*"/#$%*4'*32*'#$.#%&>%3?#()+)33*3#"04*+&1)3#
'1%*4*',#/0*#$.#$%*&+#*4@*//*/#&4(3&1&$#4*$%./'#)"/#3)+>*#"04*+&1)3#'$*"1&3'8#
V&"&$*#2.304*#4*$%./#MVWXQ,#'%.1HG1)($0+&">,#630;#+*1."'$+01$&.",#)"/#3&4&$*+'#1)"#4)H*#-)2*#
4./*3&">#'.32*+'#4.+*#+.@0'$J#'01%#)((+.)1%*'#)+*#".-#1.44."3?#6.0"/#&"#RSK9#4./*3'#M*8>8#NFPQ8#
Y.-*2*+#)((3&1)$&."#.6#VWX#$.#<.0''&"*'=G$?(*#*=0)$&."'#&'#".$#'$+)&>%$6.+-)+/#NZP8##9&$%#VWX#)"/#$%*#
)''.1&)$*/#'.30$&."G'4..$%&">#'1%*4*',#+.@0'$"*''#.6#$%*#4./*3#@*1.4*'#>+*)$*+8##:%&'#&'#.6#%&>%#
+*3*2)"1*#%*+*,#)'#.0+#>.)3#&'#$.#(+.2&/*#)"#&"$*+)1$&2*#'&403)$&."#*"2&+."4*"$,#-%*+*#$%*#0'*+#1)"#)3$*+#
$%*#-)$*+#'0+6)1*#)"/#$%*#@)$%?4*$+?#-%&3*#$%*#4./*3#&'#+0""&">8#:%&'#&"$*+)1$&2*#*"2&+."4*"$#)3'.#
"**/'#6)'$#1."10++*"$#FGE#2&'0)3&5)$&."8#9*#1%..'*#)#%?@+&/#6&"&$*#2.304*G6&"&$*#/&66*+*"1*#'1%*4*#$.#
'.32*#$%*#>.2*+"&">#*=0)$&."'8#:%&'#%?@+&/#/&'1+*$&5)$&."#*")@3*'#$%*#'.6$-)+*#$.#@*"*6&$#6+.4#$%*#
+.@0'$"*''#.6#VWX,#-%&3*#+*$)&"&">#$%*#%&>%#)110+)1?#.6#$%*#<.0''&"*'=G$?(*#4./*38##:.#)1%&*2*#%&>%#
1.4(0$)$&.")3#'(**/,#-*#'.32*#$%*#*=0)$&."'#0'&">#$%*#BCD,#(+.2&/&">#6)'$*+#$%)"#+*)3G$&4*#'&403)$&."#
'(**/#."#)"#)2*+)>*#0'*+#3)($.(8#9*#1)33#.0+#.(*"#'.0+1*#'.6$-)+*#7*3*+&'J#$%*#S)$&"#-.+/#6.+#[=0&1H\8#
:%*#6&+'$#2*+'&."#.6#.0+#'.6$-)+*#&'#1)33*/#7*3*+&'#]/2*"$8#
7*3*+&',#$.#$%*#@*'$#.6#.0+#H".-3*/>*,#&'#$%*#6&+'$#&"$*+)1$&2*#'.6$-)+*#6.+#'&403)$&."#.6#"."3&"*)+,#1.)'$)3#
-)2*'8#!"#$%&'#'.6$-)+*,#$%*#0'*+#1)"#&"$*+)1$#-&$%#$%*#-)$*+#'0+6)1*#)"/#$.(.>+)(%?#0'&">#'?'$*4^'#
4.0'*,#6.+#&"'$)"1*#$.#)//_+*4.2*#-)$*+#.+#+)&'*_/+.(#$*++)&"8#]#BD!#&'#)3'.#(+.2&/*/,#@?#-%&1%#$%*#
0'*+#1)"#1%)">*#$%*#"04*+&1)3#)"/#(%?'&1)3#()+)4*$*+'#."#$%*#63?8#V.+#*;)4(3*,#)#'.3&$)+?#-)2*#1)"#@*#
)//*/#$.#$%*#'.30$&."#6&*3/#.+#)#'&"*-)2*#1)"#@*#&"$+./01*/#$.#)#@.0"/)+?,#)33#-%&3*#$%*#4./*3#&'#
+0""&">8#:%*#1."10++*"$#2&'0)3&5)$&."#&"#7*3*+&'#1)"#)3'.#+*2.30$&."&5*#$%*#'$)"/)+/#(+)1$&1*#&"#$%*#
1.)'$)3#*">&"**+&">#1.440"&$?8#70++*"$3?,#&"#-*33GH".-"#-)2*#4./*3&">#1./*',#$%*#'&403)$&."#+*'03$'#
)+*#-+&$$*"#$.#/&'H#)$#1*+$)&"#1%*1H(.&"$'#)"/#)+*#2&'0)3&5*/#0'&">#/&66*+*"$#$..3'#)6$*+-)+/'8#
K&403$)"*.0'#.@'*+2)$&."#.6#+*'03$'#&"#7*3*+&',#-&$%#(%.$.+*)3&'$&1#.+#1.3.+4)((*/#+*"/*+&">,#1)"#
'&>"&6&1)"$3?#%*3(#+*'*)+1%*+'#$.#0"/*+'$)"/#1.)'$)3#(+.1*''*'#&"#)#'(*1&6&1#*2*"$8#
`0+#>.)3#&"#/*2*3.(4*"$#.6#7*3*+&'#-)'#$.#(+.2&/*#)#%)''3*G6+**#'.6$-)+*#-%&1%#1)"#@*#+0"#."#.66G$%*G
'%*36#9&"/.-'#4)1%&"*'#-&$%#4&"&404#(+*()+)$&."8#:%*+*6.+*#-*#'*3*1$*/#X&1+.'.6$^'#E&+*1$FE#3&@+)+?#
)"/#&$'#YSKS#'%)/*+#3)">0)>*#$.#%)+"*''#$%*#(.-*+#.6#$%*#BCD8#K&"1*#E&+*1$FE#&'#".-#&"130/*/#)'#)"#
&"$*>+)3#()+$#.6#9&"/.-'#.(*+)$&">#'?'$*4',#$%*#1.4(&3*/#2*+'&."#.6#7*3*+&'#1)"#@*#*)'&3?#+0"#."#)"?#
+*1*"$#9&"/.-'#4)1%&"*#-&$%#)#'&">3*#13&1H#)"/#-&$%.0$#&"'$)33)$&."#.6#)"?#$%&+/G()+$?#'.6$-)+*#.+#
3&@+)+?8#X.+*.2*+,#$%&'#&4(3*4*"$)$&."#*")@3*'#0'#$.#/&+*1$3?#2&'0)3&5*#$%*#'&403)$&."#+*'03$'#-&$%#$%*#
4&"&404#.2*+%*)/#."#$%*#BCD#)"/#0'&">#E&+*1$FE#3&@+)+&*'8#7*3*+&'#&'#&4(3*4*"$*/#&"#7aa#)"/#YSKS,#
)"/#&$#&'#)"#.(*"G'.0+1*#1./*#/*2*3.(*/#)"/#+*/&'$+&@0$*/#0"/*+#$%*#$*+4'#.6#$%*#BRD#B*"*+)3#C0@3&1#
S&1*"'*#)'#(0@3&'%*/#@?#$%*#V+**#K.6$-)+*#V.0"/)$&."8##
H I.08"=.0%/.#(=21"#(
2.1 Governing)Equations)
:%*#*;$*"/*/#<.0''&"*'=#*=0)$&."'#/*+&2*/#@?#X)/'*"#)"/#Kb+*"'*"#NcP#)+*#)#'0&$)@3*#'*$#6.+#)#%?@+&/#
6&"&$*#2.304*G6&"&$*#/&66*+*"1*#'1%*4*#NTP8#:%*'*#*=0)$&."'#6.+#TEY#63.-#+*)/#)'I#
!"# $%!&'# (%!&)# *%!& + ,#
#
MOQ#
! +
-
.
/
0 $ ! +
.
.1
-#2-1
3
./
-
0 ( ! +
/
./
-
/1
-#2-1
3
0 *%!& +
,
2-4'# 56# 7
6
2-4)# 51# 7
1
)
#
-%*+*#,#&'#$%*#1."'*+2)$&2*#2)+&)@3*'#2*1$.+,#JM,Q#)"/#*M,Q#)+*#$%*#)/2*1$&2*#630;#2*1$.+',#)"/#@M,Q#&'#
$%*#'.0+1*#$*+4#-%&1%#&"130/*'#@.$$.4#'3.(*,#6+&1$&.",#)"/#/&'(*+'&2*#$*+4'8#h#&'#$%*#$.$)3#-)$*+#/*($%8#P#
)"/#Q#)+*#$%*#/*($%G&"$*>+)$*/#4)''#630;*'#&"#x#)"/#y#/&+*1$&."'#+*'(*1$&2*3?,#-%*+*#$%*#x-y#(3)"*#4)H*'#
$%*#%.+&5."$)3#'.30$&."#6&*3/8#K0@'1+&($'#x#)"/#y#/*".$*#'()$&)3#/&66*+*"$&)$&.",#-&$%#+*'(*1$#$.#$%*#
1.++*'(."/&">#/&+*1$&.",#)"/#'0@'1+&($#t#/*".$*'#$*4(.+)3#/&66*+*"$&)$&."8#z#&'#$%*#@.$$.4#*3*2)$&."#
4*)'0+*/#6+.4#)#6&;*/#/)$048#f1))"/#f2#)+*#$%*#@.$$.4#6+&1$&."#$*+4'#)"/#g#&'#$%*#>+)2&$)$&.")3#
)11*3*+)$&."#1.*66&1&*"$8#ψO#)"/#ψT#)+*#$%*#4./&6&*/#/&'(*+'&2*#$*+4'#/*6&"*/#)'I#
56+ 8 9 : # ;
<=1.''" # /')" 9:2=>?''' # ?'))
9 =='
;
<.'" #;
@/)" # 3:2=?'' #:2=?)) 9 ==)
;
@/'" #:2=?') #
MTQ#
51+ 8 9 : # ;
<=1.')" # /))" 9:2=>?))) # ?'')
9 =='
;
</)" #;
@.'" # 3:2=?)) #:2=?'' 9 =='
;
@.)" #:2=?') #
MFQ#
-%*+*#d#&'#$%*#'$&33#-)$*+#/*($%#)"/#B#d#O_Oc#&'#$%*#1)3&@+)$&."#1.*66&1&*"$#6.+#/&'(*+'&."#(+.(*+$&*'#.6#$%*#
*=0)$&."'8#:%*#6+**#'0+6)1*#*3*2)$&."#&'#η#d#w#A#ws,#-%*+*#w#&'#$%*#-)$*+#'0+6)1*#*3*2)$&."#)"/#ws#&'#$%*#
'$&33#-)$*+#'0+6)1*#*3*2)$&."#@.$%#4*)'0+*/#6+.4#$%*#6&;*/#/)$048#9*#0'*#Nw,#P,#QP:#)'#$%*#'*$#.6#
0"H".-"#2)+&)@3*',#&"#-%&1%#w#d#h#a#z8#:.#)2.&/#&"$+./01&">#0""*1*'')+?#1.4(3&1)$&."#$.#$%*#*=0)$&."',#
-*#+*6+)&"#6+.4#'0@'$&$0$&">#h#-&$%#w#A#zJ#%.-*2*+,#$%)$#&'#%.-#h#&'#1)3103)$*/#&"#(+)1$&1*8#]''04&">#
1."'$)"$#@.$$.4#*3*2)$&."#&"#$&4*,#-*#%)2*#wt#d#ht8#
:%*#*;$*"/*/#<.0''&"*'=#*=0)$&."'#(+.2&/*#'066&1&*"$3?#)110+)$*#3&"*)+#/&'(*+'&."#)"/#'%.)3&">#
1%)+)1$*+&'$&1'#6.+#2)30*'#.6#kd#e#F,#-%*+*#k#&'#$%*#-)2*#"04@*+8#R.$*#$%)$#$%*'*#*=0)$&."'#
)0$.4)$&1)33?#+*/01*#$.#$%*#K)&"$GW*")"$#'?'$*4#.6#"."G3&"*)+#'%)33.-#-)$*+#*=0)$&."'#MRSK9Q#6.+#d#d#
f8#!"#3.1)$&."'#-%*+*#'$&33#-)$*+#'0+6)1*#*3*2)$&."#&'#".$#/*6&"*/,#'01%#)'#."#3)"/'#)@.2*#$%*#'*)#3*2*3,#-*#
'*$#d#d#f#'.#$%*#'.32*+#)0$.4)$&1)33?#'-&$1%*'#$.#RSK98#
2.2 )Numerical)Model)
V.33.-&">#9*&#)"/#g&+@?#NhP,#i=8#MOQ#1)"#@*#+*)++)">*/#)'I#
A"+ B .0 / #
#
MZQ#
C"
D+ E -0 .0 / # E D/"#
McQ#
F
"
D+ G -0 .0 / # G D."#
MhQ#
-%*+*#"*-3?#&"$+./01*/#=0)"$&$&*'#)+*#/*6&"*'#@?#
CD+ . 9 ;
<=='.
'9 : # ;
<=1.
''#
MjQ#
FD+ / 9 ;
<==)/)9 : # ;
<=1/))#
MkQ#
B .0 / + 9 .
'# /)#
MlQ#
E -0 . 0 / + 9 .1
-#2-1
3'
9./
-)
9 2-4'9 7
6#:2=>?''' # ?'))
#:2=1%='3?'' # ?)) # =)?')&#
MOfQ#
G -0 .0 / + 9 /1
-#2-1
3)
9./
-'
9 2-4)9 7
1#:2=>?))) # ?'')
#:2=1=)3?)) # ?'' # ='?') #
MOOQ#
ED/ + ;
@=='/)#;
@==)/'# : # ;
<=1/')#
MOTQ#
GD/ + ;
@=='.
)#;
@==).
'# : # ;
<=1.
')#
MOFQ#
:%&'#+*)++)">*4*"$#)33.-'#0'#$.#+*-+&$*#i=8#MOQ#)'#`Ei^'#&"#$&4*8#:%*#3*6$#%)"/#'&/*#$*+4'#&"#i=8#MZQGMhQ#
)+*#/&'1+*$&5*/#&"#$&4*8#NFmMQQPt#)"/#NGmMPQPt#)+*#*2)30)$*/#@?#*;$+)(.3)$&."#&"#$&4*#)"/#$%*#+*'$#.6#$%*#
$*+4'#&"#$%*#+&>%$#%)"/#'&/*#)+*#H".-"#&"#$%*#10++*"$#$&4*#'$*(8#V.33.-&">#NTP#)"/#NZP#-*#0'*#)#%?@+&/#
VWXGVEX#/&'1+*$&5)$&."#$.#'.32*#$%*'*#*=0)$&."'#."#0"&6.+4#7)+$*'&)"#>+&/'8#:%*#'()$&)3#/.4)&"#&'#
/&'1+*$&5*/#@?#+*1$)">03)+#1*33'#-&$%#6&;*/#/&4*"'&."'#.6#Δx#)"/#Δy8#i)1%#1*33#(3)?'#$%*#+.3*#.6#)#1."$+.3#
2.304*#6.+#$%*#VWX#/&'1+*$&5)$&."8#7*33#1*"$*+'#)"/#$%*&+#1.++*'(."/&">#1*33#)2*+)>*/#2)30*'#)+*#0'*/#)'#
$%*#>+&/#(.&"$'#&"#VEX8#:%*#)/2*1$&2*#$*+4'#)3.">#-&$%#$%*#@.$$.4#'3.(*#$*+4#&'#/&'1+*$&5*/#0'&">#)#
'*1."/G.+/*+#-*33G@)3)"1*/#(.'&$&2&$?#(+*'*+2&">#1*"$+)3G0(-&"/#'1%*4*#&"$+./01*/#@?#g0+>)".2#)"/#
C*$+.2)#NFP8#:%&'#'1%*4*,#'.4*$&4*'#H".-"#)'#gCfj,#&'#)#6&"&$*#2.304*#4*$%./#$.#'.32*#$%*#K)&"$G
W*")"$#'?'$*4#.6#'%)33.-#-)$*+#*=0)$&."'8#:%*#+*'$#.6#$%*#$*+4'#)+*#/&'1+*$&5*/#0'&">#1*"$+)3#VEX8#
gCfj#(+*'*+2*'#'$)$&.")+?#'$*)/?#'$)$*'#M&8*8#@*&">#-*33G@)3)"1*/Q#)"/#>0)+)"$**'#$%*#(.'&$&2&$?#.6#$%*#
1.4(0$*/#630&/#/*($%8#!$#'0((.+$'#)#/+?#'$)$*#-&$%#".#"**/#$.#H**(#$+)1H#.6#$%*#-*$G/+?#6+."$#)"/#&$#1)"#
)11.44./)$*#/&'1."$&"0.0'#@.$$.4#$.(.>+)(%?8#X.+*.2*+#&$#&'#()+$&103)+3?#'0&$)@3*#6.+#&4(3*4*"$)$&."#
."#$%*#BCD#NjP8#9*#6.0"/#$%&'#'1%*4*#$.#@*#)#+.@0'$#)"/#)110+)$*#4*$%./,#*2*"#-&$%#$%*#'&">3*#
(+*1&'&."#&4(3*4*"$)$&."#.6#$%*#BCD8#:%*#4*$%./#&'#-*33G'0&$*/#6.+#&"$*+)1$&2*#)"/#%&>%#(*+6.+4)"1*#
/*'&>"#.6#7*3*+&'8#K&"1*#$%*#/*$)&3'#.6#$%&'#'1%*4*#1)"#@*#6.0"/#&"#NFP,#-*#."3?#/*'1+&@*#&$'#3)?.0$8#:%*#
.+&>&")3#gCfj#6.+#'.32&">#'%)33.-#-)$*+#*=0)$&."'#1."'&'$'#.6#$%*'*#'$*('I#
OG D"H".-"#2)+&)@3*',#Nw,#P,#QP:,#)+*#3&"*)+3?#+*1."'$+01$*/#M*2)30)$*/Q#)$#1*33#&"$*+6)1*'#)((3?&">#)#
>*"*+)3&5*/#4&"4./#3&4&$*+#."#$%*&+#/*+&2)$&2*'8##
TG ]#'&4(3*#1."'*+2)$&2*#1.++*1$&."#&'#)((3&*/#."#w)$.#(+*'*+2*#$%*#(.'&$&2&$?#.6#h8#V3.-#2*3.1&$&*',#u#
)"/#v,#)+*#1)3103)$*/#)'#
H + 3- .
%-I#JKL -I0 M 80888888888888N + 3- /
%-I#JKL -I0 M
#
MOZQ#
-%*+*#ϵ#&'#)#'4)33#(+*/*6&"*/#$.3*+)"1*#$.#)2.&/#/&2&'&."#@?#2*+?#'4)33#2)30*'#.+#5*+.8#
FG V30;*'#)+*#1.4(0$*/#)$#*)1%#1*33#&"$*+6)1*#*4(3.?&">#$%*#1*"$+)3G0(-&"/#'1%*4*8#
ZG K.0+1*#$*+4'#)+*#*2)30)$*/#)"/#0"H".-"#2)+&)@3*'#)+*#6.0"/#6.+#$%*#"*;$#$&4*#'$*(8##
!"#.+/*+#$.#0'*#gCfj#)'#$%*#VWX#'.32*+#.6#.0+#'1%*4*,#&"#&$'#3)'$#'$*(,#-*#)//#$%*#/&'(*+'&2*#$*+4'#)'#
'.0+1*#$*+4'#/&'1+*$&5*/#@?#1*"$+)3#VEX8##
2.3 Time)integration))
:&4*#&"$*>+)$&."#&'#(*+6.+4*/#@?#)#$%&+/G.+/*+#]/)4'G<)'%6.+$%#'1%*4*#)'#$%*#(+*/&1$.+#'$*(,#)"/#)"#
.($&.")3#6.0+$%G.+/*+#]/)4'GX.03$."#'1%*4*#)'#$%*#1.++*1$.+#'$*(8#:%*#(+*/&1$.+#'$*(#+*)/'#)'#
AOP
QR6 + AOP
Q#ST
;3 3<BOP
Q9;@BOP
QU6 # VBOP
QU1 #
MOcQ#
COP
DQR6 + COP
DQ #ST
;3 3<EOP
Q9;@EOP
QU6 # VEOP
QU1 # 3EOP
DQ 9 <EOP
DQU6 # EOP
DQU1#
MOhQ#
F
OP
DQR6 + F
OP
DQ #ST
;3 3<GOP
Q9;@GOP
QU6 # VGOP
QU1 # 3GOP
DQ 9 <GOP
DQU6 # GOP
DQU1#
MOjQ#
-%*+*#$%*#'0(*+'1+&($'#/*".$*#$%*#'$*(#"04@*+#&"#$&4*,#-&$%#"#@*&">#$%*#3)'$#'$*(#-&$%#H".-"#2)+&)@3*'8#
:%*#(+*/&1$.+#'$*(#&'#*;(3&1&$#&"#$&4*,#-%&1%#4*)"'#$%)$#)33#$%*#2)+&)@3*'#."#$%*#+&>%$#%)"/#'&/*#.6#$%*#
*=0)$&."'#)+*#H".-"8#:%*#1.++*1$.+#'$*(#&'#(*+6.+4*/#@?#
AOP
QR6 + AOP
Q#ST
3W XBOP
QR6 #;XBOP
Q9 VBOP
QU6 # BOP
QU1 #
MOkQ#
COP
DQR6 + COP
DQ #ST
3W XEOP
QR6 #;XEOP
Q9 VEOP
QU6 # EOP
QU1 # EOP
DY 9 EOP
DQ#
MOlQ#
F
OP
DQR6 + F
OP
DQ #ST
3W XGOP
QR6 #;XGOP
Q9 VGOP
QU6 # GOP
QU1 # GOP
DY 9 GOP
DQ#
MTfQ#
:%*#1.++*1$.+#'$*(#&'#&4(3&1&$#&"#$&4*8#!"#.+/*+#$.#'.32*#&$,#$%*#naO#$*+4'#)+*#1)3103)$*/#@?#$%*#(+*/&1$.+#
'$*(#M.+#$%*#1.++*1$.+#2)30*'#6+.4#$%*#(+*2&.0'#1.++*1$.+#&$*+)$&."Q#$%*"#$%*#1.++*1$.+#'$*(#&'#&$*+)$*/#6.+#
)#(+*/*6&"*/#"04@*+#.6#$&4*',#.+#0"$&3#$%*#2)+&)@3*'#1."2*+>*8#K&"1*#$%*#2)+&)@3*'#)$#(+*2&.0'#$&4*#'$*('#
)+*#".$#/*6&"*/#&"#$%*#2*+?#6&+'$#$-.#$&4*#'$*('#.6#$%*#'&403)$&."#M&8*8#"dO#)"/#"dTQ,#)#6&+'$#.+/*+#i03*+#
$&4*#&"$*>+)$&."#&'#0'*/#6.+#$%.'*#$-.#'$*('8#
:%*#-)$*+#'0+6)1*#*3*2)$&.",#wn+O,#&'#/&+*1$3?#6.0"/#@?#'.32&">#i=8#MOcQ#.+#MOkQ8#Y.-*2*+#&"#.+/*+#$.#
1)3103)$*#$%*#630;#$*+4',#P)n+O#)"/#Q)n+O#$%*#6.33.-&">#'*$#.6#&4(3&1&$#*=0)$&."'#40'$#@*#'.32*/I#
ZOP
'.OU60P # :OP
'.OP # [O0P
'.OR60P + COP
D#
MTOQ#
ZOP
)/O0PU6 # :OP
)/OP # [OP
)/O0PR6 + F
OP
D#
MTTQ#
-%*+*##
Z\+==\
@S] 9 : # ;
<
=1
S]180888:\+ ; # 3 : # ;
<
=1
S]180888[\+ 9 ==\
@S] 9 : # ;
<
=1
S]1#
MTFQ#
i=8#MTOQ_i=8#MTTQ#+*'03$'#&"#)#$+&/&)>.")3#'?'$*4#.6#*=0)$&."'#6.+#*)1%#+.-_1.304"#.6#1*33'#&"#$%*#x_y#
/&+*1$&."8#!"#.+/*+#$.#*66&1&*"$3?#'.32*#$%*'*#'*$#.6#*=0)$&."'#."#$%*#BCD,#-*#0'*#$%*#1?13&1#+*/01$&."#
M7LQ#4*$%./#-%&1%#&'#/*'1+&@*/#&"#4.+*#/*$)&3#3)$*+8#
2.4 )Boundary)conditions)
:-.#3)?*+'#.6#>%.'$#1*33'#)+*#1."'&/*+*/#)$#*)1%#@.0"/)+?#)"/#)+*#0'*/#$.#&4(3*4*"$#$%*#@.0"/)+?#
1."/&$&."'8#:%+**#$?(*'#.6#@.0"/)+?#1."/&$&."#)+*#&4(3*4*"$*/#&"#7*3*+&'#]/2*"$I#'&"*-)2*#4)H*+,#
'(.">*#3)?*+,#)"/#6033?#+*63*1$&2*#'.3&/#-)338#X.+*#.($&."'#-&33#@*#)2)&3)@3*#&"#$%*#'0@'*=0*"$#2*+'&."'#.6#
7*3*+&',#&"130/&">#+)"/.4#/&+*1$&.")3#-)2*'#)"/#@.0"/)+?#1."/&$&."'#'*$#@?#$&4*#'*+&*'#&"(0$8#
2.4.1 Solid)wall)
K.3&/#-)33'#)+*#1."'&/*+*/#)'#6033?#+*63*1$&2*#@.0"/)+&*'8#!"#.+/*+#$.#&4(.'*#$%&'#1."/&$&."#$%*#2)30*'#."#
$%*#13.'*'$#$-.#1*33'#$.#$%*#@.0"/)+?#)+*#4&++.+*/#."#$%*#>%.'$#1*33'8#X&++.+&">#*"'0+*'#$%*#6.33.-&">#
1."/&$&."'#)+*#4*$I#
.0 / ^ _ + ,0 `A^ _ + ,08#
MTZQ#
-%*+*#4#&'#$%*#".+4)3#2*1$.+#$.#$%*#'.3&/#-)338#
2.4.2 Sinewave)maker)
!"#.+/*+#$.#>*"*+)$*#'&"*-)2*'#-&$%#)#>&2*"#(*+&./#MTQ,#)4(3&$0/*#MaQ,#)"/#/&+*1$&."#MnQ,#)$#$%*#@.0"/)+?,#
$%*#2)30*'#6.+#η,#P,#)"/#Q#)+*#)''&>"*/#)'#6.33.-'#
? + a bcd eT 9 f'g 9 f)h 8#
MTcQ#
. + i jkb l ?#
MThQ#
/ + i bcd l ?#
MTjQ#
-%*+*#
i + e
f0 e + 3m
n0 f'+jkb l f0 f)+bcd l f#
MTkQ#
k,#$%*#-)2*#"04@*+,#&'#1)3103)$*/#0'&">#i1H)+$^'#NkP#)((+.;&4)$*#'.30$&."#6.+#$%*#/&'(*+'&."#+*3)$&."I#
f + e1
2jkop e1=
2#
MTlQ#
:%&'#&4(3*4*"$)$&."#/.*'#".$#)33.-#$+*)$4*"$#.6#-)2*'#)((+.)1%&">#$%*#@.0"/)+?#)"/#&$#1)"#@*#0'*/#
."3?#&6#"."3&"*)+&$?#&'#&"'&>"&6&1)"$8##
2.4.3 Sponge)layer)
K(.">*#3)?*+'#&"#7*3*+&'#)+*#&4(3*4*"$*/#6.33.-&">#NZP,#@?#403$&(3?&">#$%*#2)30*'#.6#η,#P,#)"/#Q#@?#)#
/)4(&">#1.*66&1&*"$#/*6&"*/#@?#
q g0 h + 7 g + ;
3; # jkb mrs9 t g0 h
rs
#
MFfQ#
-%*+*#Ls#&'#$%*#-&/$%#.6#$%*#'(.">*#3)?*+,#)"/#DMx,yQ#&'#$%*#".+4)3#/&'$)"1*#$.#$%*#)@'.+@&">#@.0"/)+?8#
7.*66&1&*"$#/*6&"*#@?#i=8#MFfQ#&'#."3?#)((3&*/#$.#1*33'#-%&1%#)+*#3.1)$*/#&"'&/*#$%*#'(.">*#3)?*+8##
2.5 Wave)breaking)
9)2*#@+*)H&">#&'#".$#&4(3*4*"$*/#&"#7*3*+&'#-&$%#)#/&+*1$#$+*)$4*"$8#Y.-*2*+,#.0+#*;(*+&4*"$'#'%.-#
$%)$#$%*#"04*+&1)3#/&''&()$&."#.6#$%*#'1%*4*#1)0'*/#(+&4)+&3?#@?#0'&">#$%*#4&"4./#3&4&$*+#&4&$)$*'#
(%?'&1)3#/&''&()$&."#&"$+./01*/#@?#-)2*#@+*)H&">8#]'#/&'10''*/#@*6.+*,#$%*#'.32*+#$.#'&403)$*#$%*#+0"G0(#
."#$%*#@*)1%#)0$.4)$&1)33?#'-&$1%*'#$.#$%*#RSK9#*=0)$&."'8#
2.6 Friction)
V+&1$&."#$*+4'#&"#i=8#MOQ,#-%&1%#)+*#()+$&103)+3?#'&>"&6&1)"$#&"#+0"G0(#4*)'0+*4*"$',#)+*#>&2*"#@?I#
7
6
7
1
+ 7 .
/
.1# /1
-1#
MFOQ#
-%*+*#f#&'#$%*#6+&1$&."#1.*66&1&*"$8#!"#7*3*+&',#$%*#0'*+#1)"#*&$%*+#.($#$.#'*$#$%*#6+&1$&."#1.*66&1&*"$#)'#)#
1."'$)"$#2)30*#.+#0'*#$%*#X)""&">^'#*=0)$&."#$.#/*+&2*#&$#3.1)33?#)'I#
7 + 2u1
-6>
#
MFTQ#
-%*+*#"#&'#$%*#X)""&">^'#+.0>%"*''#1.*66&1&*"$8#:.#)2.&/#/&2&'&."#@?#2*+?#'4)33#2)30*'#.6#h#.+#5*+.,#$%*#
')4*#$*1%"&=0*#)'#&"#MOZQ#&'#0'*/8#
2.7 Solitary)waves)
]#'.3&$)+?#-)2*#(+.()>)$*'#."#)#%.+&5."$)3#@.$$.4#)$#)#1."'$)"$#1*3*+&$?#)"/#-&$%.0$#1%)">*#&"#&$'#
'%)(*8#<.0''&"*'=#*=0)$&."'#(*+4&$#'01%#)#-)2*#-&$%#'$)$&.")+?#'%)(*#(+.2&/*/#$%)$#"."G3&"*)+#)"/#
/&'(*+'&2*#*66*1$'#)+*#&"#@)3)"1*8#7*3*+&'#1)"#$)H*#)#'*$#.6#'.3&$)+?#-)2*'#&"#&$'#&"(0$#6&3*,#-&$%#>&2*"#-)2*#
%*&>%$',#/&+*1$&."'#)"/#1+*'$#3.1)$&."'8#:%*'*#-)2*'#1)"#@*#)3'.#)//*/#3)$*+#2&)#$%*#BD!#)"/#-%&3*#$%*#
4./*3#&'#+0""&">8#9*#'0(*+(.'*#)#'.3&$)+?#-)2*#$.#$%*#'.30$&."#/.4)&"#@?#)//&">#η,#P,#)"/#Q#&"#*)1%#1*33#
@?#2)30*'#>&2*"#@?I#
?s+ vsbwjp fsg 9 gxjkb l # h 9 hxbcd l
1
#
MFFQ#
.
s
/s
+ is?s
jkb l
bcd l#
MFZQ#
-%*+*#Hs#&'#$%*#'.3&$)+?#-)2*#%*&>%$,#n#&'#&$'#/&+*1$&.",#)"/#Mxf,#yfQ#&'#$%*#&"&$&)3#1+*'$#3.1)$&."8#k'#)"/#cs#)+*#
-)2*"04@*+#)"/#1*3*+&$?#.6#$%*#'.3&$)+?#-)2*#>&2*"#@?I#
fs+< vs
W=>#
MFcQ#
is+ 2 vs# = #
MFhQ#
D'&">#$%*#)@'.30$*#2)30*#.6#Hs#&"#i=8#MFcQ#)33.-'#&"'*+$&."#.6#)#/*(+*''&."#-)2*#M&8*8#'&">3*#$+.0>%Q#&"#$%*#
'.6$-)+*#-&$%#"*>)$&2*#-)2*#%*&>%$'8#Y.-*2*+,#'01%#)#-)2*#&'#".$#*;(*1$*/#$.#4)&"$)&"#&$'#'%)(*8##
K @2607.$"(L2/5="40.0%24(
:%*#6)'$#1.4(0$)$&.")3#'(**/#.6#7*3*+&'#1.4*'#6+.4#&$'#BCD#&4(3*4*"$)$&."#6.+#'.32&">#$%*#>.2*+"&">#
*=0)$&."'#)"/#2&'0)3&5&">#$%*#+*'03$'8#9*#/&'$+&@0$*#7*3*+&'#&"#&$'#1.4(&3*/#2*+'&."#)3.">#-&$%#&$'#.(*"G
'.0+1*#1./*'#0"/*+#BRD#B*"*+)3#C0@3&1#S&1*"'*#)'#(0@3&'%*/#@?#$%*#V+**#K.6$-)+*#V.0"/)$&."8#9*#
+*1.44*"/#0'*+'#$.#-.+H#-&$%#$%*#1.4(&3*/#2*+'&."#)'#401%#)'#(.''&@3*,#)"/#$+?#$.#+*1.4(&3*#$%*#
'.6$-)+*#."3?#&6#"*1*'')+?8#!$#40'$#@*#)//*/#$%)$#'%)/*+#6&3*'#)+*#1.4(&3*/#)$#+0"$&4*,#$%*+*6.+*#1)+*603#
1%)">*'#&"#$%.'*#6&3*'#/.#".$#+*=0&+*#+*1.4(&3)$&."#.6#$%*#'.6$-)+*8#V.+#&"'$)"1*,#()+$&)33?#+*63*1$&2*#
@.0"/)+?#1."/&$&."#1)"#@*#&"$+./01*/#@?#1%)">&">#$%*#1./*#6.+#'(.">*#3)?*+#@.0"/)+?#1."/&$&."#&"#
[1.4(0$*8%3'3\#-&$%.0$#)"?#+*1.4(&3)$&."8##
3.1 Source)files)
7*3*+&'#&'#-+&$$*"#&"#7aa#)"/#X&1+.'.6$^'#'%)/*+#3)">0)>*,#YSKS,#)"/#&$#&'#1./*/#."#$.(#.6#)"#*)+3&*+#.(*"#
'.0+1*#/*4.#(+.U*1$#6.+#4./*3&">#'%)33.-#-)$*+#63.-'#MK$*(%*"#:%.4('.",#(*+'.")3#1.440"&1)$&."Q8##
V&>8#O#'%.-'#$%*#'&4(3&6&*/#/&)>+)4#.6#'.6$-)+*#63.-#&"#7*3*+&'8#:%*#6&3*#")4*/#[4)&"81((\#$)H*'#1)+*#.6#
$%*#63.-#&"130/&">#+*)/&">#$%*#&"(0$#6&3*#)"/#1)33&">#)((+.(+&)$*#60"1$&."'#&"#$%*#3..(8#:%*#@03H#.6#$%*#
1./*#&'#6.0"/#&"#[*">&"*81((\8#:%&'#6&3*#1."$)&"'#)33#$%*#1./*'#$%)$#/+&2*#$%*#BCD#)"/#1)33'#)((+.(+&)$*#
'%)/*+'#6.+#'&403)$&."#)"/#>+)(%&1'#+*"/*+&">8#!$#)3'.#-+&$*'#/)$)#."#/&'H#)$#)"#.($&.")3#0'*+#/*6&"*/#
6+*=0*"1?8#K&403)$&."#'%)/*+'#)+*#6.0"/#&"#[1.4(0$*8%3'3\#)"/#>+)(%&1'#'%)/*+'#)+*#&"#[>+)(%&1'86;\8#
V&")33?#$%*#BD!#&'#4)")>*/#@?#[>0&o4)")>*+81((\8#
#
J%MN(FN(@%=3#%6%"1(6#27/8.$0(26(!"#"$%&N(
3.2 Input)and)output)files))
:%*#&"(0$#'*$0(#6.+#)#'(*1&6&1#*;(*+&4*"$#1)"#@*#>&2*"#$.#7*3*+&'#)'#)"#pXS#Mip$*"'&@3*#X)+H0(#
S)">0)>*Q#6&3*8#pXS#6&3*'#1)"#@*#*)'&3?#*/&$*/#@?#)"?#'$)"/)+/#$*;$#*/&$.+8#:%*?#)+*#*"1./*/#-&$%#)#'*$#.6#
3)@*3'#M$)>'Q#&"#)#6.+4)$#-%&1%#&'#+*)/)@3*#6.+#@.$%#%04)"#)"/#4)1%&"*8#!"#.+/*+#$.#/&'$&">0&'%#7*3*+&'#
pXS#&"(0$#6&3*'#6+.4#>*"*+&1#pXS#6&3*',#-*#0'*#7XS#)'#$%*#6.+4)$#.6#$%*'*#6&3*'8#]#')4(3*#7XS#6&3*#&'#
'%.-"#&"#V&>8#T8#!"#$%*#&"(0$#6&3*,#$%*#4./*3#$?(*#1)"#@*#1%.'*"#@*$-**"#<.0''&"*'=#)"/#RSK98#:%*#
6+&1$&."#*=0)$&."'#1)"#@*#)3'.#'*3*1$*/#$.#@*#X)""&">#.+#q0)/+)$&18#:%*#6&*3/#/&4*"'&."#)"/#>+&/#'&5*'#
40'$#@*#)3'.#*"$*+*/#&"#$%*#&"(0$#6&3*8#:%*#@)$%?4*$+?#M$.(.>+)(%?Q#.6#$%*#/.4)&"#1)"#@*#>&2*"#)'#$%*#
+*3)$&2*#.+#)@'.30$*#()$%#$.#)#6.+4)$$*/#]K7!!#6&3*8#:%*#&"&$&)3#1."/&$&."#1)"#@*#)3'.#'*$#@?#*"$*+&">#$%*#
()$%#$.#)#6.+4)$$*/#]K7!!#6&3*#-%&1%#1."$)&"'#$%*#&"&$&)3#2)30*'#6.+#w,#P,#)"/#Q8#X.+*.2*+,#'*2*+)3#'.3&$)+?#
-)2*'#1)"#@*#(3)1*/#)'#$%*#&"&$&)3#1."/&$&."'8#:%*#@.0"/)+?#$?(*'#40'$#@*#1%.'*"#6.+#*)1%#@.0"/)+?#
)4.">#[K.3&/\,#[K(.">*\,#)"/#[K&"*9)2*\8#X.'$#.6#$%*#2)30*'#>&2*"#&"#$%*#&"(0$#6&3*#$.#$%*#'.6$-)+*#1)"#
@*#3)$*+#)3$*+*/#2&)#BD!8#
V&")33?#$%*#0'*+#1)"#.($#$.#')2*#$%*#w,#P,#)"/#Q#/)$)#(*+&./&1)33?#."#$%*#/&'H#)$#&$'#)''.1&)$*/#1.'$8#:.#
4&"&4&5*#$%*#'3.-G/.-",#$%*#0'*+#1)"#1%..'*#$.#."3?#')2*#/)$)#."#'(*1&6&1#>+&/#(.&"$'#M>)0>*'Q#)"/_.+#
'*2*+)3#+)">*'8#:%*#.0$(0$#6&3*'#)+*#-+&$$*"#&"#$.#)#6.+4)$$*/#]K7!!#6&3*8#!"#$%*#"*;$#2*+'&."#.6#7*3*+&',#-*#
-&33#)//#$%*#.($&."#$.#-+&$*#.0$(0$#6&3*'#&"#)#4.+*#*66&1&*"$#6.+4)$,#'01%#)'#R*$7EV8##
<?xml version="1.0"?>
<Experiment>
<name>Sample Experiment</name>
<!-- Settings for Model -->
<model type = "BSNQ">
<parameters epsilon = 5e-12 correctionStepsNum = 2 timestep = 0.005></parameters>
<friction type = "Manning" coef = 0.0> </friction>
</model>
<!-- Settings for Solution field -->
<fieldDimensions width = 30 length = 30 stillWaterElevation = 0></fieldDimensions>
<gridSize nx = 601 ny = 601></gridSize>
<bathymetryFilePath> \resources\bathy.cbf </bathymetryFilePath>
<!-- Settings for Initial Condition -->
<hotStartFilePath> N/A </hotStartFilePath>
<solitaryWave H = 0.05 theta = 0 xc = 5 yc = 15></solitaryWave>
<solitaryWave H = 0.05 theta = -45 xc = 5 yc = 25></solitaryWave>
<!-- Settings for Boundaries-->
<westBoundary type = "SineWave" seaLevel = 0 widthNum = 2>
<sineWave amplitude = .01 period = 2 theta = 0></sineWave>
</westBoundary>
<eastBoundary type = "Sponge" seaLevel = 0 widthNum = 20></eastBoundary>
<southBoundary type = "Solid" seaLevel = 0 widthNum = 2></southBoundary>
<northBoundary type = "Solid" seaLevel = 0 widthNum = 2></northBoundary>
<!-- Settings for Logging Data-->
<logData doLog = true logStep = 20>
<logPath>C:\conical_island\</logPath>
<range filename = "island">
<bottomLeft x = 228 y = 228></bottomLeft>
<topRight x = 374 y = 374></topRight>
</range>
<gauges filename = "gauges">229,302,249,302,353,302,354,302,301,249</gauges>
</logData>
</Experiment>
J%MN(HN(@.=3#"(!IC(%4350(6%#"
3.3 Implementation)
K%)/*+#3)">0)>*'#'01%#)'#YSKS#)+*#/*'&>"*/#)+.0"/#$%*#&/*)#$%)$#BCD'#>*"*+)$*#(&1$0+*'#NlP8#:%*+*6.+*,#
&"#.+/*+#$.#'.32*#)#1.4(0$)$&.")3#(+.@3*4#-&$%#'%)/*+',#$%*#(+.@3*4#40'$#@*#+*6.+403)$*/#&"#$*+4'#.6#
>+)(%&1'#(+&4&$&2*'#)"/#$%*#/)$)#40'$#@*#'$.+*/#-&$%&"#$*;$0+*'8#TE#$*;$0+*'#)+*#4)$+&;G3&H*#/)$)#
'$+01$0+*'#-%&1%#)+*#-*33G'0&$*/#6.+#.0+#TE#/.4)&"8#i)1%#1*33#&"#)#$*;$0+*,#)#$*;*3,#4)?#%)2*#'*2*+)3#
63.)$&">#(.&"$#2)+&)@3*'#&"#.+/*+#$.#/*'1+&@*#$+)&$'#.6#$%*#$*;*38##!"#7*3*+&',#-*#4.'$3?#0'*#63.)$Z#$?(*#
$*;*3'#-%&1%#&"130/*#$%+**#'&">3*#(+*1&'&."#63.)$&">#(.&"$#2)+&)@3*#6.+#$*;*3#1.3.+,#")4*3?#[+\,#[>\,#[@\,#
)"/#."*#6.+#$%*#)3(%)#1%)""*3,#")4*/#[)\8#9*#0'*#$%*'*#2)+&)@3*'#$.#'$.+*#63.-#()+)4*$*+'8#V.+#
&"'$)"1*,#)#TEG$*;$0+*#.6#'&5*#";#;#"?#&'#/*6&"*/#$.#'$.+*#$%*#3)$*'$#'$)$*#.6#$%*#63.-8#!"#*)1%#
1.4(0$)$&.")3#1*33,#-,#C,#)"/#q#)+*#'$.+*/#&"#[+\,#[>\,#)"/#[@\,#-%&3*#[)\#&'#+*4)&"*/#0"0'*/8#i)1%#'$*(#
.6#"04*+&1)3#'1%*4*#/*'1+&@*/#*)+3&*+#&'#(*+6.+4*/#@?#()''&">#'*2*+)3#$*;$0+*'#'01%#)'#63.-#'$)$*,#
@)$%?4*$+?,#>+)/&*"$',#*$18#)'#+*'.0+1*'#$.#)#'%)/*+#)"/#>*$$&">#."*#.0$(0$,#.+#)'#1)33*/#&"#>+)(%&1'#
$*+4&".3.>?,#+*"/*+#$)+>*$#$*;$0+*8#]#')4(3*#'%)/*+#$.#)((3?#'.3&/#-)33#@.0"/)+?#1."/&$&."#&'#'%.-"#&"#
V&>8#F8#
float4 WestBoundarySolid(VS_OUTPUT input) : SV_TARGET
{
const float3 in_state_real = txState.Load(int3(4 - input.tex_idx.x,input.tex_idx.y,0)).rgb;
return float4(in_state_real.r, -in_state_real.g, in_state_real.b, 0);
}
J%MN(KN(@.=3#"(&8.1"$(/21"(78%/8(8.41#"&(.(&2#%1(7.##(D2541.$;(/241%0%24N(
]6$*+#(*+6.+4&">#)#0'*+G/*6&"*/#"04@*+#.6#1.4(0$)$&.")3#$&4*#'$*(',#$%*#63.-#'$)$*#)"/#$*++)&"#)+*#
()''*/#$.#$%*#>+)(%&1'#+*"/*+*+8#K*2*+)3#'%)/*+'#)+*#)((3&*/#&"#.+/*+#$.#2&'0)3&5*#$%*#+*'03$'#-&$%#
.($&."'#6.+#(%.$.+*)3&'$&1#+*"/*+&">#.+#2)30*#1.3.+G4)((&">8##
:%*#4.'$#1%)33*">&">#()+$#.6#$%*#&4(3*4*"$)$&."#&'#'.32&">#$%*#$+&/&)>.")3#4)$+&;#'?'$*4'#-&$%&"#$%*#
"04*+&1)3#'1%*4*8#:%*#13)''&1#)3>.+&$%4#$.#'.32*#'01%#)#'?'$*4#&'#$%*#:%.4)'#)3>.+&$%4#1."'&'$&">#.6#)#
6.+-)+/#*3&4&")$&."#)"/#@)1H-)+/#'0@'$&$0$&."8#Y.-*2*+#$%&'#)3>.+&$%4#&'#&"%*+*"$3?#'*+&)38#i4(3.?&">#
'01%#)"#)3>.+&$%4#-&33#>*"*+)33?#"**/#1.(?&">#/)$)#6+.4#BCD#$.#$%*#4)&"#4*4.+?,#+0""&">#$%*#'*+&)3#
'.32*+#)"/#1.(?&">#$%*#+*'03$'#@)1H#."#$%*#BCD8#K01%#)#(+.1*''#-&33#'&>"&6&1)"$3?#&"1+*)'*#$%*#+0""&">#
$&4*#.6#$%*#'.6$-)+*#)"/#-&33#@*1.4*#$%*#@.$$3*G"*1H#6.+#3)+>*#/.4)&"'8#!"#7*3*+&',#'.32&">#$%*#
$+&/&)>.")3#'?'$*4#&'#)11.4(3&'%*/#0'&">#$%*#1?13&1#+*/01$&."#M7LQ#)3>.+&$%4#NOfP8#7L#)3'.#1."'&'$'#.6#$-.#
(%)'*'I#6.+-)+/#+*/01$&."#)"/#@)1H-)+/#'0@'$&$0$&."8#!"#$%*#6.+-)+/#+*/01$&."#(%)'*,#$%*#'?'$*4#&'#
'011*''&2*3?#+*/01*/#$.#)#'4)33*+#'?'$*4#-&$%#%)36#$%*#"04@*+#.6#0"H".-"',#0"$&3#)#'?'$*4#.6#T#
0"H".-"'#&'#)1%&*2*/#-%&1%#1)"#@*#'.32*/#$+&2&)33?8#!"#$%*#@)1H-)+/#'0@'$&$0$&."#(%)'*,#$%*#.$%*+#%)36#.6#
$%*#0"H".-"'#)+*#6.0"/#@?#'0@'$&$0$&">#$%*#(+*2&.0'3?#6.0"/#2)30*'#&"$.#$%*#*=0)$&."'8#:%&'#(+.1*''#&'#
&330'$+)$*/#&"#V&>8#Z#
#
J%MN(ON(!;/#%/($"15/0%24(.#M2$%08=(.41(%0&(%=3#"="40.0%24(24(*+,N((
3.4 Compilation)
7*3*+&'#&'#-+&$$*"#)"/#1)"#@*#1.4(&3*/#&"#X&1+.'.6$#W&'0)3#7aa#Tffk#i;(+*''#i/&$&."8#:%*#'.30$&."#6&3*#
")4*/#[7*3*+&'8'3"\#&'#&"130/*/#&"#$%*#+*/&'$+&@0$&."'8#V.+#'011*''603#1.4(&3)$&."#$%*#3)$*'$#E&+*1$p#KEg#
40'$#@*#1.++*1$3?#&"'$)33*/8#7*3*+&'#1."'&'$'#.6#$%+**#.(*"#'.0+1*#(+.U*1$'I#)#-+)((*+#)+.0"/#.(*+)$&">#
'?'$*4#60"1$&."'#&"130/&">#E&+*1$FE,#")4*/#[7.*+1&\,#)#BD!#3&@+)+?#")4*/#[B0&1%)"\,#)"/#$%*#4)&"#
(+.U*1$#")4*/#[7*3*+&'\8#:%*#(+.U*1$#7*3*+&'#0'*'#)"#.(*"#'.0+1*#pXS#()+'*+#1)33*/#[:&"?pXS\8#:-.#
6.3/*+'#1)33*/#['%)/*+'\#)"/#[>+)(%&1'\#)+*#)3'.#&"130/*/#&"#$%*#+*/&'$+&@0$&."#5&(#6&3*8#:%*'*#6.3/*+'#
1."$)&"'#$%*#'%)/*+#1./*'#)"/#>+)(%&1'#$*;$0+*'#M1.3.+4)(',#6."$,#*$18Q#)"/#$%*?#40'$#@*#(3)1*/#
)((+.(+&)$*3?#&"#$%*#'.30$&."#6.3/*+#'01%#$%)$#$%*?#)+*#6.0"/#@?#$%*#1./*8#
3.5 Running)Celeris)
]'#4*"$&."*/#&"#$%*#(+*2&.0'#'*1$&."',#7*3*+&'#'$)+$'#@)'*/#."#)#7XS#&"(0$#6&3*J#%.-*2*+#$%*#0'*+#1)"#
1%)">*#4.'$#.6#$%*#'*$$&">'#6+.4#$%*#BD!#-%&3*#$%*#4./*3#&'#+0""&">8#7*3*+&'#1)"#@*#*)'&3?#3)0"1%*/#@?#
+0""&">#$%*#6&3*#")4*/#[7*3*+&'8*;*\8#]6$*+#3)0"1%,#$%*#'.6$-)+*#-&33#3..H#&"$.#$%*#6&3*#")4*/#
['*$$&">8&"&$\#$.#6&"/#$%*#)@'.30$*#()$%#$.#$%*#&"(0$#7XS#6&3*8#!6#'01%#)#()$%#&'#".$#(+.2&/*/#.+#$%*#()$%#&'#
&"2)3&/,#7*3*+&'#-&33#)'H#$%*#0'*+#$.#1%..'*#$%*#&"(0$#6&3*#6+.4#)#6&3*#@+.-'*+#-&"/.-8#
]6$*+#)#'011*''603#3)0"1%,#$%*#"04*+&1)3#*;(*+&4*"$#@*>&"'#&44*/&)$*3?#)"/#$%*#+*'03$'#)+*#2&'0)3&5*/#&"#
)#FE#*"2&+."4*"$#-&$%#)#4.2)@3*#1)4*+)8#D'&">#$%*#BD!,#$%*#0'*+#1)"#1%)">*#$%*#"04*+&1)3#)"/#
(%?'&1)3#()+)4*$*+'#.6#$%*#*;(*+&4*"$#'01%#)'#$%*#>+&/#'&5*',#6+&1$&."#1.*66&1&*"$,#@.0"/)+?#1."/&$&."',#
*$18#K.3&$)+?#-)2*'#1)"#@*#)3'.#'0(*+(.'*/#$.#$%*#6&*3/#-&$%#)#>&2*"#3.1)$&.",#%*&>%$,#)"/#/&+*1$&."8#
i;(*+&4*"$'#1)"#@*#()0'*/#.+#+*'*$8#:%*#BD!#.6#7*3*+&'#&'#@+&*63?#*;(3)&"*/#&"#)#2&/*.#)2)&3)@3*#)$#
%$$('I__?.0$08@*_(71"CDjC7+>8##
(
M)Q#
(
M@Q#
(
M1Q#
J%MN(PN(Q%&5.#%?.0%24&(26(.4("R3"$%="40(7%08(.($".#%&0%/(D.08;="0$;N(!"#"$%&(/.4(<%&5.#%?"(08"(&5$6./"&(%4(.($".#%&0%/(
=21"(7%08($"6#"/0%24&(.41($"6$./0%24&(S.T>(7%08(.(/2#2$=.3(24(08"(0"$$.%4(SDT(.41(7%08(.(/2#2$=.3(24(08"(7.0"$(
&5$6./"(S/TN(Q%1"2(%&(.<.%#.D#"(.0(8003&'UU;2505ND"U;B&V"+WDX;,N(
#
7*3*+&'#(+.2&/*'#2)+&.0'#2&'0)3&5)$&."#.($&."'8#:%*#-)$*+#'0+6)1*#1)"#@*#2&'0)3&5*/#&"#)#(%.$.+*)3&'$&1#
4./*,#-%*+*#+*63*1$&."#)"/#+*6+)1$&."#.6#+)?'#%&$$&">#$%*#-)$*+#'0+6)1*#)+*#1)3103)$*/#0'&">#$%*#V+*'"*3#
*=0)$&."',#.+#@?#)((3?&">#)#1.3.+4)(8#:%&'#1.3.+4)(#1)"#@*#'*$#$.#+*(+*'*"$#η,#u,#v,#.+#2*3.1&$?#
4)>"&$0/*#.6#$%*#63.-8#K*2*+)3#$*++)&"#$*;$0+*'#)+*#)3'.#)2)&3)@3*#$.#*"%)"1*#$%*#2&'0)3&5)$&."8#:%*#0'*+#
1)"#)((3?#)#1.3.+4)(#."#$%*#$*++)&"#)'#-*338#V&")33?#)#>+&/#-&$%#)#10'$.4#'1)3*#1)"#@*#3)&/#.2*+#$%*#
'0+6)1*'#$.#&4(+.2*#$%*#&330'$+)$&."#.6#$%*#'0+6)1*#*3*2)$&."8#V&>8#c#'%.-'#)#1.4@&")$&."#.6#$%*'*#
/&66*+*"$#.($&."'#6.+#2&'0)3&5)$&."#.6#)"#*;(*+&4*"$#-&$%#)#+*)3&'$&1#+*3&*6#)"/#'&"*-)2*'#."#."*#.6#$%*#
@.0"/)+&*'8#
O Y5="$%/.#(<.#%1.0%24&(
4.1 Run-up)on)a)planar)beach)
K.3&$)+?#-)2*#(+.()>)$&."#.2*+#)#(3)")+#@*)1%#&'#*;(*+&4*"$)33?#'$0/&*/#@?#K?".3)H&'#NOOP8#!"#$%*'*#
*;(*+&4*"$'#$%*#@*)1%#'3.(*#-)'#OIOl8kc#)"/#$*"'#.6#$+&)3'#-*+*#(*+6.+4*/#1.2*+&">#)#-&/*#+)">*#.6#
'.3&$)+?#-)2*#%*&>%$'8#:%&'#/)$)#'*$#&'#0'*/#6.+#"04*+&1)3#2)3&/)$&."#4)"?#$&4*'#@?#'*2*+)3#+*'*)+1%*+'#
NOTP,#NOFP8#9*#'&403)$*#$%*'*#*;(*+&4*"$'#-&$%#)#/.5*"#-)2*#%*&>%$'#&"#$%*#+)">*#.6#f8ffc#e#Y_/#e#f8c#
)"/#-*#1.4()+*#.0+#"04*+&1)3#4);&404#2*+$&1)3#+0"G0(#$.#$%*#*;(*+&4*"$)3#2)30*'8#:%*#1%.'*"#+)">*#
6.+#-)2*#%*&>%$#1.2*+'#@.$%#@+*)H&">#)"/#"."G@+*)H&">#-)2*'8#V.+#'&403)$&."'#-&$%#Y_/#e#f8fO#-*#0'*#
Δ;_%#d#f8fhTc#)"/#Δ$#M>_%Qf8c#d#f8ffjc#)"/#6.+#$%*#+*'$#.6#'&403)$&."'#-*#0'*#Δ;_/#d#f8Tc#)"/#Δ$#M>_/Qf8c#
d#f8fF8#:%*#-&/$%#.6#$%*#'&403)$&."#6&*3/#&'#H*($#1."'$)"$#)$#9_/#d#O#@0$#$%*#3*">$%#&'#1%.'*"#@*$-**"#
Off#e#S_/#e#Offf#4#'01%#$%)$#&$#)((+.(+&)$*3?#)11.44./)$*'#$%*#'.3&$)+?#-)2*8#:%*#@*)1%#&'#3.1)$*/#
13.'*#$.#$%*#*)'$#@.0"/)+?8#:%*#-*'$#@.0"/)+?#&'#)#'(.">*#3)?*+#)"/#$%*#$-.#.$%*+#@.0"/)+&*'#)+*#'.3&/#
-)33'8#V.33.-&">#S?"*$$#*$#)38#NOTP,#-*#>*"*+)$*/#$%+**#'*$'#.6#*;(*+&4*"$'#-&$%#/&66*+*"$#1."'$)"$#
=0)/+)$&1#@.$$.4#6+&1$&."#1.*66&1&*"$',#6#d#f8f,#f8fO,#)"/#f8ffO8#V&>8#h#1.4()+*'#$%*#"04*+&1)3#+*'03$'#
-&$%#*;(*+&4*"$)3#/)$),#-%*+*#4);&404#2*+$&1)3#+0"G0(#)"/#'.3&$)+?#-)2*#%*&>%$#)+*#'1)3*/#@?#$%*#
-)$*+#/*($%8#V.+#"."G@+*)H&">#'.3&$)+?#-)2*'#-&$%#Y_/#e#f8fO,#$%*#@.$$.4#6+&1$&."#/.*'#".$#)66*1$#$%*#
4);&404#+0"G0(,#)"/#$%*#+*'03$'#)>+**#=0&$*#-*33#-&$%#*;(*+&4*"$'8#V.+#3)+>*+#@+*)H&">#-)2*',#$%*#
"04*+&1)3#+*'03$'#6.+#/&66*+*"$#@.$$.4#6+&1$&."'#@*>&"#$.#/&2*+>*8#R.$*#$%)$#7*3*+&'#/.*'#".$#*4(3.?#)"#
*;(3&1&$#-)2*G@+*)H&">#4./*38#Y.-*2*+#$%*#4&"4./#3&4&$*+#0'*/#&"#$%*#"04*+&1)3#'1%*4*,#&"$+./01*'#
'066&1&*"$#"04*+&1)3#/&''&()$&."#$.#+*'*4@3*#-)2*#@+*)H&">8#:%*#)1%&*2*/#+*'03$'#)+*#1."'&'$*"$#-&$%#
+*'03$'#.6#S?"*$$#*$#)38#NOTP8#
#
J%MN(ZN(!2=3.$%&24(26(45="$%/.#(424-1%="4&%24.#(=.R%=5=($54-53(26(&2#%0.$;(7.<"&(24(.(F'F[N\P(D"./8(<"$&5&(
424-1%="4&%24.#(7.<"(8"%M80(7%08("R3"$%="40.#(1.0.NOOPN(
K?".3)H&'#NOZP#)3'.#(+.2&/*'#'")('%.$'#.6#$%*#-)$*+#'0+6)1*#*3*2)$&."#0'&">#(%.$.>+)(%'#.6#$%*#-)2*'#
/0+&">#$%*#+0"G0(#)"/#+0"G/.-"8#`"*#()+$&103)+#'*$#.6#$%*'*#'")('%.$'#-&$%#Y_/ d#f8Tk#&'#0'*/#@?#
'*2*+)3#+*'*)+1%*'#$.#*2)30)$*#$%*&+#4./*3'8#:%*#+*'03$'#6.+#$%&'#"04*+&1)3#*;(*+&4*"$#&"#7*3*+&'#&'#
1.4()+*/#-&$%#*;(*+&4*"$)3#/)$)#&"#V&>8#j8#V.33.-&">#NOFP#-*#0'*/#)#6+&1$&."#6)1$.+#.6#6#d#f8ffjc#&"#$%&'#
'&403)$&."8#:%*#1.4()+&'."'#&"/&1)$*#$%*#)@&3&$?#.6#7*3*+&'#$.#)110+)$*3?#(+*/&1$#$%*#+0"G0(#)"/#+0"G
/.-"#(+.1*''#6.+#)#@+*)H&">#-)2*8##
#
J%MN(VN(9$".B%4M(&2#%0.$;(7.<"($54-53(.41($541274(24(.(3#.4.$(D"./8(.0(tS(gUhT]NP(^(S.T(FP>(SDT(H]>(S/T(HP>(S1T(OPN(
A8"(&2#%1(#%4"($"3$"&"40&(08"(45="$%/.#($"&5#0&(.41(08"(120&($"3$"&"40(08"("R3"$%="40.#(1.0.(26(@;42#.B%&(NOZP(
4.2 Wave)focusing)on)a)semicircular)shoal)
9*#*;$*"/#.0+#2)3&/)$&."#$.#TGE#(+.@3*4'#@?#6&+'$3?#'&403)$&">#$%*#*;(*+&4*"$'#.6#9%)3&"#NOcP8#Y*#
'$0/&*/#$%*#"."G3&"*)+#+*6+)1$&."A/&66+)1$&."#.6#+*>03)+#-)2*'#(+.()>)$&">#.2*+#)#'*4&1&+103)+#'%.)3#&"#)#
-)2*#$)"H#-%&1%#-)'#Tc8h#4#3.">#)"/#h8flh#4#-&/*8#:%*#-)$*+#/*($%#&"#$%*#$)"H#-)'#>+)/0)33?#
/*1+*)'*/#6+.4#f8ZcjT#4#$.#f8OcTZ#48#:%*#@)$%?4*$+?#1)"#@*#*;(+*''*/#@?#
4 +
,8888888888888888888888888888888888888888888888888888888888888888888, y g z ;,^@{ 9 G
;,^@{ 9 G 9 g 3V 8888888888888;,^@{ 9 G y g z ;|^3X 9 G
,^<,W|888888888888888888888888888888888888888;|^3X 9 G y g8888888888888888888888888
#
MFjQ#
-%*+*#GMyQ#d#NyMh8flh#G#yQPO_T,#f#r#y#r#h8flh8#Y)+4."&1#)")3?'&'#-)'#(*+6.+4*/#."#'0+6)1*#*3*2)$&."#$&4*#
'*+&*'#)3.">#$%*#$)"H#1*"$*+3&"*#$.#.@$)&"#$%*#)4(3&$0/*#.6#6+*=0*"1?#1.4(."*"$'8#:%*#9%)3&"#NOcP#
*;(*+&4*"$'#%)2*#@*1.4*#."*#.6#$%*#'$)"/)+/#@*"1%4)+H'#6.+#<.0''&"*'=#-)2*#4./*3',#)"/#)+*#0'*/#
6.+#4./*3#2)3&/)$&."#@?#'*2*+)3#)0$%.+'#&"#(+*2&.0'#'$0/&*'#NZP,#NOhPANOkP8#9*#'$0/?#$%*#1)'*#-&$%#
&"1.4&">#-)2*#)4(3&$0/*#.6#)#d#f8ffjc#4#)"/#(*+&./#.6#:#d#T#'8#
9*#'&403)$*#$%&'#*;(*+&4*"$#-&$%#7*3*+&'#&"#Fc#4#;#h8flh#4,#&4(.'&">#)#'&"*-)2*#@.0"/)+?#1."/&$&."#."#
$%*#-*'$#@.0"/)+?,#)"/#)#c#4#'(.">*#3)?*+#."#$%*#*)'$#@.0"/)+?8#:%*#".+$%#)"/#'.0$%#@.0"/)+&*'#)+*#
'.3&/#-)33'8#:%*#/.4)&"#&'#/&'1+*$&5*/#@?#Tfff#;#hc#1*33'#-&$%#)#$&4*#'$*(#.6#f8ffO#'8#`"#*)1%#1*33#)3.">#
$%*#1*"$*+3&"*#.6#$%*#$)"H,#$%*#)4(3&$0/*'#.6#$%*#6&+'$,#'*1."/,#)"/#$%&+/#%)+4."&1'#)+*#1)3103)$*/#@)'*/#
."#VV:#)")3?'*'#)"/#$%*"#$%*?#)+*#1.4()+*/#$.#$%.'*#.6#9%)3&"^'#*;(*+&4*"$)3#/)$)#&"#V&>8#k8###
#
J%MN(\N(_.<"(.=3#%051"(8.$=24%/&(.#24M(08"(/"40"$#%4"(62$(a(^(]N]]VP(=(.41(T(^(H(&N(@2#%1(#%4"&(.$"(45="$%/.#(
$"&5#0&(6$2=(!"#"$%&>(&;=D2#&(.$"("R3"$%="40.#(1.0.(6$2=(_8.#%4(NOcPN(
]#'")('%.$#.6#-)$*+#*3*2)$&."#&'#'%.-"#&"#V&>8#l8#:%*#+*>03)+#'&"*-)2*'#1.4&">#6+.4#$%*#@.0"/)+?#6.10'#
."#$%*#'*4&1&+103)+#'%.)3,#)"/#%&>%*+#%)+4."&1'#)((*)+#/0*#$.#$%*#"."G3&"*)+#*66*1$'8#:%*#6.10'&">#.6#
$%*#-)2*'#1)"#@*#13*)+3?#'**"#&"#V&>8#l8#:%*#2*+$&1)3#'1)3*#&'#*;)>>*+)$*/#@?#)#6)1$.+#.6#kf#&"#$%*#'.6$-)+*8#
#
J%MN([N(_.0"$(&5$6./"("#"<.0%24(62$(08"(/.&"(7%08(a(^(]N]]VP(=(.41(T(^(H(&(6$2=(_8.#%4(NOcP("R3"$%="40&N(
4.3 Solitary)wave)run-up)on)a)conical)island)
]'#$%*#6&")3#2)3&/)$&."#$*'$,#-*#+*(+./01*#$%*#*;(*+&4*"$'#.6#<+&>>'#*$#)38#NOlP#6.+#'.3&$)+?#-)2*#
&"$*+)1$&."#)+.0"/#)#1."&1)3#&'3)"/J#)#$*'$#1)'*#6+*=0*"$3?#0'*/#$.#2)3&/)$*#"04*+&1)3#4./*3'#NOTP,#NOFP,#
NTfP,#NTOP8#:%*#*;(*+&4*"$)3#'*$0(#&'#'%.-"#&"#V&>8#Of8#]#1&+103)+#&'3)"/#-&$%#j8T#4#@)'*#/&)4*$*+#)"/#s#
'&/*#'3.(*#-)'#3.1)$*/#&"#)#Ff#4#;#Tc#4#-)2*#$)"H#-&$%#f8FT#4#/*($%8#:%+**#1)'*'#-&$%#$)+>*$#+*3)$&2*#
-)2*#%*&>%$'#.6#H_ddf8fc,#f8Of,#)"/#f8Tf#-*+*#'&403)$*/#)"/#$%*#-)2*#4);&404#+0"G0(#."#$%*#&'3)"/#
)"/#'0+6)1*#*3*2)$&."#$&4*#'*+&*'#."#'*2*+)3#>)0>*'#-*+*#+*1.+/*/8#
9*#'&403)$*#$%*#1."&1)3#&'3)"/#*;(*+&4*"$'#&"#)#Ff#4#;#Ff#4#"04*+&1)3#/.4)&"#-&$%#$%*#1."&1)3#&'3)"/#&"#
$%*#1*"$*+#)"/#)#'.3&$."#(3)1*/#)'#)"#&"&$&)3#1."/&$&."#"*)+#$%*#-*'$#@.0"/)+?8#K(.">*#3)?*+'#)+*#
&4(.'*/#."#$%*#@.0"/)+&*'#()+)33*3#$.#$%*#'.3&$.",#)"/#'.3&/#-)33'#."#$%*#$-.#.$%*+#@.0"/)+&*'8#:%*#
/.4)&"#&'#/&'1+*$&5*/#@?#hfO;hfO#1*33'#-&$%#)#1."'$)"$#$&4*#'$*(#.6#f8ffc#'8#<.$$.4#6+&1$&."#&'#"*>3*1$*/#
&"#$%*'*#'&403)$&."'8#:%*#$*'$#1)'*'#)+*#(*+6.+4*/#-&$%#+*3)$&2*#-)2*#%*&>%$'#.6#H_ddf8fZ,#f8fl,#)"/#
f8Ok#-%&1%#)+*#'3&>%$3?#'4)33*+#$%)"#$%*#$)+>*$#-)2*#%*&>%$',#@0$#13.'*+#$.#$%.'*#.@'*+2*/#/.-"'$+*)4#
.6#$%*#-)2*#4)H*+8#L*/01*/#-)2*#%*&>%$'#)+*#)3'.#0'*/#@?#NOTP,#NOFP,#)"/#NTOP8#
#
J%MN(F]N(`R3"$%="40.#(&"053(26(08"(/24%/.#(%&#.41N(A8"(M.5M"(#2/.0%24&(.$"(&8274(D;(120&(.41(08"(7.<"(
.33$2./8"&(08"(%&#.41(6$2=(08"(#"60N((
B)0>*#th#)"/#tl#)+*#3.1)$*/#&"#6+."$#.6#$%*#&'3)"/,#-%&3*#>)0>*#tOh#&'#."#$%*#'&/*,#)"/#>)0>*#tTT#&'#
@*%&"/#$%*#&'3)"/#MV&>8#OOQ8#:%*#"04*+&1)3#'0+6)1*#*3*2)$&."#1.4()+*/#$.#$%*#*;(*+&4*"$)3#+*'03$'#)+*#
'%.-"#&"#V&>8#OO#$.#V&>8#OF8#:%*#3*)/&">#-)2*#%*&>%$#)"/#&$'#'%)(*#&'#(+*/&1$*/#2*+?#-*33#&"#)33#1)'*'8#:%*#
&"&$&)3#/+)-G/.-"#&'#)3'.#(+*/&1$*/#=0&$*#-*33#6.+#$-.#1)'*'#-&$%#3)+>*+#-)2*#%*&>%$'8#Y.-*2*+#$%*#/+)-G
/.-"#&'#0"/*+*'$&4)$*/#6.+#$%*#1)'*#-&$%#$%*#'4)33*'$#-)2*#%*&>%$8#:%&'#/*2&)$&."#&'#1."'&'$*"$#-&$%#
"04*+&1)3#+*'03$'#.6#$%*#(+*2&.0'3?#1&$*/#+*6*+*"1*'8##
#
J%MN(FFN(`R3"$%="40.#(Sa(aT(.41(45="$%/.#(SaT(0%="(&"$%"&(62$(08"(%40"$./0%24(26(.(&2#%0.$;(7.<"(7%08(bU1^]N]O(24(.(
/24%/.#(%&#.41>(.0(M.5M"&(cZ>(c[>(cFZ>(.41(cHH(S.-1T(
#
J%MN(FHN(`R3"$%="40.#(Sa(aT(.41(45="$%/.#(SaT(0%="(&"$%"&(62$(08"(%40"$./0%24(26(.(&2#%0.$;(7.<"(7%08(bU1^]N][(24(.(
/24%/.#(%&#.41>(.0(M.5M"&(cZ>(c[>(cFZ>(.41(cHH(S.-1T(
#
#
J%MN(FKN(`R3"$%="40.#(Sa(aT(.41(45="$%/.#(SaT(0%="(&"$%"&(62$(08"(%40"$./0%24(26(.(&2#%0.$;(7.<"(7%08(bU1^]NF\(24(.(
/24%/.#(%&#.41>(.0(M.5M"&(cZ>(c[>(cFZ>(.41(cHH(S.-1T(
K")('%.$'#.6#$%*#*;(*+&4*"$#6.+#$%*#1)'*#-&$%#H_ddf8Ok#)+*#'%.-"#&"#V&>8#OZ8#:%*#4.4*"$#.6#4);&404#
+0"G0(#."#$%*#6+."$#6)1*#.6#$%*#&'3)"/#&'#'%.-"#&"#V&>8#OZ)8#:%*#$&4*#-%*"#$%*#-+)((&">#-)2*'#1.33&/*#
@*%&"/#$%*#&'3)"/#&'#1)($0+*/#&"#V&>8#OZ@8#!"#$%*'*#$-.#6&>0+*',#$%*#-)$*+#'0+6)1*#&'#+*"/*+*/#@?#)#
1.3.+4)(#+*(+*'*"$&">#$%*#3)$*+)3#2*3.1&$?,#2,#-%*+*#3&>%$*+#1.3.+'#+*(+*'*"$#(.'&$&2*#2)30*'#)"/#/)+H*+#
1.3.+'#+*(+*'*"$#"*>)$&2*#2)30*'8#V&>8#OZ1#'%.-'#$%*#$&4*#.6#$%*#4);&404#+0"G0(#."#$%*#@)1H#6)1*#.6#
$%*#&'3)"/8#:%*#1.3.+4)(#&"#$%&'#6&>0+*#+*(+*'*"$'#η8#
#
M)Q#
#
M@Q#
#
M1Q#
J%MN(FON(@4.3&820&(26(/24%/.#(%&#.41(7%08(HUd(^(]NF\(4".$(08"(0%="(26(=.R%=5=($54-53(.0(08"(6$240(6./"(S.T>(
/2##%&%24(26(7$.33%4M(7.<"&(SDT>(.41(=.R%=5=($54-53(24(08"(D./B(6./"(S/TN(A8"(<"$0%/.#(&/.#"(%&("R.MM"$.0"1(D;(.(
6./02$(26(F](
:%*#(+*/&1$&."'#.6#$%*#10++*"$#4./*3#)+*#'3&>%$3?#@*$$*+#$%)"#$%*#"04*+&1)3#+*'03$'#&"##NOTP,#NOFP,#)"/#
NTOP8#V.+#&"'$)"1*,#$%*#/.0@3*G(*)H#&"#V&>8#OF1#&'#+*'.32*/#@*$$*+#&"#$%*#10++*"$#4./*38#:%&'#4&>%$#@*#
@*1)0'*#.6#$%*#6&"*+#+*'.30$&."'#0'*/#&"#$%*#10++*"$#'$0/?,#-%&1%#-*+*#6*)'&@3*#."3?#/0*#$.#$%*#6)'$#
1.4(0$)$&.")3#'(**/#.6#7*3*+&'8#V.+#*;)4(3*,#V0%+4)"#)"/#X)/'*"#NTOP#+*(.+$*/#)#F8F#%#'&403)$&."#
+0""&">#$&4*#."#)#'&">3*#F8T#BY5#C*"$&04#Z#(+.1*''.+,#-&$%#)#TFZuTfO#1.4(0$)$&.")3#>+&/8#7*3*+&'#
1.4(3*$*'#$%&'#$*'$#-&$%#$%*#')4*#"04@*+#.6#1*33'#&"#3*''#$%)"#Oc#',#."#)#C7#-&$%#RW!E!]#q0)/+.#ghff#
>+)(%&1'#1)+/#)"/#)#O8k#BY5#!"$*3#p*."#7CD8##
:%*#)>+**4*"$#.6#"04*+&1)3#+*'03$'#-&$%#4*)'0+*/#2)30*'#&"#$%*#1)'*#-&$%#$%*#%&>%*'$#-)2*#%*&>%$#&'#
$%*#4.'$#&"$*+*'$&">#."*,#)'#&"#$%&'#1)'*#$%*#'.3&$."#@+*)H'#)3.">#$%*#&'3)"/8#V0%+4)"#)"/#X)/'*"#NTOP#
4./*3,#-%&1%#/.*'#".$#0$&3&5*#)#@+*)H&">#4./*3,#.2*+#(+*/&1$'#$%*#+0"G0(#6.+#>)0>*#tTT#@?#)@.0$#Tcv#
6.+#$%&'#1)'*8#Y.-*2*+#(+*/&1$&."'#.6#S?"*$$#*$#)38#NOTP#)"/#:."*33&#)"/#C*$$&#NOFP,#-%&1%#1."'&/*+#$%*#
-)2*#@+*)H&">,#)+*#401%#13.'*+#$.#$%*#4*)'0+*4*"$'8#`0+#4./*3#)3'.#%)'#)#13.'*#(+*/&1$&."#)$#$%&'#
3.1)$&.",#-%&1%#1."6&+4'#$%)$#$%*#4&"4./#630;#3&4&$*+#*4(3.?*/#&"#7*3*+&'#&'#/.&">#)#>../#U.@#&"#
&4&$)$&">#$%*#@+*)H&">#4./*3'8#
V&")33?,#$%*#"04*+&1)3#)"/#4*)'0+*/#%.+&5."$)3#4);&404#+0"G0('#)+*#1.4()+*/#&"#V&>8#Oc8#:%*#
%.+&5."$)3#+0"G0('#)+*#'1)3*/#@?#$%*#&"&$&)3#'%.+*3&"*#+)/&0'#MT8FT#4Q8#:%*#-)2*#/&+*1$&."#&'#6+.4#-*'$#$.#
*)'$8#]#$%+*'%.3/#.6#w#d#sΔx_F#&'#1%.'*"#6.+#-)$*+#/*($%#$.#/*$*+4&"*#$%*#4);&404#+0"G0(8#:%*#+0"G0(#
2)30*'#6.+#$%*#'*3*1$*/#w#-*+*#&"2)+&)"$#6.+#/&66*+*"$#>+&/#'&5*'8#:%*#)>+**4*"$#6.+#)33#1)'*'#&'#2*+?#>../#
)"/#1.4()+)@3*#$.#$%)$#)1%&*2*/#@?#S?"*$$#*$#)38NOTP,#V0%+4)"#)"/#X)/'*"#NTOP,#)"/#:."*33&#)"/#C*$$&#
NOFP8#:%*#+0"G0(#."#$%*#@)1H#6)1*#.6#$%*#&'3)"/#&'#)3'.#1)($0+*/#2*+?#-*33#&"#$%*'*#'&403)$&."'8#:%&'#+0"G
0(#&'#>*"*+)$*/#@?#$%*#1.33&'&."#.6#-)2*'#-+)((&">#)+.0"/#$%*#&'3)"/8#
#
#
#
M)Q#
M@Q#
M1Q#
J%MN(FPN(Y5="$%/.#(S&2#%1(#%4"T(.41(=".&5$"1(SRT(=.R%=5=(82$%?240.#($54-53(62$(bU1(^(]N]O(S.T>(]N][(SDT>(.41(]N]F\(
S/TN(
P !24/#5&%24(
]"#.(*"#'.0+1*#'.6$-)+*#6.+#1.)'$)3#-)2*#'&403)$&."#)"/#2&'0)3&5)$&.",#1)33*/#7*3*+&',#&'#&"$+./01*/8#:%*#
/&'1+*$&5)$&."#.6#$%*#*;$*"/*/#<.0''&"*'=#*=0)$&."'#@?#)#%?@+&/#6&"&$*#2.304*#A#6&"&$*#/&66*+*"1*#'1%*4*#
&'#@+&*63?#*;(3)&"*/#)"/#&$'#&4(3*4*"$)$&."#."#BCD#&'#/&'10''*/8#:%*#'$+01$0+*#.6#$%*#'.6$-)+*#&'#
'H*$1%*/#)"/#&$'#1.4(."*"$'#)+*#*3)@.+)$*/8#7*3*+&'#&'#2)3&/)$*/#6.+#@+*)H&">#)"/#"."G@+*)H&">#-)2*'#
@?#1.4()+&">#&$'#+*'03$'#-&$%#$%+**#'$)"/)+/#@*"1%4)+H'J#")4*3?,#+0"G0(#."#)#(3)")+#@*)1%,#-)2*#
6.10'&">#."#)#'*4&1&+103)+#'%.)3,#)"/#'.3&$)+?#-)2*#+0"G0(#."#)#1."&1)3#&'3)"/8##
:%*#4)&"#6*)$0+*#.6#$%*#'.6$-)+*,#&"#)//&$&."#$.#&$'#6)'$#1.4(0$)$&.")3#'(**/,#&'#&$'#&"$*+)1$&2&$?8#:%*#0'*+#
1)"#1%)">*#$%*#(%?'&1)3#)"/#"04*+&1)3#()+)4*$*+'#.6#)"#*;(*+&4*"$#2&)#)#BD!,#-%&3*#$%*#4./*3#&'#
+0""&">8#R04*+.0'#2&'0)3&5)$&."#.($&."'#&"130/&">#(%.$.+*)3&'$&1#+*"/*+&">#)+*#(+.2&/*/8#]#1.4(&3*/#
2*+'&."#.6#7*3*+&'#&'#/&'$+&@0$*/#)3.">#-&$%#&$'#'.0+1*#1./*'#0"/*+#$*+4'#.6#$%*#BRD#B*"*+)3#C0@3&1#
S&1*"'*8#7*3*+&'#%)+"*''*'#$%*#BCD#@?#0'&">#E&+*1$FE#3&@+)+&*',#)"/#&$#1)"#+0"#."#)"?#+*1*"$#9&"/.-'#
4)1%&"*#-&$%#4&"&404#(+*()+)$&."8##
)/B427#"1M"="40&(
:%*#)0$%.+'#)1H".-3*/>*#E+8#K$*(%*"#:%.4'.",#-%.#/*2*3.(*/#$%*#&"&$&)3#2*+'&."#.6#$%*#'.32*+#)"/#
BD!,#."#-%&1%#$%*#7*3*+&'#'.6$-)+*#%)'#@**"#@0&3$8##L*'*)+1%#'0((.+$#6.+#$%&'#*66.+$#-)'#(+.2&/*/#@?#$%*#
`66&1*#.6#R)2)3#L*'*)+1%8#
X"6"$"4/"&(
NOP#]8#<8#g*""*/?,#L8#]8#E)3+?4(3*,#x8#:8#g&+@?,#)"/#q8#7%*",#[E*$*+4&")$&."#.6#&"2*+'*#/*($%'#0'&">#
/&+*1$#<.0''&"*'=#4./*3&">,\#J.)Waterw.)port,)coastal,)Ocean)Eng.,#2.38#OTh,#".8#Z,#((8#TfhATOZ,#
Tfff8#
NTP#g8#K8#i+/0+)",#K8#!3&1,#)"/#W8#g0$&U),#[Y?@+&/#6&"&$*G2.304*#6&"&$*G/&66*+*"1*#'1%*4*#6.+#$%*#'.30$&."#
.6#<.0''&"*'=#*=0)$&."',\#Int.)J.)Numer.)Methods)Fluids,#2.38#Zl,#".8#OO,#((8#OTOFAOTFT,#Tffc8#
NFP#]8#g0+>)".2#)"/#B8#C*$+.2),#[]#'*1."/G.+/*+#-*33G@)3)"1*/#(.'&$&2&$&$?#(+*'*+2&">#1*"$+)3G0(-&"/#
'1%*4*#6.+#$%*#K)&"$GW*")"$#'?'$*4,\#Commun.)Math.)Sci.,#2.38#c,#".8#O,#((8#OFFAOhf,#Tffj8#
NZP#X8#:."*33&#)"/#X8#C*$$&,#[Y?@+&/#6&"&$*#2.304*#G#6&"&$*#/&66*+*"1*#'1%*4*#6.+#TEY#&4(+.2*/#
<.0''&"*'=#*=0)$&."',\#Coast.)Eng.,#2.38#ch,#".8#cAh,#((8#hflAhTf,#Tffl8#
NcP#C8#]8#X)/'*"#)"/#`8#L8#Kb+*"'*",#[]#"*-#6.+4#.6#$%*#<.0''&"*'=#*=0)$&."'#-&$%#&4(+.2*/#3&"*)+#
/&'(*+'&."#1%)+)1$*+&'$&1'8#C)+$#T8#]#'3.-3?G2)+?&">#@)$%?4*$+?,\#Coast.)Eng.,#2.38#Ok,#".8#FAZ,#((8#
OkFATfZ,#OllT8#
NhP#B8#9*&#)"/#x8#:8#g&+@?,#[:&4*G/*(*"/*"$#"04*+&1)3#1./*#6.+#*;$*"/*/#<.0''&"*'=#*=0)$&."',\#J.)
Waterw.)Port,)Coastal,)Ocean)Eng.,#2.38#OTO,#".8#c,#((8#TcOAThO,#Ollc8#
NjP#]8#L8#<+./$H.+@,#X8#S8#Ky$+),#)"/#X8#]3$&")H)+,#[i66&1&*"$#'%)33.-#-)$*+#'&403)$&."'#."#BCD'I#
!4(3*4*"$)$&.",#2&'0)3&5)$&.",#2*+&6&1)$&.",#)"/#2)3&/)$&.",\#Comput.)Fluids,#2.38#cc,#((8#OAOT,#
TfOT8#
NkP#78#i1H)+$,#[:%*#(+.()>)$&."#.6#>+)2&$?#-)2*'#6+.4#/**(#$.#'%)33.-#-)$*+,\#&"#Gravity)waves,#
OlcT,#(8#Ohc8#
NlP#x8#E8#`-*"',#E8#S0*@H*,#R8#B.2&"/)+)U0,#X8#Y)++&',#x8#g+z>*+,#]8#i8#S*6.%",#)"/#:8#x8#C0+1*33,#[]#
K0+2*?#.6#B*"*+)3#C0+(.'*#7.4(0$)$&."#."#B+)(%&1'#Y)+/-)+*,\#2.38#Th,#".8#O,#((8#kfAOOF,#Tffj8#
NOfP#{8#|%)">,#x8#7.%*",#)"/#x8#E8#`-*"',#[V)'$#$+&/&)>.")3#'.32*+'#."#$%*#BCD,\#ACM)SIGPLAN)Not.,#
2.38#Zc,#".8#c,#(8#OTj,#TfOf8#
NOOP#<8#7.'$)'#i44)"0*3#K?".3)H&',#[:%*#+0"0(#.6#'.3&$)+?#-)2*',\#J).)Fluid)Mech,#2.38#Okc,#((8#cTFA
cZc,#Olkj8#
NOTP#C8#x8#S?"*$$,#:8GL8#90,#)"/#C8#S8GV8#S&0,#[X./*3&">#-)2*#+0"0(#-&$%#/*($%G&"$*>+)$*/#*=0)$&."',\#
Coast.)Eng.,#2.38#Zh,#".8#T,#((8#klAOfj,#TffT8#
NOFP#X8#:."*33&#)"/#X8#C*$$&,#[V&"&$*#2.304*#'1%*4*#6.+#$%*#'.30$&."#.6#TE#*;$*"/*/#<.0''&"*'=#
*=0)$&."'#&"#$%*#'0+6#5."*,\#Ocean)Eng.,#2.38#Fj,#".8#j,#((8#chjAckT,#TfOf8#
NOZP#78#i8#K?".3)H&',#[:%*#+0"0(#.6#3.">#-)2*',\#C%E#$%*'&',#7)3&6.+"&)#!"'$&$0$*#.6#:*1%".3.>?,#
C)')/*"),#7]8#Olkh8#
NOcP#L8#98#9%)3&",#[:%*#3&4&$#.6#)((3&1)@&3&$?#.6#3&"*)+#-)2*#+*6+)1$&."#$%*.+?#&"#)#1."2*+>*"1*#5."*8,\#
OljO8#
NOhP#`8#L8#Kb+*"'*",#Y8#]8#K1%}66*+,#)"/#S8#K8#Kb+*"'*",#[<.0''&"*'=G$?(*#4./*33&">#0'&">#)"#
0"'$+01$0+*/#6&"&$*#*3*4*"$#$*1%"&=0*,\#Coast.)Eng.,#2.38#cf,#".8#Z,#((8#OkOAOlk,#TffZ8#
NOjP#K8#S&0,#|8#K0",#)"/#x8#S&,#[]"#0"'$+01$0+*/#ViX#4./*3#@)'*/#."#<.0''&"*'=#*=0)$&."'#)"/#&$'#
)((3&1)$&."#$.#$%*#1)3103)$&."#.6#403$&/&+*1$&.")3#-)2*#+0"G0(#&"#)#1?3&"/*+#>+.0(,\#Appl.)Math.)
Model.,#2.38#Fh,#".8#l,#((8#ZOZhAZOhZ,#TfOT8#
NOkP#E8#<&>."&,#]8#C8#i">'&>Gg)+0(,#)"/#78#i'H&3''.",#[i66&1&*"$#0"1*+$)&"$?#=0)"$&6&1)$&."#.6#)#6033?#
"."3&"*)+#)"/#/&'(*+'&2*#-)$*+#-)2*#4./*3#-&$%#+)"/.4#&"(0$',\#J.)Eng.)Math.,#((8#OATj,#TfOh8#
NOlP#X8#x8#<+&>>',#78#i8#K?".3)H&',#B8#K8#Y)+H&"',#)"/#E8#L8#B+**",#[S)@.+)$.+?#*;(*+&4*"$'#.6#$'0")4&#
+0"0(#."#)#1&+103)+#&'3)"/,\#Pure)Appl.)Geophys.)PAGEOPH,#2.38#OZZ,#".8#FAZ,#((8#chlAclF,#Ollc8#
NTfP#W8#W#:&$.2#)"/#78#i8#K?".3)H&',#[R04*+&1)3#X./*33&">#.6#:&/)3#9)2*#L0"0(,\#ASCE)J.)Waterw.)Port,)
Coast.)Ocean)Eng.,#2.38#OTZ,#".8#Z,#((8#OcjAOjO,#Ollk8#
NTOP#E8#L8#V0%+4)"#)"/#C8#)#X)/'*",#[K&403)$&."#.6#"."3&"*)+#-)2*#+0"G0(#-&$%#)#%&>%G.+/*+#
<.0''&"*'=#4./*3,\#Coast.)Engng.)–)Amsterdam,#2.38#cc,#((8#OFlAOcZ,#Tffk8#
#
... We utilize an open-source software, Celeris (Tavakkol & Lynett, 2017) for the numerical experiments. This is a solver for the Boussinesq-type equations using the finite volume method. ...
... where h = h0 + η(x, y, t) is the total water depth, (x, y, t) is the water surface elevation from the quiescent water level at the depth h0, ̅ and ̅ are the depth-averaged horizontal velocities in the x and y directions, respectively, g is the gravitational acceleration, and ∂ denotes the partial derivative with respect to the subscript. The detailed description for the governing equations can be found in Tavakkol & Lynett (2017), in which several validation runs are given. In addition, Bheeroo & Yeh (2021) reported a good performance of Celeris for their 1+1 problem with the data taken from their laboratory experiments for cnoidal waves over a submerged reef. ...
Article
Longwave response in a reef-lagoon bathymetry adjacent to a shore is studied by performing a series of numerical experiments. We consider the problem such that the length scale of the lagoon is comparable to the reef. A series of offshore reefs is formed periodically in the alongshore direction, parallel to the shoreline; adjacent reefs are separated with aperture channels. We impose cnoidal waves for the incident longwave train with the length scale comparable to the reef and lagoon dimensions. Our results reveal that the incident waves amplify in the region behind the reef, and attenuate in the region directly exposed to the aperture; the resulting variation of wave amplification along the shore is found to be substantial. This somewhat counterintuitive outcome is caused by a combination of diffraction and refraction of the long waves interacting with the reef-lagoon bathymetry of comparable length scale. We also found that the pattern of the offshore wavefield may not identify the reef bathymetry characteristics; it is because the pattern of offshore wave formation is influenced by a complex combination of wave reflection from the reef-lagoon system. The induced residual currents are also examined. The results show that notable offshore-directed residual currents are formed in the aperture channel only when the reef height is high with respect to the ambient water depth and when the aperture width is narrow compared with the reef's alongshore breadth. Otherwise, the residual currents in the onshore direction are formed, although the magnitude is very small. It is demonstrated that the residual currents are induced by a combination of the gradients of the mean water surface and the time average of horizontal momentum flux.
... Adopting the features of plane detection and people occlusion in ARKit and the Boussinesq-type wave solver in Celeris (Figure 1; Tavakkol & Lynett, 2017, 2020, ARtsunami can automatically render the tsunami on the ground and provide an immersive experience of the impact of tsunamis for the users. The goal of this experience is to elicit an emotional response in users and influence future planning decisions, and ultimately push a more proactive approach to tsunami preparedness. ...
Article
Full-text available
Augmented reality (AR) is a technology that integrates 3D virtual objects into the physical world in real-time, while virtual reality (VR) is a technology that immerses users in an interactive 3D virtual environment. The fast development of augmented reality (AR) and virtual reality (VR) technologies has reshaped how people interact with the physical world. This presentation will outline the results from two unique AR and one Web-based VR coastal engineering projects, motivating the next stage in the development of the augmented reality package for coastal students, engineers, and planners.
... Celeris (Tavakkol & LYnett, 2017), Mike21 (DHI, 2014) Saint Venant Dynamic Physically-based Spatial ...
... As for the tsunami propagation model, we use the Boussinesq wave equations solver Celeris. 39,40 Details on the model setup and verification are not the focus of the present study; they are presented in a separate study. 41 ...
Article
Submarine landslides are capable of causing locally catastrophic tsunamis. Landslide parameters, particularly those related to the landslide motion, are highly uncertain in a real landslide tsunami event. To date, a practical method for effectively and efficiently modeling the landslide tsunami generation process is still lacking. To gain insight into the landslide tsunami generation mechanism, we employed a combination of analytical derivation and numerical computation. From the wave energy perspective, we found the locked wave component of a landslide tsunami to be as important as the free wave component. Thus, the locked wave component cannot be neglected. We showed that for a geophysically relevant submarine landslide speed, the locked wave component has a deceivingly small wave amplitude with large flow velocities. Thus, careful attention must be paid to flow velocities when modeling landslide tsunamis. For a submarine landslide forcing water waves at a constant speed, we found that the total wave energy first evolves from zero to a peak value, before decreasing to an asymptotic value. These two distinct energy values and the corresponding wave generation times may serve as conservative estimates in predictive studies, in which precise information on the landslide dynamics is impossible to obtain. Finally, we used the 1998 Papua New Guinea landslide tsunami as an example to demonstrate how the findings in this study aid in the modeling effort for a real event.
... We adopt the same procedure for GPU parallel computation, further details of which can be found in [29]. High computation efficiency is another advantage of the present BT model, and to the authors' knowledge, only a few BT models have been accelerated by the GPU technique to date [31][32][33]. ...
Article
Full-text available
A Boussinesq-type wave model is developed in this paper to simulate the interaction of coastal waves with bottom-mounted porous structures. The governing equations are rewritten in the conservative form to facilitate the use of hybrid finite volume (FV) and finite difference (FD) method. Higher-order slope terms are also inserted into the equations to account for rapidly varying bathymetry. The convective flux is approximated using the FV method, while the remaining terms are discretized using the FD method in a uniform rectangle grid system. The time integration is implemented using the third order Runge–Kutta method with an adaptive time step. A single GPU parallel computation is also implemented to save computation costs. The numerical model is validated against a series of experimental datasets, including data acquired in a new laboratory experiment. The predictions are in overall agreement with the measurements, proving that the model is capable of handling wave interaction with porous structures in the coastal region for a wide range of scenarios.
Article
Full-text available
Many numerical simulation methods, such as finite-element analysis, were originally formulated to run serially or in parallel on central processing units (CPUs). However, computer engineering has seen a paradigm shift towards massive parallelism using graphics processing units (GPUs), which have become the default accelerators in many data-driven scientific disciplines outside of civil engineering. This state-of-the-art review highlights challenges and practicalities of GPU-accelerating nonlinear dynamic analyses for civil structural problems. To demonstrate the feasibility of a fully GPU-accelerated finite-element analysis, a GPU-based program for linear-elastic dynamic analysis was implemented, where all stages of the analysis were ported to the GPU. Observed speedups were 115 times that of an equivalent CPU-driven analysis for 10^6 model degrees-of-freedom. Importantly, the computational time for the assembly and update levels of the analyses were nearly independent of the number of degrees-of-freedom. High-resolution simulations of complex structures can be computationally expensive, but these results and advances in other fields suggest that some levels of the finite-element analysis of civil structures could be accelerated using GPUs at increased model resolution with little increase in computational cost, demonstrating the potential for GPU-accelerated computing. However, compared to other GPU-accelerated FEA applications, the dynamic analysis of civil structures is subject to unique challenges that need to be addressed before GPU acceleration can be fully realized. Aspects of simulating the response of civil structures considering nonlinear response under extreme loading may not be immediately amenable to GPU acceleration; e.g., the use of many differing element formulations within a model, potential for inelastic response and varying degrees of nonlinearity across elements, and traditional reliance on implicit integration schemes with direct solvers. The shift to GPUs is part of a larger movement towards specialized hardware using fine-grained parallelism, and structural engineers need to address these challenges as these emerging technologies become more prevalent.
Conference Paper
Full-text available
The phenomenon of wave breaking dominates the hydrodynamics of the surf zone. Therefore, numerical modelling of shallow water phenomena requires a proper reproduction of the wave breaking mechanism. In this study, we analyze the ability of two open-source Boussinesq-type models, Celeris and FUNWAVE-TVD (Total Variation Diminishing version), to correctly reproduce wave breaking. The main aim is to obtain aware tools for numerical modelling of surf zone hydrodynamics. The results are compared with physical model tests and Computational Fluid Dynamics (CFD) numerical modelling.
Article
Full-text available
Boussinesq-type equation is one of the important tools for simulating the propagation and evolution of water waves. The theoretical derivation and numerical application of the Boussinesq-type water wave equation dating back to 1967 are reviewed with the hope of promoting its deep development and application in the fields of coastal and ocean engineering. From the theoretical point of view, the derivation of such equations mainly starts from Euler equations or Laplace equations. Under the conditions of certain nonlinearity and gentle slope assumptions, a variety of Boussinesq-type water wave equations have been proposed worldwide. Through the comparisons with the related theories of Stokes waves, these equations are investigated with respect to phase velocity, group velocity, linear shoaling gradient, second-order nonlinearity, third-order nonlinearity, dispersion characteristics due to amplitude dispersion, velocity distribution along the vertical column, sub- and super harmonics etc. The majority of Boussinesq-type equations in literature for waves are reviewed and grouped into two categories, namely horizontal two-dimensional type and three-dimensional type. The usage of Boussinesq-type equations involved with permeable media and the presence of fluid stratification are also briefly described and commented. Finally, the application of these equations is summarized and analyzed.
Article
Full-text available
A major challenge in next-generation industrial applications is to improve numerical analysis by quantifying uncertainties in predictions. In this work we present a formulation of a fully nonlinear and dispersive potential flow water wave model with random inputs for the probabilistic description of the evolution of waves. The model is analyzed using random sampling techniques and non-intrusive methods based on generalized Polynomial Chaos (PC). These methods allow to accurately and efficiently estimate the probability distribution of the solution and require only the computation of the solution in different points in the parameter space, allowing for the reuse of existing simulation software. The choice of the applied methods is driven by the number of uncertain input parameters and by the fact that finding the solution of the considered model is computationally intensive. We revisit experimental benchmarks often used for validation of deterministic water wave models. Based on numerical experiments and assumed uncertainties in boundary data, our analysis reveals that some of the known discrepancies from deterministic simulation in comparison with experimental measurements could be partially explained by the variability in the model input. We finally present a synthetic experiment studying the variance based sensitivity of the wave load on an off-shore structure to a number of input uncertainties. In the numerical examples presented the PC methods have exhibited fast convergence, suggesting that the problem is amenable to being analyzed with such methods.
Article
Full-text available
The extended Boussinesq equations derived by Nwogu (1993) significantly improve the linear dispersive properties of long-wave models in intermediate water depths, making it suitable to simulate wave propagation from relatively deep to shallow water. In this study, a numerical code based on Nwogu’s equations is developed. The model uses a fourth-order predictor-corrector method to advance in time, and discretizes first-order spatial derivatives to fourth-order accuracy, thus reducing all truncation errors to a level smaller than the dispersive terms retained by the model. The basic numerical scheme and associated boundary conditions are described. The model is applied to several examples of wave propagation in variable depth, and computed solutions are compared with experimental data. These initial results indicate that the model is capable of simulating wave transformation from relatively deep water to shallow water, giving accurate predictions of the height and shape of shoaled waves in both regular and irregular wave experiments.
Article
Full-text available
This is a study of the runup of solitary waves on plane beaches. An approximate theory is presented for non-breaking waves and an asymptotic result is derived for the maximum runup of solitary waves. A series of laboratory experiments is described to support the theory. It is shown that the linear theory predicts the maximum runup satisfactorily, and that the nonlinear theory describes the climb of solitary waves equally well. Different runup regimes are found to exist for the runup of breaking and non-breaking waves. A breaking criterion is derived for determining whether a solitary wave will break as it climbs up a sloping beach, and a different criterion is shown to apply for determining whether a wave will break during rundown. These results are used to explain some of the existing empirical runup relationships.
Article
Full-text available
In this paper, we present an efficient implementation of a state-of-the-art high-resolution explicit scheme for the shal-low water equations on graphics processing units. The selected scheme is well-balanced, supports dry states, and is particularly suitable for implementation on graphics processing units. We verify and validate our implementation, and show that use of efficient single precision hardware is sufficiently accurate for real-world simulations. Our framework further supports real-time visualization with both photorealistic and non-photorealistic display of the physical quanti-ties. We present performance results showing that we can accurately simulate the first 4000 seconds of the Malpasset dam break case in 27 seconds using over 480000 cells (dx = dy = 15 m), in which our simulator runs at an average of 530 megacells per second.
Article
In this paper, a numerical model based on the improved Boussinesq equations derived by Beji and Nadaoka [5] is first developed using unstructured finite element technique. A locally rotated coordinate system is introduced to improve the treatment for the fully reflective boundaries whose orientation does not coincide with the coordinate system. The Adams–Bashforth–Moulton predictor–corrector scheme is used for time integration. Typical examples are employed to validate the numerical model. Based on the developed model, multidirectional wave propagation through a cylinder group is numerically calculated and the effects of the wave directionality on the waves in the group and the wave run-up on the cylinders are investigated. Numerical results show that the wave directionality has considerable effect on the wave run-up in the cylinder group.
Article
The software has been designed specially for concurrent application of the statistical tolerance (ST) and the statistical process control (SPC). The software system includes the two function modules for data, i.e. the data acquisition module with data collection and input, and data processing module with data storage and management, statistical analysis and control charts drawing. The system provides a set of functional modules for realizing three tasks: ST and SPC design, drawing control charts and verifying for assuring the designated process quality indices (PQIs) that representing required process quality. Some considerations for the software design are discussed and the mathematical modeling for ST and PQIs are given. The main steps for ST and PQI verification with the controlled process data are also introduced. The software of quality-oriented ST and SPC has been tested for its computing accuracy and precise. It provides an efficiency tool for ST and SPC parameter design and a convenient communication platform for product designers, manufacture engineers and quality engineers.
Article
A numerical solution for the 2+1 (long-shore and onshore propagation directions and time) nonlinear shallow-water wave equations without friction factors or artificial viscosity is presented. The models use a splitting method to generate two 1+1 propagation problems, one in the onshore and the other in long-shore direction. Both are solved in characteristic form using the method of characteristics. A shoreline algorithm is implemented, which is the generalization of the earlier 1+1 algorithm used in the code VTCS-2. The model is validated using large-scale laboratory data from solitary wave experiments attacking a conical island. The method is applied then to model the 1993 Okushiri, Japan, the 1994 Kuril Island, Russia, and the 1996 Chimbote, Peru tsunamis. It is found that the model can reproduce correctly overland flow and even extreme events such as the 30m runup and the 20m/s inundation velocities inferred during field surveys. The results suggest that bathymetric and topographic resolution of at least 150m is necessary for adequate predictions, while at least 50m resolution is needed to model extreme events, contrary to intuitive expectations that long waves would not interact with morphological features of such short scales.
Article
Reported is an experimental investigation to assess the limits of applicability of linear wave refraction theory in a convergence zone. One bottom topography with parallel circular contours symmetric about the center of the tank was used and three wave periods (1, 2, and 3 sec) were tested along with three wave heights for each period. All tests were conducted for nonbreaking waves. Data were obtained at 100 locations within the model basin for each condition tested. The data were analyzed on the basic assumption that the total energy was equally partitioned between potential energy and kinetic energy. The basic computation performed was to calculate the potential energy transmitted per unit width over one wave period. Measurements of the reflected energy from the underwater topographic variations indicated that such reflections were negligible. This was verified by computations using the long wave theory as well as a theory not requiring the long wave assumption.
Article
A hybrid scheme composed of finite-volume and finite-difference methods is introduced for the solution of the Boussinesq equations. While the finite-volume method with a Riemann solver is applied to the conservative part of the equations, the higher-order Boussinesq terms are discretized using the finite-difference scheme. Fourth-order accuracy in space for the finite-volume solution is achieved using the MUSCL-TVD scheme. Within this, four limiters have been tested, of which van-Leer limiter is found to be the most suitable. The Adams–Basforth third-order predictor and Adams–Moulton fourth-order corrector methods are used to obtain fourth-order accuracy in time. A recently introduced surface gradient technique is employed for the treatment of the bottom slope. A new model ‘HYWAVE’, based on this hybrid solution, has been applied to a number of wave propagation examples, most of which are taken from previous studies. Examples include sinusoidal waves and bi-chromatic wave propagation in deep water, sinusoidal wave propagation in shallow water and sinusoidal wave propagation from deep to shallow water demonstrating the linear shoaling properties of the model. Finally, sinusoidal wave propagation over a bar is simulated. The results are in good agreement with the theoretical expectations and published experimental results. Copyright © 2005 John Wiley & Sons, Ltd.