# M2 Internship

"Simulation of the breaking wave flow which generated the 50T concrete block
displacement at the Artha breakwater on February 28, 2017"

[Report](https://kalliope.edgarpierre.fr/latex/m2cce/internship/report.pdf)

## Configuration

Each part can be run in their respective directories.
```
$  python -m processing.swash -h
usage: swash.py [-h] [-v] [-c CONFIG]

Run swash model

options:
  -h, --help            show this help message and exit
  -v, --verbose
  -c CONFIG, --config CONFIG
```

## Bathymetry

Configuration:
```
[inp]
root: input directory
base: bathymetry database (.xyz) -- not provided in this repository
hires: 1d hires smoothed breakwater profile (.dat)
hstru: 1d hires smoothed breakwater porosity height (.dat)
poro: 1d breakwater porosity (.dat)
psize: 1d porosity size (.dat)
hires_step: mesh sizing of 1d profile

[out]
margin: margin around the buoy and breakwater for subdomain
no_breakwater: option to remove breakwater
root: output directory
sub: output file for subdomain
out: output file for 1d projection
step: mesh size
left: margin for 1d projection (breakwater side)
right: margin for 1d projection (buoy side)

[artha]
lat: latitude of the breakwater
lon: longitude of the breakwater

[buoy]
lat: latitude of the buoy
lon: longitude of the buoy
```

* Insert database in `data/data`
* Run `processing.subdomain` to generate 2D data in a smaller domain
* Run `processing.projection` to generate a 1D bathymetry

## Swash

Configuration:
```
[data]
out: input directory (output of bathymetry)

[swash]
input: swash input file (.sws)
path: path to swash directory (should contain swashrun and swash.exe)
out: output directory for swash (created at the end of the computation)
mpi: number of mpi threads (omit to use serial)

[post]
inp: input directory for post-processing (output of sws_npz)
compare: input directory for post-processing comparison (omit to display results from single case)
out: output directory for figures
x0: position of reflection calculations
t0: minimum time for reflection calculations (necessary because of boundary condition ramping)
```

* Run `processing.swash` to run the Swash model
* Run `processing.sws_npz` to convert Swash output to Numpy files
* Run `processing.post` to plot wave height at a point, water level at an
	instant, reflection coefficient at a point
* Run `processing.animate` to plot an animation of water level
* Run `processing.layers` to plot an animation of layers with flow velocity

## OlaFlow

Configuration:
```
[swash]
np_out: input of olaflow from swash (output of sws_npz)

[bathy]
bathy: bathymetry to be used by olaflow
hstru: height of porous domain (see bathy)
scale: openscad scaling (mesh sizing in [x,y,z])
out: output folder for stl bathymetry

[olaflow]
root: olaflow computation directory
```

* Run `processing.bathy` to generate stl input files
* Run `run_ola.sh` to run OlaFlow model
