Note
Click here to download the full example code
Canal¶
This case is a canal to test the damping condition in one direction
import os, sys
import argparse
import numpy as np
import freshkiss3d as fk
import freshkiss3d.extra.plots as fk_plt
import math
import matplotlib.pyplot as plt
from matplotlib.pyplot import cm
import matplotlib.tri as mtri
os.system('rm -r outputs/hydrodynamic_vtk')
parser = argparse.ArgumentParser()
parser.add_argument('--nographics', action='store_true')
args = parser.parse_args()
#sphinx_gallery_thumbnail_number = 3
dir_path = os.path.abspath(os.path.dirname(sys.argv[0]))
Parameters:¶
mu = 12.5
sigma = 0.9
def topo_gaussian(x,y):
topo = 1./(sigma * math.sqrt(2 * math.pi))*np.exp(-(x-mu)**2 / (2*sigma*sigma))
return topo
Time loop:¶
FINAL_TIME = 20.
simutime = fk.SimuTime(final_time=FINAL_TIME, time_iteration_max=100000,
second_order=True)
Mesh:¶
triangular_mesh = fk.TriangularMesh.from_msh_file(dir_path+'/inputs/simple_canal.msh')
if not args.nographics:
fk_plt.plot_mesh(triangular_mesh)
Layers:¶
NL=1
layer = fk.Layer(NL, triangular_mesh, topography_funct=topo_gaussian)
Primitives:¶
def frees(x, y):
if 0. <= x < 3.:
free = 0.5
else:
free = 0.15
return free
primitives = fk.Primitive(triangular_mesh, layer, free_surface_funct=frees)
if not args.nographics:
fk_plt.plot_init_1d_slice(triangular_mesh, surf_xy=frees, topo_xy=topo_gaussian)
plt.ylim(0, 1)
plt.xlim(0, 25)
Boundary conditions:¶
Writter:¶
times_figures = [1., 4., 8., 10., 12., 15., 19.]
create_figure_scheduler = fk.schedules(times=times_figures)
vtk_writer = fk.VTKWriter(triangular_mesh, scheduler=fk.schedules(times=times_figures),
scale_h=10)
Problem definition:¶
problem = fk.Problem(simutime, triangular_mesh, layer, primitives,
slides=slides,
damping_outs=damping_outs,
numerical_parameters={'space_second_order':True},
vtk_writer=vtk_writer,
custom_funct={'plot':fk_plt.plot_freesurface_3d},
custom_funct_scheduler=create_figure_scheduler)
===================================================================
| INITIALIZATION |
===================================================================
Problem size: Nodes=625, Layers=1, Triangles=1042,
Iter = 0 ; Dt = 0.0000s ; Time = 0.00s ; ETA = 0.00s
Problem solving:¶
problem.solve()
if not args.nographics:
plt.show()
===================================================================
| TIME LOOP |
===================================================================
Iter = 65 ; Dt = 0.0063s ; Time = 0.41s ; ETA = 6.42s
Iter = 129 ; Dt = 0.0064s ; Time = 0.82s ; ETA = 6.13s
Iter = 192 ; Dt = 0.0065s ; Time = 1.23s ; ETA = 5.89s
Iter = 255 ; Dt = 0.0066s ; Time = 1.64s ; ETA = 5.73s
Iter = 318 ; Dt = 0.0065s ; Time = 2.05s ; ETA = 5.60s
Iter = 380 ; Dt = 0.0066s ; Time = 2.45s ; ETA = 5.41s
Iter = 443 ; Dt = 0.0066s ; Time = 2.86s ; ETA = 5.30s
Iter = 505 ; Dt = 0.0065s ; Time = 3.27s ; ETA = 5.32s
Iter = 568 ; Dt = 0.0065s ; Time = 3.68s ; ETA = 5.09s
Iter = 630 ; Dt = 0.0065s ; Time = 4.08s ; ETA = 5.07s
Iter = 693 ; Dt = 0.0066s ; Time = 4.50s ; ETA = 4.84s
Iter = 753 ; Dt = 0.0069s ; Time = 4.90s ; ETA = 4.78s
Iter = 813 ; Dt = 0.0062s ; Time = 5.31s ; ETA = 5.18s
Iter = 875 ; Dt = 0.0072s ; Time = 5.72s ; ETA = 4.24s
Iter = 932 ; Dt = 0.0071s ; Time = 6.12s ; ETA = 4.27s
Iter = 991 ; Dt = 0.0069s ; Time = 6.54s ; ETA = 4.15s
Iter = 1050 ; Dt = 0.0069s ; Time = 6.94s ; ETA = 4.07s
Iter = 1109 ; Dt = 0.0069s ; Time = 7.35s ; ETA = 3.92s
Iter = 1168 ; Dt = 0.0070s ; Time = 7.76s ; ETA = 3.81s
Iter = 1226 ; Dt = 0.0070s ; Time = 8.17s ; ETA = 3.60s
Iter = 1285 ; Dt = 0.0069s ; Time = 8.57s ; ETA = 3.61s
Iter = 1345 ; Dt = 0.0068s ; Time = 8.99s ; ETA = 3.43s
Iter = 1404 ; Dt = 0.0069s ; Time = 9.39s ; ETA = 3.30s
Iter = 1464 ; Dt = 0.0069s ; Time = 9.80s ; ETA = 3.16s
Iter = 1523 ; Dt = 0.0069s ; Time = 10.21s ; ETA = 3.00s
Iter = 1583 ; Dt = 0.0069s ; Time = 10.62s ; ETA = 2.91s
Iter = 1642 ; Dt = 0.0070s ; Time = 11.03s ; ETA = 2.70s
Iter = 1701 ; Dt = 0.0070s ; Time = 11.43s ; ETA = 2.59s
Iter = 1759 ; Dt = 0.0068s ; Time = 11.84s ; ETA = 2.54s
Iter = 1819 ; Dt = 0.0069s ; Time = 12.25s ; ETA = 2.35s
Iter = 1878 ; Dt = 0.0070s ; Time = 12.66s ; ETA = 2.22s
Iter = 1936 ; Dt = 0.0070s ; Time = 13.06s ; ETA = 2.09s
Iter = 1994 ; Dt = 0.0071s ; Time = 13.47s ; ETA = 1.92s
Iter = 2051 ; Dt = 0.0072s ; Time = 13.88s ; ETA = 1.81s
Iter = 2107 ; Dt = 0.0073s ; Time = 14.29s ; ETA = 1.68s
Iter = 2163 ; Dt = 0.0073s ; Time = 14.70s ; ETA = 1.57s
Iter = 2218 ; Dt = 0.0074s ; Time = 15.11s ; ETA = 1.42s
Iter = 2273 ; Dt = 0.0074s ; Time = 15.52s ; ETA = 1.30s
Iter = 2328 ; Dt = 0.0073s ; Time = 15.93s ; ETA = 1.20s
Iter = 2382 ; Dt = 0.0076s ; Time = 16.33s ; ETA = 1.03s
Iter = 2437 ; Dt = 0.0074s ; Time = 16.74s ; ETA = 0.95s
Iter = 2492 ; Dt = 0.0075s ; Time = 17.15s ; ETA = 0.82s
Iter = 2546 ; Dt = 0.0077s ; Time = 17.56s ; ETA = 0.68s
Iter = 2598 ; Dt = 0.0080s ; Time = 17.97s ; ETA = 0.54s
Iter = 2648 ; Dt = 0.0081s ; Time = 18.37s ; ETA = 0.43s
Iter = 2699 ; Dt = 0.0081s ; Time = 18.78s ; ETA = 0.32s
Iter = 2749 ; Dt = 0.0081s ; Time = 19.19s ; ETA = 0.21s
Iter = 2800 ; Dt = 0.0077s ; Time = 19.60s ; ETA = 0.11s
Iter = 2854 ; Dt = 0.0022s ; Time = 20.00s ; ETA = 0.00s
===================================================================
| END |
===================================================================
Problem.solve() completed in 7.007403135299683s (wall time)
Total running time of the script: ( 0 minutes 9.012 seconds)