Nicholson Canyon Simulation
From Gerris
| Revision as of 04:47, 9 August 2011 EmilyMLane (Talk | contribs) (→Problem Definition) ← Previous diff |
Revision as of 04:48, 9 August 2011 EmilyMLane (Talk | contribs) (→Creating Solid Block) Next diff → |
||
| Line 8: | Line 8: | ||
| These simulations are run as a 2D vertical slice (i.e. assuming that the canyon and landslide are infinitely long and that there is no movement in the along-canyon direction | These simulations are run as a 2D vertical slice (i.e. assuming that the canyon and landslide are infinitely long and that there is no movement in the along-canyon direction | ||
| - | === Creating Solid Block === | + | === Generating the Landslide Body Geometry === |
| - | First we need to create a gts object that is the sliding block. One difficulty is that we have to ensure that the block is very close to the edges of the domain while still all lying inside the domain (otherwise those points lying outside the domain get 'left behind'). In the two dimensional simulation we still need a three dimensional block to ensure that it properly intersects the domain. This is made by first creating points on the surface of the block using an .awk file and then triangulating them using the gts delaunay triangulation | + | First we need to create a .gts object that is the sliding block. One difficulty is that we have to ensure that the block is very close to the edges of the domain while still all lying inside the domain (otherwise those points lying outside the domain get 'left behind'). In the two dimensional simulation we still need a three dimensional block to ensure that it properly intersects the domain. This is made by first creating points on the surface of the block using an .awk file and then triangulating them using the gts delaunay triangulation |
| <source lang=bash> | <source lang=bash> | ||
| # Generating points using .awk file | # Generating points using .awk file | ||
Revision as of 04:48, 9 August 2011
Contents |
Problem Definition
These simulations are loosely based on the geometry of the Nicholson Canyon in Cook Strait. It assumes a simple sliding block with a prescribed velocity. This work is similar to that of the benchmark cases of Enet et al. and Liu et al. with the difference being that while the two benchmark cases involved laboratory scales this simulation involves realistic geophysical scales.
Two-Dimensional Simulations
These simulations are run as a 2D vertical slice (i.e. assuming that the canyon and landslide are infinitely long and that there is no movement in the along-canyon direction
Generating the Landslide Body Geometry
First we need to create a .gts object that is the sliding block. One difficulty is that we have to ensure that the block is very close to the edges of the domain while still all lying inside the domain (otherwise those points lying outside the domain get 'left behind'). In the two dimensional simulation we still need a three dimensional block to ensure that it properly intersects the domain. This is made by first creating points on the surface of the block using an .awk file and then triangulating them using the gts delaunay triangulation
# Generating points using .awk file
awk -f nicholson.awk > points.tmp
# Delaunay triangulation and transformation using gts tools
( wc points.tmp | awk '{print $1" 0 0"}'; cat points.tmp ) | gtsdelaunay -d | gtstransform --rx=-90 > nichol_test.gts
# Shifting points to the domain boundary
sed -e "s/ -0.0168/0/g" < nichol_test.gts > nichol_testout.gts
The .awk file used to generate the points is
BEGIN {
a=0.272
b=1.7
alpha=atan2(a,b);
h=a*cos(alpha);
l1=b*cos(alpha);
l2=a*sin(alpha);
for (k=0; k <= 100; k++) {
for (i=-1; i <= 100; i++) { printf("%5.4f %5.4f %5.4f\n",l1*i/100, -
0.85+1.7*k/100 , h*i/100) }
for (i=1; i <= 101; i++) { printf("%5.4f %5.4f %5.4f\n",l1+l2*i/100,
-0.85+1.7*k/100, h*(1-i/100)) }
}
dx=1.0e-4
k=0.
j=-1.
for (i=-1; i <= 100; i++) { printf("%5.4f %5.4f %5.4f\n",l1*i/100, -0.
85+1.7*k/100-dx,h*j/100) }
for (i=1; i <= 101; i++) { printf("%5.4f %5.4f %5.4f\n",l1+l2*i/100, -
0.85+1.7*k/100-dx,h*j/100) }
k=100.
for (i=-1; i <= 100; i++) { printf("%5.4f %5.4f %5.4f\n",l1*i/100, -0.
85+1.7*k/100+dx,h*j/100) }
for (i=1; i <= 101; i++) { printf("%5.4f %5.4f %5.4f\n",l1+l2*i/100, -
0.85+1.7*k/100+dx,h*j/100) }
}
Creating Probes
The height of the water

