Content uploaded by Sasan Tavakkol
Author content
All content in this area was uploaded by Sasan Tavakkol on Mar 16, 2022
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#
#