Batch

In this tutorial batch run is illustrated. River example is used as a basis for this tutorial.

import matplotlib.pyplot as plt
import numpy as np
import freshkiss3d as fk

Cases definition:

First of all cases need to be defined:

cases = [3, 6, 9]

PHY_PARAMS={'friction_law':'Navier',
            'friction_coeff':1.,
            'horizontal_viscosity':0.1,
            'vertical_viscosity':0.1}

For any Problem input class we want to modify between cases, a list is created:

simutime_l = []
layer_l = []
primitives_l = []
friction_l = []
viscosity_l = []
problem_l = []

triangular_mesh = fk.TriangularMesh.from_msh_file('../simulations/inputs/simple_canal.msh')

Boundary conditions are statically defined in this example but they could have been changed as well.

fluvial_flowrates = [fk.FluvialFlowRate(ref=1,
                                  flowrate=5.,
                                  x_flux_direction=1.0,
                                  y_flux_direction=0.0)]
fluvial_heights = [fk.FluvialHeight(ref=2, height=2.)]
slide = [fk.Slide(ref=3), fk.Slide(ref=4)]

Resolution:

We loop over cases:

for C, NL in enumerate(cases):

    print(" ")
    print(" ")
    print("                         SOLVING CASE {}                 ".format(C))
    print(" ")
    print(" ")

    simutime_l.append(fk.SimuTime(final_time=1., time_iteration_max=100000))

    layer_l.append(fk.Layer(NL, triangular_mesh, topography=0.))

    primitives_l.append(fk.Primitive(triangular_mesh, layer_l[C],
                                     free_surface=2.,
                                     QXinit=1.))

    problem_l.append(fk.Problem(simutime=simutime_l[C],
                                triangular_mesh=triangular_mesh,
                                layer=layer_l[C],
                                primitives=primitives_l[C],
                                physical_parameters=PHY_PARAMS,
                                slides=slide,
                                fluvial_flowrates=fluvial_flowrates,
                                fluvial_heights=fluvial_heights))
    problem_l[C].solve()
                         SOLVING CASE 0


===================================================================
|                          INITIALIZATION                         |
===================================================================
Problem size: Nodes=625, Layers=3, Triangles=1042,
Iter =        0 ; Dt = 0.0000s ; Time =     0.00s ; ETA =     0.00s
===================================================================
|                            TIME LOOP                            |
===================================================================
Iter =       10 ; Dt = 0.0021s ; Time =     0.02s ; ETA =     1.12s
Iter =       20 ; Dt = 0.0021s ; Time =     0.04s ; ETA =     1.14s
Iter =       29 ; Dt = 0.0022s ; Time =     0.06s ; ETA =     1.10s
Iter =       38 ; Dt = 0.0022s ; Time =     0.08s ; ETA =     1.05s
Iter =       48 ; Dt = 0.0022s ; Time =     0.10s ; ETA =     1.02s
Iter =       57 ; Dt = 0.0022s ; Time =     0.12s ; ETA =     1.02s
Iter =       67 ; Dt = 0.0022s ; Time =     0.14s ; ETA =     1.01s
Iter =       76 ; Dt = 0.0022s ; Time =     0.16s ; ETA =     0.97s
Iter =       86 ; Dt = 0.0022s ; Time =     0.19s ; ETA =     0.93s
Iter =       95 ; Dt = 0.0022s ; Time =     0.20s ; ETA =     0.93s
Iter =      105 ; Dt = 0.0022s ; Time =     0.23s ; ETA =     0.89s
Iter =      114 ; Dt = 0.0022s ; Time =     0.25s ; ETA =     0.88s
Iter =      124 ; Dt = 0.0021s ; Time =     0.27s ; ETA =     0.85s
Iter =      133 ; Dt = 0.0021s ; Time =     0.29s ; ETA =     0.83s
Iter =      143 ; Dt = 0.0021s ; Time =     0.31s ; ETA =     0.81s
Iter =      152 ; Dt = 0.0021s ; Time =     0.33s ; ETA =     0.77s
Iter =      162 ; Dt = 0.0021s ; Time =     0.35s ; ETA =     0.75s
Iter =      171 ; Dt = 0.0021s ; Time =     0.37s ; ETA =     0.73s
Iter =      181 ; Dt = 0.0021s ; Time =     0.39s ; ETA =     0.73s
Iter =      190 ; Dt = 0.0021s ; Time =     0.41s ; ETA =     0.68s
Iter =      200 ; Dt = 0.0021s ; Time =     0.43s ; ETA =     0.66s
Iter =      209 ; Dt = 0.0021s ; Time =     0.45s ; ETA =     0.64s
Iter =      219 ; Dt = 0.0021s ; Time =     0.47s ; ETA =     0.60s
Iter =      228 ; Dt = 0.0021s ; Time =     0.49s ; ETA =     0.60s
Iter =      238 ; Dt = 0.0021s ; Time =     0.51s ; ETA =     0.57s
Iter =      247 ; Dt = 0.0021s ; Time =     0.53s ; ETA =     0.54s
Iter =      257 ; Dt = 0.0021s ; Time =     0.55s ; ETA =     0.52s
Iter =      267 ; Dt = 0.0021s ; Time =     0.57s ; ETA =     0.49s
Iter =      276 ; Dt = 0.0021s ; Time =     0.59s ; ETA =     0.48s
Iter =      286 ; Dt = 0.0021s ; Time =     0.61s ; ETA =     0.46s
Iter =      295 ; Dt = 0.0021s ; Time =     0.63s ; ETA =     0.43s
Iter =      305 ; Dt = 0.0021s ; Time =     0.65s ; ETA =     0.40s
Iter =      314 ; Dt = 0.0021s ; Time =     0.67s ; ETA =     0.37s
Iter =      324 ; Dt = 0.0021s ; Time =     0.70s ; ETA =     0.35s
Iter =      333 ; Dt = 0.0021s ; Time =     0.71s ; ETA =     0.33s
Iter =      343 ; Dt = 0.0021s ; Time =     0.74s ; ETA =     0.31s
Iter =      353 ; Dt = 0.0021s ; Time =     0.76s ; ETA =     0.29s
Iter =      362 ; Dt = 0.0021s ; Time =     0.78s ; ETA =     0.27s
Iter =      372 ; Dt = 0.0021s ; Time =     0.80s ; ETA =     0.24s
Iter =      381 ; Dt = 0.0021s ; Time =     0.82s ; ETA =     0.22s
Iter =      391 ; Dt = 0.0021s ; Time =     0.84s ; ETA =     0.19s
Iter =      401 ; Dt = 0.0021s ; Time =     0.86s ; ETA =     0.17s
Iter =      410 ; Dt = 0.0021s ; Time =     0.88s ; ETA =     0.14s
Iter =      420 ; Dt = 0.0021s ; Time =     0.90s ; ETA =     0.12s
Iter =      429 ; Dt = 0.0021s ; Time =     0.92s ; ETA =     0.10s
Iter =      439 ; Dt = 0.0021s ; Time =     0.94s ; ETA =     0.07s
Iter =      449 ; Dt = 0.0021s ; Time =     0.96s ; ETA =     0.05s
Iter =      458 ; Dt = 0.0021s ; Time =     0.98s ; ETA =     0.02s
Iter =      468 ; Dt = 0.0006s ; Time =     1.00s ; ETA =     0.00s
===================================================================
|                               END                               |
===================================================================
Problem.solve() completed in 1.1766862869262695s (wall time)


                         SOLVING CASE 1


===================================================================
|                          INITIALIZATION                         |
===================================================================
Problem size: Nodes=625, Layers=6, Triangles=1042,
Iter =        0 ; Dt = 0.0000s ; Time =     0.00s ; ETA =     0.00s
===================================================================
|                            TIME LOOP                            |
===================================================================
Iter =       10 ; Dt = 0.0021s ; Time =     0.02s ; ETA =     1.63s
Iter =       20 ; Dt = 0.0021s ; Time =     0.04s ; ETA =     1.56s
Iter =       30 ; Dt = 0.0021s ; Time =     0.06s ; ETA =     1.52s
Iter =       39 ; Dt = 0.0021s ; Time =     0.08s ; ETA =     1.49s
Iter =       49 ; Dt = 0.0021s ; Time =     0.10s ; ETA =     1.45s
Iter =       58 ; Dt = 0.0021s ; Time =     0.12s ; ETA =     1.42s
Iter =       68 ; Dt = 0.0021s ; Time =     0.14s ; ETA =     1.39s
Iter =       78 ; Dt = 0.0021s ; Time =     0.17s ; ETA =     1.38s
Iter =       87 ; Dt = 0.0021s ; Time =     0.18s ; ETA =     1.32s
Iter =       97 ; Dt = 0.0021s ; Time =     0.21s ; ETA =     1.29s
Iter =      106 ; Dt = 0.0021s ; Time =     0.23s ; ETA =     1.25s
Iter =      116 ; Dt = 0.0021s ; Time =     0.25s ; ETA =     1.22s
Iter =      125 ; Dt = 0.0021s ; Time =     0.27s ; ETA =     1.17s
Iter =      135 ; Dt = 0.0021s ; Time =     0.29s ; ETA =     1.16s
Iter =      145 ; Dt = 0.0021s ; Time =     0.31s ; ETA =     1.13s
Iter =      154 ; Dt = 0.0021s ; Time =     0.33s ; ETA =     1.11s
Iter =      164 ; Dt = 0.0021s ; Time =     0.35s ; ETA =     1.08s
Iter =      173 ; Dt = 0.0021s ; Time =     0.37s ; ETA =     1.03s
Iter =      183 ; Dt = 0.0021s ; Time =     0.39s ; ETA =     1.00s
Iter =      193 ; Dt = 0.0021s ; Time =     0.41s ; ETA =     0.96s
Iter =      202 ; Dt = 0.0021s ; Time =     0.43s ; ETA =     0.94s
Iter =      212 ; Dt = 0.0021s ; Time =     0.45s ; ETA =     0.90s
Iter =      221 ; Dt = 0.0021s ; Time =     0.47s ; ETA =     0.90s
Iter =      231 ; Dt = 0.0021s ; Time =     0.49s ; ETA =     0.84s
Iter =      241 ; Dt = 0.0021s ; Time =     0.51s ; ETA =     0.82s
Iter =      250 ; Dt = 0.0021s ; Time =     0.53s ; ETA =     0.78s
Iter =      260 ; Dt = 0.0021s ; Time =     0.55s ; ETA =     0.74s
Iter =      270 ; Dt = 0.0021s ; Time =     0.57s ; ETA =     0.73s
Iter =      279 ; Dt = 0.0021s ; Time =     0.59s ; ETA =     0.68s
Iter =      289 ; Dt = 0.0021s ; Time =     0.61s ; ETA =     0.65s
Iter =      298 ; Dt = 0.0021s ; Time =     0.63s ; ETA =     0.62s
Iter =      308 ; Dt = 0.0021s ; Time =     0.65s ; ETA =     0.58s
Iter =      318 ; Dt = 0.0021s ; Time =     0.68s ; ETA =     0.56s
Iter =      327 ; Dt = 0.0021s ; Time =     0.69s ; ETA =     0.51s
Iter =      337 ; Dt = 0.0021s ; Time =     0.72s ; ETA =     0.47s
Iter =      347 ; Dt = 0.0021s ; Time =     0.74s ; ETA =     0.45s
Iter =      356 ; Dt = 0.0021s ; Time =     0.76s ; ETA =     0.41s
Iter =      366 ; Dt = 0.0021s ; Time =     0.78s ; ETA =     0.37s
Iter =      376 ; Dt = 0.0021s ; Time =     0.80s ; ETA =     0.34s
Iter =      385 ; Dt = 0.0021s ; Time =     0.82s ; ETA =     0.30s
Iter =      395 ; Dt = 0.0021s ; Time =     0.84s ; ETA =     0.27s
Iter =      405 ; Dt = 0.0021s ; Time =     0.86s ; ETA =     0.24s
Iter =      414 ; Dt = 0.0021s ; Time =     0.88s ; ETA =     0.20s
Iter =      424 ; Dt = 0.0021s ; Time =     0.90s ; ETA =     0.17s
Iter =      434 ; Dt = 0.0021s ; Time =     0.92s ; ETA =     0.14s
Iter =      443 ; Dt = 0.0021s ; Time =     0.94s ; ETA =     0.10s
Iter =      453 ; Dt = 0.0021s ; Time =     0.96s ; ETA =     0.07s
Iter =      463 ; Dt = 0.0021s ; Time =     0.98s ; ETA =     0.03s
Iter =      473 ; Dt = 0.0001s ; Time =     1.00s ; ETA =     0.00s
===================================================================
|                               END                               |
===================================================================
Problem.solve() completed in 1.674788475036621s (wall time)


                         SOLVING CASE 2


===================================================================
|                          INITIALIZATION                         |
===================================================================
Problem size: Nodes=625, Layers=9, Triangles=1042,
Iter =        0 ; Dt = 0.0000s ; Time =     0.00s ; ETA =     0.00s
===================================================================
|                            TIME LOOP                            |
===================================================================
Iter =       12 ; Dt = 0.0018s ; Time =     0.02s ; ETA =     2.44s
Iter =       23 ; Dt = 0.0019s ; Time =     0.04s ; ETA =     2.25s
Iter =       33 ; Dt = 0.0019s ; Time =     0.06s ; ETA =     2.17s
Iter =       44 ; Dt = 0.0019s ; Time =     0.08s ; ETA =     2.21s
Iter =       55 ; Dt = 0.0019s ; Time =     0.10s ; ETA =     2.13s
Iter =       66 ; Dt = 0.0019s ; Time =     0.12s ; ETA =     2.08s
Iter =       77 ; Dt = 0.0019s ; Time =     0.14s ; ETA =     2.04s
Iter =       88 ; Dt = 0.0019s ; Time =     0.16s ; ETA =     2.03s
Iter =       99 ; Dt = 0.0019s ; Time =     0.19s ; ETA =     1.93s
Iter =      110 ; Dt = 0.0019s ; Time =     0.21s ; ETA =     1.87s
Iter =      120 ; Dt = 0.0019s ; Time =     0.23s ; ETA =     1.83s
Iter =      131 ; Dt = 0.0019s ; Time =     0.25s ; ETA =     1.75s
Iter =      141 ; Dt = 0.0019s ; Time =     0.27s ; ETA =     1.73s
Iter =      152 ; Dt = 0.0019s ; Time =     0.29s ; ETA =     1.65s
Iter =      162 ; Dt = 0.0019s ; Time =     0.31s ; ETA =     1.67s
Iter =      173 ; Dt = 0.0019s ; Time =     0.33s ; ETA =     1.55s
Iter =      183 ; Dt = 0.0019s ; Time =     0.35s ; ETA =     1.51s
Iter =      194 ; Dt = 0.0020s ; Time =     0.37s ; ETA =     1.44s
Iter =      204 ; Dt = 0.0020s ; Time =     0.39s ; ETA =     1.41s
Iter =      215 ; Dt = 0.0020s ; Time =     0.41s ; ETA =     1.36s
Iter =      225 ; Dt = 0.0020s ; Time =     0.43s ; ETA =     1.31s
Iter =      236 ; Dt = 0.0020s ; Time =     0.45s ; ETA =     1.27s
Iter =      246 ; Dt = 0.0020s ; Time =     0.47s ; ETA =     1.18s
Iter =      256 ; Dt = 0.0020s ; Time =     0.49s ; ETA =     1.16s
Iter =      267 ; Dt = 0.0020s ; Time =     0.51s ; ETA =     1.10s
Iter =      277 ; Dt = 0.0020s ; Time =     0.53s ; ETA =     1.04s
Iter =      287 ; Dt = 0.0020s ; Time =     0.55s ; ETA =     0.99s
Iter =      297 ; Dt = 0.0020s ; Time =     0.57s ; ETA =     0.96s
Iter =      308 ; Dt = 0.0020s ; Time =     0.59s ; ETA =     0.90s
Iter =      318 ; Dt = 0.0020s ; Time =     0.61s ; ETA =     0.88s
Iter =      328 ; Dt = 0.0020s ; Time =     0.63s ; ETA =     0.79s
Iter =      338 ; Dt = 0.0020s ; Time =     0.65s ; ETA =     0.78s
Iter =      348 ; Dt = 0.0020s ; Time =     0.67s ; ETA =     0.73s
Iter =      358 ; Dt = 0.0020s ; Time =     0.69s ; ETA =     0.68s
Iter =      368 ; Dt = 0.0020s ; Time =     0.71s ; ETA =     0.63s
Iter =      378 ; Dt = 0.0020s ; Time =     0.74s ; ETA =     0.60s
Iter =      388 ; Dt = 0.0020s ; Time =     0.76s ; ETA =     0.54s
Iter =      398 ; Dt = 0.0020s ; Time =     0.78s ; ETA =     0.49s
Iter =      408 ; Dt = 0.0020s ; Time =     0.80s ; ETA =     0.44s
Iter =      418 ; Dt = 0.0020s ; Time =     0.82s ; ETA =     0.40s
Iter =      428 ; Dt = 0.0020s ; Time =     0.84s ; ETA =     0.35s
Iter =      438 ; Dt = 0.0020s ; Time =     0.86s ; ETA =     0.32s
Iter =      448 ; Dt = 0.0020s ; Time =     0.88s ; ETA =     0.26s
Iter =      458 ; Dt = 0.0020s ; Time =     0.90s ; ETA =     0.23s
Iter =      468 ; Dt = 0.0020s ; Time =     0.92s ; ETA =     0.18s
Iter =      478 ; Dt = 0.0020s ; Time =     0.94s ; ETA =     0.13s
Iter =      488 ; Dt = 0.0020s ; Time =     0.96s ; ETA =     0.09s
Iter =      498 ; Dt = 0.0020s ; Time =     0.98s ; ETA =     0.04s
Iter =      508 ; Dt = 0.0017s ; Time =     1.00s ; ETA =     0.00s
===================================================================
|                               END                               |
===================================================================
Problem.solve() completed in 2.283092737197876s (wall time)

Plot velocity profile:

cell = 233 #Middle domain
u = np.zeros((NL))
z = np.zeros((NL))

plt.rcParams["figure.figsize"] = [8, 6]
fig = plt.figure()
ax = fig.add_subplot(111)

colors = ['blue', 'red', 'green', 'purple']
markers = ['s', '*', 'o', 'v']

for C, NL in enumerate(cases):
    for L in range(NL):
        u[L] = problem_l[C].primitives.U[cell, L]
        z[L] = 0.5*(2.0/NL) + L*(2.0/NL)

    fig = ax.plot(u[0:NL], z[0:NL], color=colors[C], marker=markers[C],
                  label='NL = {}'.format(NL))
    ax.set_title("Velocity profile in x = {}"
                  .format(triangular_mesh.triangulation.x[cell]))

ax.set_xlabel('U (m/s)')
ax.set_ylabel('z (m)')
plt.legend(loc=2)
plt.grid()
plt.show()
Velocity profile in x = 12.4793

Note

In this example only NL have been changed for each case but any Problem input could been changed as well (mesh, intialization, simutime, etc…).

Total running time of the script: ( 0 minutes 5.278 seconds)

Gallery generated by Sphinx-Gallery