From 8aaf34fdf0f6f4e221ba43090c1b5a50b54b920c Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Mon, 24 May 2021 20:28:44 +0200 Subject: [PATCH 01/55] Rectify incorrect parallel run command in partitioned-heat-conduction --- partitioned-heat-conduction/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/partitioned-heat-conduction/README.md b/partitioned-heat-conduction/README.md index 6929d0d7c..9b12a7a72 100644 --- a/partitioned-heat-conduction/README.md +++ b/partitioned-heat-conduction/README.md @@ -53,7 +53,7 @@ cd fenics If you want to use Nutils for one or both sides of the setup, just `cd nutils`. The FEniCS case also supports parallel runs. Here, you cannot use the `run.sh` script, but must simply execute ```bash -mpirun -n heat.py -d +mpirun -n python3 heat.py -d ``` ### Note on the combination of Nutils & FEniCS From 730f69c98bdc5fb266a2b1fed7a8d6d463e1703f Mon Sep 17 00:00:00 2001 From: David Schneider Date: Tue, 1 Jun 2021 07:41:03 +0200 Subject: [PATCH 02/55] Clarify perpendicular-flap deal.II documentation (#215) --- perpendicular-flap/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/perpendicular-flap/README.md b/perpendicular-flap/README.md index 79e146449..6eef8a2ca 100644 --- a/perpendicular-flap/README.md +++ b/perpendicular-flap/README.md @@ -31,7 +31,7 @@ Solid participant: * CalculiX. In order to allow a reasonable comparison to all solid codes, the geometrically non-linear solver has been disabled and only a linear model is used by default. For more information, have a look at the [CalculiX adapter documentation](https://www.precice.org/adapter-calculix-overview.html) -* deal.II. This tutorial works only with `Model = linear` since the deal.II codes were developed with read data `Stress` instead of `Force` as applied here (example given in Turek-Hron-FSI) in the first place. The `./run.sh` script takes the compiled executable `elasticity` as input argument (`run.sh -e=/path/to/elasticity`) and is required in case the executable is not discoverable at runtime (e.g. has been added to the system `PATH`). For more information, have a look at the [deal.II adapter documentation](https://www.precice.org/adapter-dealii-overview.html). +* deal.II. For compatibility reasons, the solver reads `Force` data from other `Fluid` participants. Reading and applying `Force` data is currently only implemented in the linear elastic solid model (`Model = linear` in the parameter file). Thus, the default simulation setup is only compatible with the linear elastic solid model. If you want to apply the non-linear solid model, please use `Stress` data for your read data, which is supported by the OpenFOAM adapter as well (example given in Turek-Hron-FSI). The `./run.sh` script takes the compiled executable `elasticity` as input argument (`run.sh -e=/path/to/elasticity`) and is required in case the executable is not discoverable at runtime (e.g. has been added to the system `PATH`). For more information, have a look at the [deal.II adapter documentation](https://www.precice.org/adapter-dealii-overview.html). ## Running the Simulation From d2c70c09e6ae50c2a586edfe9008730902ebb980 Mon Sep 17 00:00:00 2001 From: David Schneider Date: Wed, 2 Jun 2021 17:03:50 +0200 Subject: [PATCH 03/55] Throw error in fenics and nutils run script if no argument was provided (#216) --- partitioned-heat-conduction/fenics/run.sh | 12 ++++++++++-- partitioned-heat-conduction/nutils/run.sh | 11 +++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/partitioned-heat-conduction/fenics/run.sh b/partitioned-heat-conduction/fenics/run.sh index e31f07a10..e51fb750b 100755 --- a/partitioned-heat-conduction/fenics/run.sh +++ b/partitioned-heat-conduction/fenics/run.sh @@ -1,6 +1,14 @@ #!/bin/sh set -e -u +usage() { echo "Usage: cmd [-d] [-n]" 1>&2; exit 1; } + +# Check if no input argument was provided +if [ -z "$*" ] ; then + usage +fi + +# Select appropriate case while getopts ":dn" opt; do case ${opt} in d) @@ -9,8 +17,8 @@ while getopts ":dn" opt; do n) python3 heat.py -n --error-tol 10e-3 ;; - \?) - echo "Usage: cmd [-d] [-n]" + *) + usage ;; esac done diff --git a/partitioned-heat-conduction/nutils/run.sh b/partitioned-heat-conduction/nutils/run.sh index 43e97b70f..b3048a04f 100755 --- a/partitioned-heat-conduction/nutils/run.sh +++ b/partitioned-heat-conduction/nutils/run.sh @@ -1,6 +1,13 @@ #!/bin/sh set -e -u +usage() { echo "Usage: cmd [-d] [-n]" 1>&2; exit 1; } + +# Check if no input argument was provided +if [ -z "$*" ] ; then + usage +fi + while getopts ":dn" opt; do case ${opt} in d) @@ -11,8 +18,8 @@ while getopts ":dn" opt; do rm -rf Neumann-*.vtk python3 heat.py --side=Neumann ;; - \?) - echo "Usage: cmd [-d] [-n]" + *) + usage ;; esac done From 5470dd0d99bd63d5b7d8564bcfc471c7e978c822 Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Tue, 22 Jun 2021 14:08:09 +0200 Subject: [PATCH 04/55] Remove solid-fenics/Solid/ folder, closes #221 --- tools/cleaning-tools.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cleaning-tools.sh b/tools/cleaning-tools.sh index 6908bf3cf..3f326f6ec 100755 --- a/tools/cleaning-tools.sh +++ b/tools/cleaning-tools.sh @@ -73,7 +73,7 @@ clean_fenics() { set -e -u cd "$1" echo "--- Cleaning up FEniCS case in $(pwd)" - rm -fv ./*.pvd spooles.out FSI-S/* + rm -fv ./*.pvd spooles.out Solid/FSI-S/* rm -rfv ./out/ rm -rfv ./preCICE-output/ clean_precice_logs . From 958cbf73b47ee6fc5318753fc229e23c7926b42b Mon Sep 17 00:00:00 2001 From: Benjamin Rodenberg Date: Mon, 5 Jul 2021 06:46:04 +0200 Subject: [PATCH 05/55] New tutorial: Volume coupled diffusion (#219) Co-authored-by: Ishaan Desai Co-authored-by: Benjamin Uekermann --- volume-coupled-diffusion/README.md | 41 ++++++ volume-coupled-diffusion/clean-tutorial.sh | 1 + volume-coupled-diffusion/fenics/.gitignore | 4 + volume-coupled-diffusion/fenics/clean.sh | 6 + .../fenics/precice-adapter-config-drain.json | 9 ++ .../fenics/precice-adapter-config-source.json | 9 ++ volume-coupled-diffusion/fenics/run.sh | 24 ++++ .../fenics/volume-coupled-diffusion.py | 131 ++++++++++++++++++ ...torials-volume-coupled-diffusion-setup.png | Bin 0 -> 100857 bytes volume-coupled-diffusion/precice-config.xml | 61 ++++++++ 10 files changed, 286 insertions(+) create mode 100644 volume-coupled-diffusion/README.md create mode 120000 volume-coupled-diffusion/clean-tutorial.sh create mode 100644 volume-coupled-diffusion/fenics/.gitignore create mode 100755 volume-coupled-diffusion/fenics/clean.sh create mode 100644 volume-coupled-diffusion/fenics/precice-adapter-config-drain.json create mode 100644 volume-coupled-diffusion/fenics/precice-adapter-config-source.json create mode 100755 volume-coupled-diffusion/fenics/run.sh create mode 100644 volume-coupled-diffusion/fenics/volume-coupled-diffusion.py create mode 100644 volume-coupled-diffusion/images/tutorials-volume-coupled-diffusion-setup.png create mode 100644 volume-coupled-diffusion/precice-config.xml diff --git a/volume-coupled-diffusion/README.md b/volume-coupled-diffusion/README.md new file mode 100644 index 000000000..8ec442c76 --- /dev/null +++ b/volume-coupled-diffusion/README.md @@ -0,0 +1,41 @@ +--- +title: Volume coupled diffusion +permalink: tutorials-volume-coupled-diffusion.html +keywords: FEniCS, Diffusion, Volume Coupling +summary: This tutorial illustrates volume coupling with a simple example. +--- + +{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/develop/volume-coupled-diffusion). Read how in the [tutorials introduction](https://www.precice.org/tutorials.html)." %} + +## Setup + +This case illustrates how to implement volume coupling in a simple toy problem. Two diffusion problems are coupled via volume terms. One domain (the source) has constant non-zero Dirichlet boundary conditions. The other domain (the drain) has Neumann boundary conditions and a zero Dirichlet boundary condition at the right edge of the domain. The quantity u flows from the source to the drain. + +![Case setup of volume-coupled-diffusion case](images/tutorials-volume-coupled-diffusion-setup.png) + +## Available solvers and dependencies + +* FEniCS. Install [FEniCS](https://fenicsproject.org/download/) and the [FEniCS-adapter](https://github.com/precice/fenics-adapter). Additionally, you will need to have preCICE and the python bindings installed on your system. + +## Running the simulation + +This tutorial is for FEniCS. You can find the corresponding `run.sh` script in the folder `fenics`. + +To choose whether you want to run the source or the drain solver, please provide the following command line input: + +* `-s` flag will create a source. +* `-d` flag will create a drain. + +For running the case, open two terminals run: + +```bash +cd fenics +./run.sh -s +``` + +and + +```bash +cd fenics +./run.sh -d +``` diff --git a/volume-coupled-diffusion/clean-tutorial.sh b/volume-coupled-diffusion/clean-tutorial.sh new file mode 120000 index 000000000..4713f5092 --- /dev/null +++ b/volume-coupled-diffusion/clean-tutorial.sh @@ -0,0 +1 @@ +../tools/clean-tutorial-base.sh \ No newline at end of file diff --git a/volume-coupled-diffusion/fenics/.gitignore b/volume-coupled-diffusion/fenics/.gitignore new file mode 100644 index 000000000..1c6ed0137 --- /dev/null +++ b/volume-coupled-diffusion/fenics/.gitignore @@ -0,0 +1,4 @@ +venv +*.pyc +*.log +out diff --git a/volume-coupled-diffusion/fenics/clean.sh b/volume-coupled-diffusion/fenics/clean.sh new file mode 100755 index 000000000..3a8b4619d --- /dev/null +++ b/volume-coupled-diffusion/fenics/clean.sh @@ -0,0 +1,6 @@ +#!/bin/sh +set -e -u + +. ../../tools/cleaning-tools.sh + +clean_fenics . diff --git a/volume-coupled-diffusion/fenics/precice-adapter-config-drain.json b/volume-coupled-diffusion/fenics/precice-adapter-config-drain.json new file mode 100644 index 000000000..a8a643e48 --- /dev/null +++ b/volume-coupled-diffusion/fenics/precice-adapter-config-drain.json @@ -0,0 +1,9 @@ +{ + "participant_name": "Drain", + "config_file_name": "../precice-config.xml", + "interface": { + "coupling_mesh_name": "Drain-Mesh", + "write_data_name": "Drain-Data", + "read_data_name": "Source-Data" + } +} diff --git a/volume-coupled-diffusion/fenics/precice-adapter-config-source.json b/volume-coupled-diffusion/fenics/precice-adapter-config-source.json new file mode 100644 index 000000000..04a0bce06 --- /dev/null +++ b/volume-coupled-diffusion/fenics/precice-adapter-config-source.json @@ -0,0 +1,9 @@ +{ + "participant_name": "Source", + "config_file_name": "../precice-config.xml", + "interface": { + "coupling_mesh_name": "Source-Mesh", + "write_data_name": "Source-Data", + "read_data_name": "Drain-Data" + } +} diff --git a/volume-coupled-diffusion/fenics/run.sh b/volume-coupled-diffusion/fenics/run.sh new file mode 100755 index 000000000..d15dd2163 --- /dev/null +++ b/volume-coupled-diffusion/fenics/run.sh @@ -0,0 +1,24 @@ +#!/bin/sh +set -e -u + +usage() { echo "Usage: cmd [-s] [-d]" 1>&2; exit 1; } + +# Check if no input argument was provided +if [ -z "$*" ] ; then + usage +fi + +# Select appropriate case +while getopts ":sd" opt; do + case ${opt} in + s) + python3 volume-coupled-diffusion.py --source + ;; + d) + python3 volume-coupled-diffusion.py --drain + ;; + *) + usage + ;; + esac +done diff --git a/volume-coupled-diffusion/fenics/volume-coupled-diffusion.py b/volume-coupled-diffusion/fenics/volume-coupled-diffusion.py new file mode 100644 index 000000000..d95d9fc66 --- /dev/null +++ b/volume-coupled-diffusion/fenics/volume-coupled-diffusion.py @@ -0,0 +1,131 @@ +from fenics import Function, FunctionSpace, Expression, Constant, DirichletBC, TrialFunction, TestFunction, File, \ + solve, lhs, rhs, dx, UnitSquareMesh, SubDomain, inner, grad, MeshFunction, MPI, interpolate +from fenicsprecice import Adapter +import numpy as np +import argparse + + +class AllDomain(SubDomain): + def inside(self, x, on_boundary): + return True + + +class AllBoundary(SubDomain): + def inside(self, x, on_boundary): + return on_boundary + + +class RightBoundary(SubDomain): + def inside(self, x, on_boundary): + return on_boundary and x[0] == 1 + + +parser = argparse.ArgumentParser(description="Solving a volume coupled problem") +command_group = parser.add_mutually_exclusive_group(required=True) +command_group.add_argument("-s", "--source", help="create a source", dest="source", action="store_true") +command_group.add_argument("-d", "--drain", help="create a drain", dest="drain", action="store_true") +args = parser.parse_args() + +if args.source: + precice = Adapter(adapter_config_filename="precice-adapter-config-source.json") +elif args.drain: + precice = Adapter(adapter_config_filename="precice-adapter-config-drain.json") + +mesh = UnitSquareMesh(10, 10) +V = FunctionSpace(mesh, "P", 1) + +u = TrialFunction(V) +v = TestFunction(V) +u_n = Function(V) +if args.source: + u_ini = Expression("1", degree=1) + bc = DirichletBC(V, u_ini, AllBoundary()) +elif args.drain: + u_ini = Expression("0", degree=1) + bc = DirichletBC(V, u_ini, RightBoundary()) + + +u_n = interpolate(u_ini, V) + + +dt = precice.initialize(AllDomain(), read_function_space=V, write_object=u_n) +volume_term = precice.create_coupling_expression() +f = Function(V) + + +dt_inv = Constant(1 / dt) + +diffusion_source = 1 +diffusion_drain = 1 +if args.source: + F = dt_inv * (u - u_n) * v * dx - (f - u_ini) * v * dx + diffusion_source * inner(grad(u), grad(v)) * dx +elif args.drain: + F = dt_inv * (u - u_n) * v * dx - (f - u) * v * dx + diffusion_drain * inner(grad(u), grad(v)) * dx + +# Time-stepping +u_np1 = Function(V) +if args.source: + u_n.rename("Source-Data", "") + u_np1.rename("Source-Data", "") +elif args.drain: + u_n.rename("Drain-Data", "") + u_np1.rename("Drain-Data", "") + +t = 0 + +mesh_rank = MeshFunction("size_t", mesh, mesh.topology().dim()) +if args.source: + mesh_rank.set_all(MPI.rank(MPI.comm_world) + 4) +else: + mesh_rank.set_all(MPI.rank(MPI.comm_world) + 0) +mesh_rank.rename("myRank", "") + +# Generating output files +solution_out = File("out/%s.pvd" % precice.get_participant_name()) +ranks = File("out/ranks%s.pvd" % precice.get_participant_name()) + +# output solution and reference solution at t=0, n=0 +n = 0 +print('output u^%d and u_ref^%d' % (n, n)) +solution_out << u_n +ranks << mesh_rank + +while precice.is_coupling_ongoing(): + + # write checkpoint + if precice.is_action_required(precice.action_write_iteration_checkpoint()): + precice.store_checkpoint(u_n, t, n) + + read_data = precice.read_data() + + # Update the coupling expression with the new read data + precice.update_coupling_expression(volume_term, read_data) + f.assign(interpolate(volume_term, V)) + + dt_inv.assign(1 / dt) + + # Compute solution u^n+1, use bcs u^n and coupling bcs + a, L = lhs(F), rhs(F) + solve(a == L, u_np1, bc) + + # Write data to preCICE according to which problem is being solved + precice.write_data(u_np1) + + dt = precice.advance(dt) + + # roll back to checkpoint + if precice.is_action_required(precice.action_read_iteration_checkpoint()): + u_cp, t_cp, n_cp = precice.retrieve_checkpoint() + u_n.assign(u_cp) + t = t_cp + n = n_cp + else: # update solution + u_n.assign(u_np1) + t += float(dt) + n += 1 + + if precice.is_time_window_complete(): + solution_out << u_n + +# Hold plot +precice.finalize() diff --git a/volume-coupled-diffusion/images/tutorials-volume-coupled-diffusion-setup.png b/volume-coupled-diffusion/images/tutorials-volume-coupled-diffusion-setup.png new file mode 100644 index 0000000000000000000000000000000000000000..145d6282e9fb2ad99b7f007ef7a36250a3a6b247 GIT binary patch literal 100857 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 SyNvHn#>~X}Qn}I9yZ;ZcZ-~DD literal 0 HcmV?d00001 diff --git a/volume-coupled-diffusion/precice-config.xml b/volume-coupled-diffusion/precice-config.xml new file mode 100644 index 000000000..a8c7b7a6d --- /dev/null +++ b/volume-coupled-diffusion/precice-config.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From d21759c194067de70fa72d1ee159be884b7bffd3 Mon Sep 17 00:00:00 2001 From: Benjamin Rodenberg Date: Tue, 6 Jul 2021 08:26:49 +0200 Subject: [PATCH 06/55] Remove superfluous code --- partitioned-heat-conduction/fenics/problem_setup.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/partitioned-heat-conduction/fenics/problem_setup.py b/partitioned-heat-conduction/fenics/problem_setup.py index cb1b164af..b85f30358 100644 --- a/partitioned-heat-conduction/fenics/problem_setup.py +++ b/partitioned-heat-conduction/fenics/problem_setup.py @@ -1,16 +1,14 @@ """ -Problem setup for partitioned-heat-conduction/fenics-fenics tutorial +Problem setup for partitioned-heat-conduction/fenics tutorial """ -from fenics import SubDomain, Point, RectangleMesh, near, Function, VectorFunctionSpace, Expression +from fenics import SubDomain, Point, RectangleMesh, near, Function, Expression from my_enums import DomainPart y_bottom, y_top = 0, 1 x_left, x_right = 0, 2 x_coupling = 1.0 # x coordinate of coupling interface -radius = 0.2 -midpoint = Point(0.5, 0.5) class ExcludeStraightBoundary(SubDomain): @@ -36,9 +34,6 @@ def inside(self, x, on_boundary): def get_geometry(domain_part): nx = ny = 9 - low_resolution = 5 - high_resolution = 5 - n_vertices = 20 if domain_part is DomainPart.LEFT: p0 = Point(x_left, y_bottom) From cdaffc2c83860376feccea350df52c6f9a03affc Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Wed, 14 Jul 2021 12:55:13 +0200 Subject: [PATCH 07/55] Adding a change log --- CHANGELOG.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..7016f2447 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,21 @@ +# preCICE tutorials change log + +All notable changes to this repository will be documented in this file. + +## 202104.1.1 + +- The modified helper tool `openfoam_remove_empty_dirs` now respects also results in the compressed OpenFOAM format (76f4482). +- Syncing the post-processing functionality of the elastic-tube-1d and the respective documentation. (#209) + +## 202104.1.0 + +- **All documentation on the website:** Find everything directly in our [redesigned preCICE website](https://precice.org/tutorials.html) (rendered from the `README.md` files here, so you can also check the basic information without internet connection). +- **New directory structure:** Read more in the [contributing guidelines](https://precice.org/community-contribute-to-precice.html). +- **Self-contained cases:** The files for each case are inside its own directory, e.g. `fluid-openfoam`. The exchange directory is set to `..`, next to `precice-config.xml`. +- **Arbitrary combinations of solvers:** Run OpenFOAM-CalculiX, OpenFOAM-deal.II, SU2-deal.II +- **A standard way to run each case:** Go to the case folder and execute `./run.sh`. +- **A standard way to clean:** A `clean.sh` script in each directory cleans up everything from this level and deeper. +- **An easy-to-run first tutorial:** We created a [quickstart](https://precice.org/quickstart.html) tutorial. +- **Better 2D cases:** Two-dimensional cases such as the (now rotated) perpendicular flap are using the 2D interface of preCICE and every involved adapter supports a 2D mode. +- **A validated Turek-Hron FSI3:** Validated with OpenFOAM and non-linear deal.II. + From dc1a7784f80b10a01ae68e0c45c00b0a84c883fd Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Wed, 14 Jul 2021 14:32:15 +0200 Subject: [PATCH 08/55] Remove last space in change log --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7016f2447..1513f26c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,4 +18,3 @@ All notable changes to this repository will be documented in this file. - **An easy-to-run first tutorial:** We created a [quickstart](https://precice.org/quickstart.html) tutorial. - **Better 2D cases:** Two-dimensional cases such as the (now rotated) perpendicular flap are using the 2D interface of preCICE and every involved adapter supports a 2D mode. - **A validated Turek-Hron FSI3:** Validated with OpenFOAM and non-linear deal.II. - From f8860a73c2764cf826c83b5a793146ce3fd235ff Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Wed, 14 Jul 2021 15:59:36 +0200 Subject: [PATCH 09/55] Changing names from CalculiX to Solid --- elastic-tube-3d/precice-config.xml | 30 +++++++++++------------ elastic-tube-3d/solid-calculix/config.yml | 4 +-- elastic-tube-3d/solid-calculix/run.sh | 2 +- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/elastic-tube-3d/precice-config.xml b/elastic-tube-3d/precice-config.xml index b57775c4d..1790d3f00 100644 --- a/elastic-tube-3d/precice-config.xml +++ b/elastic-tube-3d/precice-config.xml @@ -19,13 +19,13 @@ - + - + @@ -33,37 +33,37 @@ - - + + - - + + - + - + - - + + - - + + - + diff --git a/elastic-tube-3d/solid-calculix/config.yml b/elastic-tube-3d/solid-calculix/config.yml index 43c524a66..b567612be 100644 --- a/elastic-tube-3d/solid-calculix/config.yml +++ b/elastic-tube-3d/solid-calculix/config.yml @@ -1,7 +1,7 @@ participants: - Calculix: + Solid: interfaces: - - nodes-mesh-with-connectivity: Calculix_Mesh + - nodes-mesh-with-connectivity: Solid-Mesh patch: interface read-data: [Force] write-data: [DisplacementDelta] diff --git a/elastic-tube-3d/solid-calculix/run.sh b/elastic-tube-3d/solid-calculix/run.sh index 5f1ff6813..5ebdaf5b2 100755 --- a/elastic-tube-3d/solid-calculix/run.sh +++ b/elastic-tube-3d/solid-calculix/run.sh @@ -3,4 +3,4 @@ set -e -u export OMP_NUM_THREADS=1 export CCX_NPROC_EQUATION_SOLVER=1 -ccx_preCICE -i tube -precice-participant Calculix +ccx_preCICE -i tube -precice-participant Solid From eafc9a0b8b78eda022f8fe83a9b21c975f0f5646 Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Thu, 15 Jul 2021 12:45:54 +0200 Subject: [PATCH 10/55] Change the format of the change log --- CHANGELOG.md | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1513f26c2..400d69272 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,19 +2,36 @@ All notable changes to this repository will be documented in this file. -## 202104.1.1 +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +Read more details in the issue [#52: Releases and versioning](https://github.com/precice/openfoam-adapter/issues/52). -- The modified helper tool `openfoam_remove_empty_dirs` now respects also results in the compressed OpenFOAM format (76f4482). +## [Unreleased] + +## [v202104.1.1] 2021-04-23 + +### Added + + +### Changed + +- Modifying the helper tool `openfoam_remove_empty_dirs` such that it now respects also results in the compressed OpenFOAM format (76f4482). - Syncing the post-processing functionality of the elastic-tube-1d and the respective documentation. (#209) -## 202104.1.0 - -- **All documentation on the website:** Find everything directly in our [redesigned preCICE website](https://precice.org/tutorials.html) (rendered from the `README.md` files here, so you can also check the basic information without internet connection). -- **New directory structure:** Read more in the [contributing guidelines](https://precice.org/community-contribute-to-precice.html). -- **Self-contained cases:** The files for each case are inside its own directory, e.g. `fluid-openfoam`. The exchange directory is set to `..`, next to `precice-config.xml`. -- **Arbitrary combinations of solvers:** Run OpenFOAM-CalculiX, OpenFOAM-deal.II, SU2-deal.II -- **A standard way to run each case:** Go to the case folder and execute `./run.sh`. -- **A standard way to clean:** A `clean.sh` script in each directory cleans up everything from this level and deeper. -- **An easy-to-run first tutorial:** We created a [quickstart](https://precice.org/quickstart.html) tutorial. -- **Better 2D cases:** Two-dimensional cases such as the (now rotated) perpendicular flap are using the 2D interface of preCICE and every involved adapter supports a 2D mode. -- **A validated Turek-Hron FSI3:** Validated with OpenFOAM and non-linear deal.II. +### Removed + +## [v202104.1.0] 2021-05-02 + +### Added + +- Adding a standard run script in each case folder which can be executed as `./run.sh`. +- Adding a standard clean script in each case folder which can be executed as `./clean.sh`. +- Adding an easy-to-run tutorial called [quickstart](https://precice.org/quickstart.html). +- Adding a validated Turek-Hron FSI3 case with OpenFOAM and non-linear deal.II. + +### Changed + +- Moving all documentation to the [redesigned preCICE website](https://precice.org/tutorials.html). +- Creating a new directory structure for easy access and also for [contributions](https://precice.org/community-contribute-to-precice.html). +- Modifying the 2D cases to use 2D mode in preCICE and also corresponding 2D functionality in the adapters. + +### Removed \ No newline at end of file From d8a6beae4f350d551902dd20a20c814e4eb449e8 Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Thu, 15 Jul 2021 12:48:07 +0200 Subject: [PATCH 11/55] Adding a note on adding the change log to the change log --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 400d69272..d47ab4dd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ Read more details in the issue [#52: Releases and versioning](https://github.com ### Added +- Adding a change log for this project as a file named `CHANGELOG.md`. - Adding a standard run script in each case folder which can be executed as `./run.sh`. - Adding a standard clean script in each case folder which can be executed as `./clean.sh`. - Adding an easy-to-run tutorial called [quickstart](https://precice.org/quickstart.html). From 8d71205db3571250260ad928ed0b12617a7136ce Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Thu, 15 Jul 2021 12:58:13 +0200 Subject: [PATCH 12/55] Past tense --- CHANGELOG.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d47ab4dd5..388a6e8b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,11 +11,10 @@ Read more details in the issue [#52: Releases and versioning](https://github.com ### Added - ### Changed -- Modifying the helper tool `openfoam_remove_empty_dirs` such that it now respects also results in the compressed OpenFOAM format (76f4482). -- Syncing the post-processing functionality of the elastic-tube-1d and the respective documentation. (#209) +- Modified the helper tool `openfoam_remove_empty_dirs` such that it also respects results in the compressed OpenFOAM format (76f4482). +- Synced the post-processing functionality of the elastic-tube-1d and the respective documentation. (#209) ### Removed @@ -23,16 +22,16 @@ Read more details in the issue [#52: Releases and versioning](https://github.com ### Added -- Adding a change log for this project as a file named `CHANGELOG.md`. -- Adding a standard run script in each case folder which can be executed as `./run.sh`. -- Adding a standard clean script in each case folder which can be executed as `./clean.sh`. -- Adding an easy-to-run tutorial called [quickstart](https://precice.org/quickstart.html). -- Adding a validated Turek-Hron FSI3 case with OpenFOAM and non-linear deal.II. +- Added a change log for this project as a file named `CHANGELOG.md`. +- Added a standard run script in each case folder which can be executed as `./run.sh`. +- Added a standard clean script in each case folder which can be executed as `./clean.sh`. +- Added an easy-to-run tutorial called [quickstart](https://precice.org/quickstart.html). +- Added a validated Turek-Hron FSI3 case with OpenFOAM and non-linear deal.II. ### Changed -- Moving all documentation to the [redesigned preCICE website](https://precice.org/tutorials.html). -- Creating a new directory structure for easy access and also for [contributions](https://precice.org/community-contribute-to-precice.html). -- Modifying the 2D cases to use 2D mode in preCICE and also corresponding 2D functionality in the adapters. +- Moved all documentation to the [redesigned preCICE website](https://precice.org/tutorials.html). +- Created a new directory structure for easy access and also for [contributions](https://precice.org/community-contribute-to-precice.html). +- Modified the 2D cases to use 2D mode in preCICE and also corresponding 2D functionality in the adapters. ### Removed \ No newline at end of file From 04f5795a5cbb8b4f82456a9a67318f14e359e724 Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Thu, 15 Jul 2021 13:00:54 +0200 Subject: [PATCH 13/55] Adding markdown lint exception --- CHANGELOG.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 388a6e8b0..522b14278 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,19 +5,17 @@ All notable changes to this repository will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Read more details in the issue [#52: Releases and versioning](https://github.com/precice/openfoam-adapter/issues/52). + + ## [Unreleased] ## [v202104.1.1] 2021-04-23 -### Added - ### Changed - Modified the helper tool `openfoam_remove_empty_dirs` such that it also respects results in the compressed OpenFOAM format (76f4482). - Synced the post-processing functionality of the elastic-tube-1d and the respective documentation. (#209) -### Removed - ## [v202104.1.0] 2021-05-02 ### Added @@ -33,5 +31,3 @@ Read more details in the issue [#52: Releases and versioning](https://github.com - Moved all documentation to the [redesigned preCICE website](https://precice.org/tutorials.html). - Created a new directory structure for easy access and also for [contributions](https://precice.org/community-contribute-to-precice.html). - Modified the 2D cases to use 2D mode in preCICE and also corresponding 2D functionality in the adapters. - -### Removed \ No newline at end of file From db6d66de0f16f79a38c29054737d0f4d7cedfcf0 Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Fri, 16 Jul 2021 16:55:07 +0200 Subject: [PATCH 14/55] Adding individual change log entry --- docs/changelog-entries/219.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/changelog-entries/219.md diff --git a/docs/changelog-entries/219.md b/docs/changelog-entries/219.md new file mode 100644 index 000000000..59895091d --- /dev/null +++ b/docs/changelog-entries/219.md @@ -0,0 +1 @@ +* Added new volume coupled diffusion tutorial with FEniCS https://github.com/precice/tutorials/pull/219 From c7e8d7ee4927b8ec24d92f0d8feeb8f26e170c3b Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Fri, 16 Jul 2021 17:02:55 +0200 Subject: [PATCH 15/55] Editing individual change log entry --- docs/changelog-entries/219.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog-entries/219.md b/docs/changelog-entries/219.md index 59895091d..99bd821ab 100644 --- a/docs/changelog-entries/219.md +++ b/docs/changelog-entries/219.md @@ -1 +1 @@ -* Added new volume coupled diffusion tutorial with FEniCS https://github.com/precice/tutorials/pull/219 +- Added new volume coupled diffusion tutorial with FEniCS [#219](https://github.com/precice/tutorials/pull/219) From 412795675c77af89f7acfa5f52be25615e1ba74c Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Fri, 16 Jul 2021 17:12:45 +0200 Subject: [PATCH 16/55] Add blank line --- docs/changelog-entries/219.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/changelog-entries/219.md b/docs/changelog-entries/219.md index 99bd821ab..0a06decf8 100644 --- a/docs/changelog-entries/219.md +++ b/docs/changelog-entries/219.md @@ -1 +1,2 @@ - Added new volume coupled diffusion tutorial with FEniCS [#219](https://github.com/precice/tutorials/pull/219) + From 11ee32ec483dcf29078532c31a059590237b1b31 Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Fri, 16 Jul 2021 17:18:39 +0200 Subject: [PATCH 17/55] Adding markdown link check config --- .markdown-link-check-config.json | 2 +- docs/changelog-entries/219.md | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.markdown-link-check-config.json b/.markdown-link-check-config.json index ec8d5c1b1..3fff32c22 100644 --- a/.markdown-link-check-config.json +++ b/.markdown-link-check-config.json @@ -1,3 +1,3 @@ { - "aliveStatusCodes": [429, 403, 200] + "aliveStatusCodes": [429, 200] } \ No newline at end of file diff --git a/docs/changelog-entries/219.md b/docs/changelog-entries/219.md index 0a06decf8..99bd821ab 100644 --- a/docs/changelog-entries/219.md +++ b/docs/changelog-entries/219.md @@ -1,2 +1 @@ - Added new volume coupled diffusion tutorial with FEniCS [#219](https://github.com/precice/tutorials/pull/219) - From 10b5931c77a456c4a6b1695f73ace97ef24e356d Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Fri, 16 Jul 2021 17:22:45 +0200 Subject: [PATCH 18/55] turning off check for first line to be header in a Markdown file --- .markdown-link-check-config.json | 3 --- .markdownlint.json | 3 ++- 2 files changed, 2 insertions(+), 4 deletions(-) delete mode 100644 .markdown-link-check-config.json diff --git a/.markdown-link-check-config.json b/.markdown-link-check-config.json deleted file mode 100644 index 3fff32c22..000000000 --- a/.markdown-link-check-config.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "aliveStatusCodes": [429, 200] -} \ No newline at end of file diff --git a/.markdownlint.json b/.markdownlint.json index 151ee39b6..cd0b0a4dc 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -1,4 +1,5 @@ { + "MD002": false, "MD013": false, "MD033": false -} \ No newline at end of file +} From 1665927e2ba1c8eef8c412c9ff604327e1aca1d9 Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Fri, 16 Jul 2021 17:25:58 +0200 Subject: [PATCH 19/55] Restoring incorrectly deleted file --- .markdown-lint-check-config.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .markdown-lint-check-config.json diff --git a/.markdown-lint-check-config.json b/.markdown-lint-check-config.json new file mode 100644 index 000000000..91af0d4bf --- /dev/null +++ b/.markdown-lint-check-config.json @@ -0,0 +1,3 @@ +{ + "aliveStatusCodes": [429, 403, 200] +} From 4d885b71ddb289cdf861bbe2b77b00d338a36d99 Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Fri, 16 Jul 2021 17:36:20 +0200 Subject: [PATCH 20/55] Removing incorrect references in CHANGELOG --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 522b14278..7247daf13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,7 @@ All notable changes to this repository will be documented in this file. -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -Read more details in the issue [#52: Releases and versioning](https://github.com/precice/openfoam-adapter/issues/52). +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). From 58a360f1d6e9b09cabfb2e232be246e47c202c88 Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Fri, 16 Jul 2021 17:37:28 +0200 Subject: [PATCH 21/55] putting changelog-entries at the repository directory level --- {docs/changelog-entries => changelog-entries}/219.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {docs/changelog-entries => changelog-entries}/219.md (100%) diff --git a/docs/changelog-entries/219.md b/changelog-entries/219.md similarity index 100% rename from docs/changelog-entries/219.md rename to changelog-entries/219.md From 8af1dbfc69f64b38bb2704035e89755c0fa9abb0 Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Sun, 18 Jul 2021 18:24:33 +0200 Subject: [PATCH 22/55] Adding change log creation as an individual change log entry --- CHANGELOG.md | 1 - changelog-entries/225.md | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 changelog-entries/225.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 7247daf13..c59aa941b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Added -- Added a change log for this project as a file named `CHANGELOG.md`. - Added a standard run script in each case folder which can be executed as `./run.sh`. - Added a standard clean script in each case folder which can be executed as `./clean.sh`. - Added an easy-to-run tutorial called [quickstart](https://precice.org/quickstart.html). diff --git a/changelog-entries/225.md b/changelog-entries/225.md new file mode 100644 index 000000000..517ced391 --- /dev/null +++ b/changelog-entries/225.md @@ -0,0 +1 @@ +- - Added a change log for this project as a file named `CHANGELOG.md` [#225](https://github.com/precice/tutorials/pull/225) From faf108b245817010efe0a189188fee3a5dcfabf8 Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Sun, 18 Jul 2021 18:42:27 +0200 Subject: [PATCH 23/55] Small changes to CHANGELOG --- .markdownlint.json | 1 - CHANGELOG.md | 3 ++- changelog-entries/225.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.markdownlint.json b/.markdownlint.json index cd0b0a4dc..e12067088 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -1,5 +1,4 @@ { - "MD002": false, "MD013": false, "MD033": false } diff --git a/CHANGELOG.md b/CHANGELOG.md index c59aa941b..de92ecd2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# preCICE tutorials change log +# preCICE tutorials changelog All notable changes to this repository will be documented in this file. @@ -19,6 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Added +- Created a first tagged version of this repository along with a [release](https://github.com/precice/tutorials/releases/tag/v202104.1.0). - Added a standard run script in each case folder which can be executed as `./run.sh`. - Added a standard clean script in each case folder which can be executed as `./clean.sh`. - Added an easy-to-run tutorial called [quickstart](https://precice.org/quickstart.html). diff --git a/changelog-entries/225.md b/changelog-entries/225.md index 517ced391..8295bb83c 100644 --- a/changelog-entries/225.md +++ b/changelog-entries/225.md @@ -1 +1 @@ -- - Added a change log for this project as a file named `CHANGELOG.md` [#225](https://github.com/precice/tutorials/pull/225) +- Added a change log for this project as a file named `CHANGELOG.md` [#225](https://github.com/precice/tutorials/pull/225) From 795c2df10c6229a1cf032e173818a6c624963f11 Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Sun, 18 Jul 2021 18:48:42 +0200 Subject: [PATCH 24/55] Explicitly add markdown link check GitHub workflow --- .github/workflows/check-markdown.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/check-markdown.yml b/.github/workflows/check-markdown.yml index 63a0df9ad..29599757d 100644 --- a/.github/workflows/check-markdown.yml +++ b/.github/workflows/check-markdown.yml @@ -12,3 +12,9 @@ jobs: config: .markdownlint.json files: '.' ignore: changelog-entries + - name: Check links in markdown files (markdown-link-check) + uses: gaurav-nelson/github-action-markdown-link-check@v1 + with: + use-quiet-mode: 'yes' + use-verbose-mode: 'no' + config-file: '.markdown-link-check-config.json' From e5270e1432a2e6890813221580a7720cdf45dea9 Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Wed, 21 Jul 2021 17:41:16 +0200 Subject: [PATCH 25/55] Removing duplicate test and correcting release dates in CHANGELOG --- .github/workflows/check-markdown.yml | 6 ------ CHANGELOG.md | 4 ++-- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/workflows/check-markdown.yml b/.github/workflows/check-markdown.yml index 29599757d..63a0df9ad 100644 --- a/.github/workflows/check-markdown.yml +++ b/.github/workflows/check-markdown.yml @@ -12,9 +12,3 @@ jobs: config: .markdownlint.json files: '.' ignore: changelog-entries - - name: Check links in markdown files (markdown-link-check) - uses: gaurav-nelson/github-action-markdown-link-check@v1 - with: - use-quiet-mode: 'yes' - use-verbose-mode: 'no' - config-file: '.markdown-link-check-config.json' diff --git a/CHANGELOG.md b/CHANGELOG.md index de92ecd2f..2048fa189 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,14 +8,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] -## [v202104.1.1] 2021-04-23 +## [v202104.1.1] 2021-05-02 ### Changed - Modified the helper tool `openfoam_remove_empty_dirs` such that it also respects results in the compressed OpenFOAM format (76f4482). - Synced the post-processing functionality of the elastic-tube-1d and the respective documentation. (#209) -## [v202104.1.0] 2021-05-02 +## [v202104.1.0] 2021-04-23 ### Added From 0af0cf27b43fccc9a5b1d07d4c5112cf2edb0972 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Thu, 29 Jul 2021 12:37:42 +0200 Subject: [PATCH 26/55] Action to check links: ignore domains that are known to return 403 (#230) --- .github/workflows/check-links.yml | 4 +++- .markdown-link-check-config.json | 11 +++++++++++ .markdown-lint-check-config.json | 3 --- 3 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 .markdown-link-check-config.json delete mode 100644 .markdown-lint-check-config.json diff --git a/.github/workflows/check-links.yml b/.github/workflows/check-links.yml index cfdecee79..091411966 100644 --- a/.github/workflows/check-links.yml +++ b/.github/workflows/check-links.yml @@ -1,5 +1,7 @@ name: Check links -on: [push, pull_request] +on: + schedule: + - cron: '0 0 * * SUN' jobs: check_links: runs-on: ubuntu-latest diff --git a/.markdown-link-check-config.json b/.markdown-link-check-config.json new file mode 100644 index 000000000..26440a7b8 --- /dev/null +++ b/.markdown-link-check-config.json @@ -0,0 +1,11 @@ +{ + "aliveStatusCodes": [429, 200], + "ignorePatterns": [ + { + "pattern": "^https://openfoamwiki.net/" + }, + { + "pattern": "^https://doi.org/" + } + ] +} diff --git a/.markdown-lint-check-config.json b/.markdown-lint-check-config.json deleted file mode 100644 index 91af0d4bf..000000000 --- a/.markdown-lint-check-config.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "aliveStatusCodes": [429, 403, 200] -} From 4085a8e38a530e8110b4e9169cb1dfc36afe3bf6 Mon Sep 17 00:00:00 2001 From: David Schneider Date: Thu, 29 Jul 2021 13:01:34 +0200 Subject: [PATCH 27/55] Add partitioned-heat OpenFOAM participant with solver (#223) * Rename Heat to Heat-Flux according to naming scheme * Add initial field function for non-default initial conditions * Add the OpenFOAM Neumann configuration * Fix shell description for initial field * Add modified solver version including non-zero RHS * Format precice config according to our standard * Rename 'Flux' to 'Heat-Flux' in precice-config.xml * Remove license header and write some custom text * Add non-saved modifications missing in the previous commit * Add an additional Dirichlet participant * Fix some typos and missing brackets * Add value slot in groovyBC for paraFoam reader * Add run and clean scripts and README description * Move openfoam solver in dedicated directory on the top level * Update documentation for updated structure * Store generated executable in FOAM_USER_APPBIN and adjust documentation as well as run scripts accordingly * Add a comment on the heat transfer coefficient * Fix duplicated 'in the' in controlDict * Plug everything in one script to enable easy mesh modifications * Adjust the documentation for updated workflows * Apply suggestions from Makis review Co-authored-by: Gerasimos Chourdakis * Remove OpenFOAM header from Temperature file * Add a changelog entry * Clean up cleaning files and add a solver cleaning script Co-authored-by: Gerasimos Chourdakis --- changelog-entries/223.md | 1 + partitioned-heat-conduction/README.md | 40 +++--- partitioned-heat-conduction/fenics/heat.py | 2 +- .../fenics/precice-adapter-config-D.json | 2 +- .../fenics/precice-adapter-config-N.json | 2 +- partitioned-heat-conduction/nutils/heat.py | 4 +- .../openfoam-dirichlet/0.orig/T | 39 ++++++ .../openfoam-dirichlet/clean.sh | 6 + .../constant/transportProperties | 10 ++ .../openfoam-dirichlet/run.sh | 9 ++ .../openfoam-dirichlet/setInitialField.sh | 8 ++ .../openfoam-dirichlet/system/blockMeshDict | 58 +++++++++ .../openfoam-dirichlet/system/controlDict | 52 ++++++++ .../system/decomposeParDict | 16 +++ .../openfoam-dirichlet/system/fvSchemes | 40 ++++++ .../openfoam-dirichlet/system/fvSolution | 24 ++++ .../openfoam-dirichlet/system/preciceDict | 43 +++++++ .../openfoam-neumann/0.orig/T | 40 ++++++ .../openfoam-neumann/clean.sh | 6 + .../constant/transportProperties | 11 ++ .../openfoam-neumann/run.sh | 9 ++ .../openfoam-neumann/setInitialField.sh | 8 ++ .../openfoam-neumann/system/blockMeshDict | 61 ++++++++++ .../openfoam-neumann/system/controlDict | 52 ++++++++ .../openfoam-neumann/system/fvSchemes | 40 ++++++ .../openfoam-neumann/system/fvSolution | 24 ++++ .../openfoam-neumann/system/preciceDict | 43 +++++++ .../openfoam-solver/Make/files | 3 + .../openfoam-solver/Make/options | 8 ++ .../openfoam-solver/clean.sh | 4 + .../openfoam-solver/createFields.H | 49 ++++++++ .../openfoam-solver/heatTransfer.C | 114 ++++++++++++++++++ .../openfoam-solver/write.H | 58 +++++++++ .../precice-config.xml | 86 +++++++------ 34 files changed, 912 insertions(+), 60 deletions(-) create mode 100644 changelog-entries/223.md create mode 100644 partitioned-heat-conduction/openfoam-dirichlet/0.orig/T create mode 100755 partitioned-heat-conduction/openfoam-dirichlet/clean.sh create mode 100644 partitioned-heat-conduction/openfoam-dirichlet/constant/transportProperties create mode 100755 partitioned-heat-conduction/openfoam-dirichlet/run.sh create mode 100755 partitioned-heat-conduction/openfoam-dirichlet/setInitialField.sh create mode 100644 partitioned-heat-conduction/openfoam-dirichlet/system/blockMeshDict create mode 100644 partitioned-heat-conduction/openfoam-dirichlet/system/controlDict create mode 100644 partitioned-heat-conduction/openfoam-dirichlet/system/decomposeParDict create mode 100644 partitioned-heat-conduction/openfoam-dirichlet/system/fvSchemes create mode 100644 partitioned-heat-conduction/openfoam-dirichlet/system/fvSolution create mode 100644 partitioned-heat-conduction/openfoam-dirichlet/system/preciceDict create mode 100644 partitioned-heat-conduction/openfoam-neumann/0.orig/T create mode 100755 partitioned-heat-conduction/openfoam-neumann/clean.sh create mode 100644 partitioned-heat-conduction/openfoam-neumann/constant/transportProperties create mode 100755 partitioned-heat-conduction/openfoam-neumann/run.sh create mode 100755 partitioned-heat-conduction/openfoam-neumann/setInitialField.sh create mode 100644 partitioned-heat-conduction/openfoam-neumann/system/blockMeshDict create mode 100644 partitioned-heat-conduction/openfoam-neumann/system/controlDict create mode 100644 partitioned-heat-conduction/openfoam-neumann/system/fvSchemes create mode 100644 partitioned-heat-conduction/openfoam-neumann/system/fvSolution create mode 100644 partitioned-heat-conduction/openfoam-neumann/system/preciceDict create mode 100644 partitioned-heat-conduction/openfoam-solver/Make/files create mode 100644 partitioned-heat-conduction/openfoam-solver/Make/options create mode 100755 partitioned-heat-conduction/openfoam-solver/clean.sh create mode 100644 partitioned-heat-conduction/openfoam-solver/createFields.H create mode 100644 partitioned-heat-conduction/openfoam-solver/heatTransfer.C create mode 100644 partitioned-heat-conduction/openfoam-solver/write.H diff --git a/changelog-entries/223.md b/changelog-entries/223.md new file mode 100644 index 000000000..637cc7982 --- /dev/null +++ b/changelog-entries/223.md @@ -0,0 +1 @@ +- Added OpenFOAM solver as well as the participants (Dirichlet and Neumann) to our partiitoned-heat tutorial [#223](https://github.com/precice/tutorials/pull/223) diff --git a/partitioned-heat-conduction/README.md b/partitioned-heat-conduction/README.md index 9b12a7a72..83b668eb1 100644 --- a/partitioned-heat-conduction/README.md +++ b/partitioned-heat-conduction/README.md @@ -15,50 +15,52 @@ We solve a partitioned heat equation. For information on the non-partitioned cas Case setup from [3]. `D` denotes the Dirichlet participant and `N` denotes the Neumann participant. -The heat equation is solved on a rectangular domain `Omega = [0,2] x [0,1]` with given Dirichlet boundary conditions. We split the domain at `x_c = 1` using a straight vertical line, the coupling interface. The left part of the domain will be referred to as the Dirichlet partition and the right part as the Neumann partition. To couple the two participants we use Dirichlet-Neumann coupling. Here, the Dirichlet participant receives Dirichlet boundary conditions (`Temperature`) at the coupling interface and solves the heat equation using these boundary conditions on the left part of the domain. Then the Dirichlet participant computes the resulting heat flux (`Flux`) from the solution and sends it to the Neumann participant. The Neumann participant uses the flux as a Neumann boundary condition to solve the heat equation on the right part of the domain. We then extract the temperature from the solution and send it back to the Dirichlet participant. This establishes the coupling between the two participants. +The heat equation is solved on a rectangular domain `Omega = [0,2] x [0,1]` with given Dirichlet boundary conditions. We split the domain at `x_c = 1` using a straight vertical line, the coupling interface. The left part of the domain will be referred to as the Dirichlet partition and the right part as the Neumann partition. To couple the two participants we use Dirichlet-Neumann coupling. Here, the Dirichlet participant receives Dirichlet boundary conditions (`Temperature`) at the coupling interface and solves the heat equation using these boundary conditions on the left part of the domain. Then the Dirichlet participant computes the resulting heat flux (`Heat-Flux`) from the solution and sends it to the Neumann participant. The Neumann participant uses the flux as a Neumann boundary condition to solve the heat equation on the right part of the domain. We then extract the temperature from the solution and send it back to the Dirichlet participant. This establishes the coupling between the two participants. This simple case allows us to compare the solution for the partitioned case to a known analytical solution (method of manufactures solutions, see [1, p.37ff]). For more usage examples and details, please refer to [3, sect. 4.1]. ## Available solvers and dependencies -You can either couple a solver with itself or different solvers with each other. In any case you will need to have preCICE and the python bindings installed on your system. +You can either couple a solver with itself or different solvers with each other. In any case you will need to have preCICE * FEniCS. Install [FEniCS](https://fenicsproject.org/download/) and the [FEniCS-adapter](https://github.com/precice/fenics-adapter). The code is largely based on this [fenics-tutorial](https://github.com/hplgit/fenics-tutorial/blob/master/pub/python/vol1/ft03_heat.py) from [1]. * Nutils. Install [Nutils](http://www.nutils.org/en/latest/). -## Running the simulation +* OpenFOAM. Install OpenFOAM and the [OpenFOAM adapter](https://www.precice.org/adapter-openfoam-overview.html). This tutorial uses a custom solver, which you can find in `tutorials/partitioned-heat-conduction/openfoam-solver` and build using `cd tutorials/partitioned-heat-conduction/openfoam-solver && wmake`. Have a look at the section below (Notes on the OpenFOAM case) for further information. -This tutorial is for FEniCS and Nutils. You can find the corresponding `run.sh` script in the folders `fenics` and `nutils`. +### Notes on the OpenFOAM case -For choosing whether you want to run the Dirichlet-kind and a Neumann-kind participant, please provide the following commandline input: +Running this tutorial with OpenFOAM is a bit of a challenge and requires some special considerations: -* `-d` flag will enforce Dirichlet boundary conditions on the coupling interface. -* `-n` flag will enforce Neumann boundary conditions on the coupling interface. +* First of all, OpenFOAM does not provide a Laplace solver with a non-zero right-hand side. Therefore, we provide a modified Laplace solver together with the tutorial, which needs to be compiled before running the tutorial. The solver can be compiled by executing `wmake` in the solver directory `./openfoam-solver/`. The generated executable will be stored in the `FOAM_USER_APPBIN` by default. Afterwards, the custom solver `heatTransfer` can be started from the respective OpenFOAM case directory, as usual. -For running the case, open two terminals run: +* The second challenge is given by the time- and space-dependent Dirichlet boundary conditions required for domain boundaries not belonging to the interface. For this purpose, a valid installation of `groovyBC` (part of `swak4Foam`) is required. -```bash -cd fenics -./run.sh -d -``` +* The third challenge is given by the space-dependent initial conditions. We use `funkySetFields` (installed with OpenFOAM) to evaluate the initial condition. You can directly execute the `./run.sh` script, which calls the `setInitialField.sh` in order to evaluate the required initial condition and store it in the `0` directory. Note that `run.sh` deletes the `0` time directory and copies it again from `0.orig`. If you start modifying the initial or boundary conditions, make sure you modify the files located in the `0.orig` directory in combination with the default `run.sh` scripts. -and +## Running the simulation -```bash -cd fenics -./run.sh -n -``` +You can find the corresponding `run.sh` script in each participant solver. + +In case of `fenics` and `nutils` the Dirichlet-kind and a Neumann-kind participant are currently merged into a single participant directory. Therefore, please provide the following command line input argument: -If you want to use Nutils for one or both sides of the setup, just `cd nutils`. The FEniCS case also supports parallel runs. Here, you cannot use the `run.sh` script, but must simply execute +* `-d` flag will enforce Dirichlet boundary conditions on the coupling interface. +* `-n` flag will enforce Neumann boundary conditions on the coupling interface. + +For running the case, a Dirichlet and a Neumann participant need to be executed, e.g., `./run.sh -d` and `./run.sh. -n` + +The FEniCS case also supports parallel runs. Here, you cannot use the `run.sh` script, but must simply execute ```bash mpirun -n python3 heat.py -d ``` +OpenFOAM supports parallel runs as usual. However, you need to execute the command manually by running: `mpirun -np ./heatTransfer`. + ### Note on the combination of Nutils & FEniCS -You can mix the Nutils and FEniCS solver, if you like. Note that the error for a pure FEniCS simulation is lower than for a mixed one. We did not yet study the origin of this error, but assume that this is due to the fact that Nutils uses Gauss points as coupling mesh and therefore entails extrapolation in the data mapping at the top and bottom corners. +You can mix the Nutils and FEniCS solver, if you like. Note that the error for a pure FEniCS simulation is lower than for a mixed one, because the FEniCS participants use the same coupling mesh, i.e., the mapping error becomes significantly smaller. ## Visualization diff --git a/partitioned-heat-conduction/fenics/heat.py b/partitioned-heat-conduction/fenics/heat.py index e7113f570..fb0487854 100644 --- a/partitioned-heat-conduction/fenics/heat.py +++ b/partitioned-heat-conduction/fenics/heat.py @@ -170,7 +170,7 @@ def determine_gradient(V_g, u, flux): if problem is ProblemType.DIRICHLET: flux = Function(V_g) - flux.rename("Flux", "") + flux.rename("Heat-Flux", "") while precice.is_coupling_ongoing(): diff --git a/partitioned-heat-conduction/fenics/precice-adapter-config-D.json b/partitioned-heat-conduction/fenics/precice-adapter-config-D.json index c2a7788c0..7989ba340 100644 --- a/partitioned-heat-conduction/fenics/precice-adapter-config-D.json +++ b/partitioned-heat-conduction/fenics/precice-adapter-config-D.json @@ -3,7 +3,7 @@ "config_file_name": "../precice-config.xml", "interface": { "coupling_mesh_name": "Dirichlet-Mesh", - "write_data_name": "Flux", + "write_data_name": "Heat-Flux", "read_data_name": "Temperature" } } diff --git a/partitioned-heat-conduction/fenics/precice-adapter-config-N.json b/partitioned-heat-conduction/fenics/precice-adapter-config-N.json index 36ea15d19..2afd52ce3 100644 --- a/partitioned-heat-conduction/fenics/precice-adapter-config-N.json +++ b/partitioned-heat-conduction/fenics/precice-adapter-config-N.json @@ -4,6 +4,6 @@ "interface": { "coupling_mesh_name": "Neumann-Mesh", "write_data_name": "Temperature", - "read_data_name": "Flux" + "read_data_name": "Heat-Flux" } } diff --git a/partitioned-heat-conduction/nutils/heat.py b/partitioned-heat-conduction/nutils/heat.py index 16c00726e..d2045005f 100644 --- a/partitioned-heat-conduction/nutils/heat.py +++ b/partitioned-heat-conduction/nutils/heat.py @@ -68,8 +68,8 @@ def main(side='Dirichlet'): vertex_ids = interface.set_mesh_vertices(mesh_id, vertices) # coupling data - write_data = "Temperature" if side == "Neumann" else "Flux" - read_data = "Flux" if side == "Neumann" else "Temperature" + write_data = "Temperature" if side == "Neumann" else "Heat-Flux" + read_data = "Heat-Flux" if side == "Neumann" else "Temperature" write_data_id = interface.get_data_id(write_data, mesh_id) read_data_id = interface.get_data_id(read_data, mesh_id) diff --git a/partitioned-heat-conduction/openfoam-dirichlet/0.orig/T b/partitioned-heat-conduction/openfoam-dirichlet/0.orig/T new file mode 100644 index 000000000..7c90452f2 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-dirichlet/0.orig/T @@ -0,0 +1,39 @@ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + + +internalField uniform 0; + +boundaryField +{ + interface + { + type fixedValue; + value uniform 2; + } + + DirichletBoundary + { + type groovyBC; + variables "val=1+pow(pos().x,2)+(3*pow(pos().y,2))+1.3*time();"; + valueExpression "val"; + value uniform 0; + evaluateDuringConstruction 1; + } + + defaultFaces + { + type empty; + } +} + +// ************************************************************************* // diff --git a/partitioned-heat-conduction/openfoam-dirichlet/clean.sh b/partitioned-heat-conduction/openfoam-dirichlet/clean.sh new file mode 100755 index 000000000..c31d9fc76 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-dirichlet/clean.sh @@ -0,0 +1,6 @@ +#!/bin/sh +set -e -u + +. ../../tools/cleaning-tools.sh + +clean_openfoam . diff --git a/partitioned-heat-conduction/openfoam-dirichlet/constant/transportProperties b/partitioned-heat-conduction/openfoam-dirichlet/constant/transportProperties new file mode 100644 index 000000000..40dc0a36b --- /dev/null +++ b/partitioned-heat-conduction/openfoam-dirichlet/constant/transportProperties @@ -0,0 +1,10 @@ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object transportProperties; +} + +DT DT [ 0 2 -1 0 0 0 0 ] 1; diff --git a/partitioned-heat-conduction/openfoam-dirichlet/run.sh b/partitioned-heat-conduction/openfoam-dirichlet/run.sh new file mode 100755 index 000000000..d9334f454 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-dirichlet/run.sh @@ -0,0 +1,9 @@ +#!/bin/sh +set -e -u + +blockMesh +touch openfoam-dirichlet.foam +./setInitialField.sh + +../../tools/run-openfoam.sh "$@" +. ../../tools/openfoam-remove-empty-dirs.sh && openfoam_remove_empty_dirs diff --git a/partitioned-heat-conduction/openfoam-dirichlet/setInitialField.sh b/partitioned-heat-conduction/openfoam-dirichlet/setInitialField.sh new file mode 100755 index 000000000..bf3dfd29c --- /dev/null +++ b/partitioned-heat-conduction/openfoam-dirichlet/setInitialField.sh @@ -0,0 +1,8 @@ +#!/bin/sh +set -e -u + +# Remove the old directory and copy the uninitialized field +rm -rf ./0 +cp -r ./0.orig 0 +# Initialize the new field +funkySetFields -keepPatches -field T -expression '1+pow(pos().x,2)+(3*pow(pos().y,2))+1.3*time()' -time '0' diff --git a/partitioned-heat-conduction/openfoam-dirichlet/system/blockMeshDict b/partitioned-heat-conduction/openfoam-dirichlet/system/blockMeshDict new file mode 100644 index 000000000..51380417f --- /dev/null +++ b/partitioned-heat-conduction/openfoam-dirichlet/system/blockMeshDict @@ -0,0 +1,58 @@ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} + +vertices +( + + (0 0 0) + (1 0 0) + (1 1 0) + (0 1 0) + + (0 0 .1) + (1 0 .1) + (1 1 .1) + (0 1 .1) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (100 100 1) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + + interface + { + type patch; + faces + ( + (1 2 6 5) + ); + } + + DirichletBoundary + { + type patch; + faces + ( + (4 7 3 0) + (7 6 2 3) + (4 0 1 5) + ); + } +); + +mergePatchPairs +( +); diff --git a/partitioned-heat-conduction/openfoam-dirichlet/system/controlDict b/partitioned-heat-conduction/openfoam-dirichlet/system/controlDict new file mode 100644 index 000000000..aa247e117 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-dirichlet/system/controlDict @@ -0,0 +1,52 @@ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} + +// Make sure you build the solver located +// in ./openfoam-solver before running +// the case +application heatTransfer; + +libs ( "libgroovyBC.so" ) ; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 1; + +deltaT 0.1; + +writeControl runTime; + +writeInterval 0.1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable false; + +functions +{ + preCICE_Adapter + { + type preciceAdapterFunctionObject; + libs ("libpreciceAdapterFunctionObject.so"); + } +} diff --git a/partitioned-heat-conduction/openfoam-dirichlet/system/decomposeParDict b/partitioned-heat-conduction/openfoam-dirichlet/system/decomposeParDict new file mode 100644 index 000000000..ad99cf6c5 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-dirichlet/system/decomposeParDict @@ -0,0 +1,16 @@ +FoamFile { + version 2.0; + class dictionary; + object decomposeParDict; + format ascii; +} + +numberOfSubdomains 2; + +method simple; + +simpleCoeffs +{ + n (2 1 1); + delta 0.001; +} diff --git a/partitioned-heat-conduction/openfoam-dirichlet/system/fvSchemes b/partitioned-heat-conduction/openfoam-dirichlet/system/fvSchemes new file mode 100644 index 000000000..528752472 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-dirichlet/system/fvSchemes @@ -0,0 +1,40 @@ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; + grad(T) Gauss linear; +} + +divSchemes +{ + default none; +} + +laplacianSchemes +{ + default none; + laplacian(DT,T) Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} diff --git a/partitioned-heat-conduction/openfoam-dirichlet/system/fvSolution b/partitioned-heat-conduction/openfoam-dirichlet/system/fvSolution new file mode 100644 index 000000000..86a2ab7f1 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-dirichlet/system/fvSolution @@ -0,0 +1,24 @@ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} + +solvers +{ + T + { + solver PCG; + preconditioner DIC; + tolerance 1e-06; + relTol 0; + } +} + +SIMPLE +{ + nNonOrthogonalCorrectors 2; +} diff --git a/partitioned-heat-conduction/openfoam-dirichlet/system/preciceDict b/partitioned-heat-conduction/openfoam-dirichlet/system/preciceDict new file mode 100644 index 000000000..741f699d5 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-dirichlet/system/preciceDict @@ -0,0 +1,43 @@ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object preciceDict; +} + +preciceConfig "../precice-config.xml"; + +participant Dirichlet; + +modules (CHT); + +interfaces +{ + Interface1 + { + mesh Dirichlet-Mesh; + patches (interface); + + readData + ( + Temperature + ); + + writeData + ( + Heat-Flux + ); + }; +}; + +CHT +{ + // fenics and nutils use different + // sign conventions here, so we + // select -1 for compatibility + // reasons + k [ 1 1 -3 -1 0 0 0 ] -1; + solverType "basic"; +}; diff --git a/partitioned-heat-conduction/openfoam-neumann/0.orig/T b/partitioned-heat-conduction/openfoam-neumann/0.orig/T new file mode 100644 index 000000000..e39cfae55 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-neumann/0.orig/T @@ -0,0 +1,40 @@ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + + +internalField uniform 0; + +boundaryField +{ + interface + { + type fixedGradient; + gradient uniform -2; + } + + DirichletBoundary + { + type groovyBC; + variables "val=1+pow(pos().x,2)+(3*pow(pos().y,2))+1.3*time();"; + valueExpression "val"; + value uniform 0; + evaluateDuringConstruction 1; + } + + defaultFaces + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/partitioned-heat-conduction/openfoam-neumann/clean.sh b/partitioned-heat-conduction/openfoam-neumann/clean.sh new file mode 100755 index 000000000..c31d9fc76 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-neumann/clean.sh @@ -0,0 +1,6 @@ +#!/bin/sh +set -e -u + +. ../../tools/cleaning-tools.sh + +clean_openfoam . diff --git a/partitioned-heat-conduction/openfoam-neumann/constant/transportProperties b/partitioned-heat-conduction/openfoam-neumann/constant/transportProperties new file mode 100644 index 000000000..93b06319d --- /dev/null +++ b/partitioned-heat-conduction/openfoam-neumann/constant/transportProperties @@ -0,0 +1,11 @@ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +DT DT [ 0 2 -1 0 0 0 0 ] 1; diff --git a/partitioned-heat-conduction/openfoam-neumann/run.sh b/partitioned-heat-conduction/openfoam-neumann/run.sh new file mode 100755 index 000000000..78b68a942 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-neumann/run.sh @@ -0,0 +1,9 @@ +#!/bin/sh +set -e -u + +blockMesh +touch openfoam-neumann.foam +./setInitialField.sh + +../../tools/run-openfoam.sh "$@" +. ../../tools/openfoam-remove-empty-dirs.sh && openfoam_remove_empty_dirs diff --git a/partitioned-heat-conduction/openfoam-neumann/setInitialField.sh b/partitioned-heat-conduction/openfoam-neumann/setInitialField.sh new file mode 100755 index 000000000..bf3dfd29c --- /dev/null +++ b/partitioned-heat-conduction/openfoam-neumann/setInitialField.sh @@ -0,0 +1,8 @@ +#!/bin/sh +set -e -u + +# Remove the old directory and copy the uninitialized field +rm -rf ./0 +cp -r ./0.orig 0 +# Initialize the new field +funkySetFields -keepPatches -field T -expression '1+pow(pos().x,2)+(3*pow(pos().y,2))+1.3*time()' -time '0' diff --git a/partitioned-heat-conduction/openfoam-neumann/system/blockMeshDict b/partitioned-heat-conduction/openfoam-neumann/system/blockMeshDict new file mode 100644 index 000000000..84f36aef8 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-neumann/system/blockMeshDict @@ -0,0 +1,61 @@ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} + +convertToMeters 1; + +vertices +( + + (1 0 0) + (2 0 0) + (2 1 0) + (1 1 0) + + (1 0 .1) + (2 0 .1) + (2 1 .1) + (1 1 .1) + +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (100 100 1) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + + interface + { + type patch; + faces + ( + (4 7 3 0) + ); + } + + DirichletBoundary + { + type patch; + faces + ( + (1 2 6 5) + (4 0 1 5) + (7 6 2 3) + ); + } +); + +mergePatchPairs +( +); diff --git a/partitioned-heat-conduction/openfoam-neumann/system/controlDict b/partitioned-heat-conduction/openfoam-neumann/system/controlDict new file mode 100644 index 000000000..aa247e117 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-neumann/system/controlDict @@ -0,0 +1,52 @@ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} + +// Make sure you build the solver located +// in ./openfoam-solver before running +// the case +application heatTransfer; + +libs ( "libgroovyBC.so" ) ; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 1; + +deltaT 0.1; + +writeControl runTime; + +writeInterval 0.1; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable false; + +functions +{ + preCICE_Adapter + { + type preciceAdapterFunctionObject; + libs ("libpreciceAdapterFunctionObject.so"); + } +} diff --git a/partitioned-heat-conduction/openfoam-neumann/system/fvSchemes b/partitioned-heat-conduction/openfoam-neumann/system/fvSchemes new file mode 100644 index 000000000..f8dfa6f00 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-neumann/system/fvSchemes @@ -0,0 +1,40 @@ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default none; + grad(T) Gauss linear; +} + +divSchemes +{ + default none; +} + +laplacianSchemes +{ + default none; + laplacian(DT,T) Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} diff --git a/partitioned-heat-conduction/openfoam-neumann/system/fvSolution b/partitioned-heat-conduction/openfoam-neumann/system/fvSolution new file mode 100644 index 000000000..f75d26f20 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-neumann/system/fvSolution @@ -0,0 +1,24 @@ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} + +solvers +{ + T + { + solver PCG; + preconditioner DIC; + tolerance 1e-12; + relTol 0; + } +} + +SIMPLE +{ + nNonOrthogonalCorrectors 0; +} diff --git a/partitioned-heat-conduction/openfoam-neumann/system/preciceDict b/partitioned-heat-conduction/openfoam-neumann/system/preciceDict new file mode 100644 index 000000000..77696c290 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-neumann/system/preciceDict @@ -0,0 +1,43 @@ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object preciceDict; +} + +preciceConfig "../precice-config.xml"; + +participant Neumann; + +modules (CHT); + +interfaces +{ + Interface1 + { + mesh Neumann-Mesh; + patches (interface); + + readData + ( + Heat-Flux + ); + + writeData + ( + Temperature + ); + }; +}; + +CHT +{ + // fenics and nutils use different + // sign conventions here, so we + // select -1 for compatibility + // reasons + k [ 1 1 -3 -1 0 0 0 ] -1; + solverType "basic"; +}; diff --git a/partitioned-heat-conduction/openfoam-solver/Make/files b/partitioned-heat-conduction/openfoam-solver/Make/files new file mode 100644 index 000000000..5721e3a21 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-solver/Make/files @@ -0,0 +1,3 @@ +heatTransfer.C + +EXE = $(FOAM_USER_APPBIN)/heatTransfer diff --git a/partitioned-heat-conduction/openfoam-solver/Make/options b/partitioned-heat-conduction/openfoam-solver/Make/options new file mode 100644 index 000000000..04ef6c148 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-solver/Make/options @@ -0,0 +1,8 @@ +EXE_INC = \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude + +EXE_LIBS = \ + -lfiniteVolume \ + -lfvOptions \ + -lmeshTools diff --git a/partitioned-heat-conduction/openfoam-solver/clean.sh b/partitioned-heat-conduction/openfoam-solver/clean.sh new file mode 100755 index 000000000..0207cc569 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-solver/clean.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -e -u + +wclean diff --git a/partitioned-heat-conduction/openfoam-solver/createFields.H b/partitioned-heat-conduction/openfoam-solver/createFields.H new file mode 100644 index 000000000..6f7ac0452 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-solver/createFields.H @@ -0,0 +1,49 @@ +Info<< "Reading field T\n" << endl; + +volScalarField T +( + IOobject + ( + "T", + runTime.timeName(), + mesh, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + mesh +); + + +Info<< "Reading diffusivity DT\n" << endl; + +volScalarField DT +( + IOobject + ( + "DT", + runTime.timeName(), + mesh, + IOobject::READ_IF_PRESENT, + IOobject::AUTO_WRITE + ), + mesh, + dimensionedScalar(dimViscosity, Zero) +); + +if (!DT.headerOk()) +{ + IOdictionary transportProperties + ( + IOobject + ( + "transportProperties", + runTime.constant(), + mesh, + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE + ) + ); + DT = dimensionedScalar("DT", dimViscosity, transportProperties); +} + +#include "createFvOptions.H" diff --git a/partitioned-heat-conduction/openfoam-solver/heatTransfer.C b/partitioned-heat-conduction/openfoam-solver/heatTransfer.C new file mode 100644 index 000000000..6194f6fc1 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-solver/heatTransfer.C @@ -0,0 +1,114 @@ +// This solver is based on previous work of OpenCFD Ltd. In particular, major code +// parts are part of the laplacianFoam solver of OpenFOAM 2012, which served as a +// basis for this solver. +// ------------------------------------------------------------------------------- +// Application +// heatTransfer +// +// Group +// grpBasicSolvers +// +// Description +// Modified version of the Laplace equation solver for a scalar quantity with +// a non-zero RHS. +// +// \heading Solver details +// The solver is applicable to, e.g. for thermal diffusion in a solid. The +// equation is given by: +// +// \f[ +// \ddt{T} = \div \left( D_T \grad T \right) + F +// \f] +// +// Where: +// \vartable +// T | Scalar field which is solved for, e.g. temperature +// D_T | Diffusion coefficient +// F | The RHS which is defined as: beta - 2 - 2 * alpha +// \endvartable +// +// \heading Required fields +// \plaintable +// T | Scalar field which is solved for, e.g. temperature +// \endplaintable + + +#include "fvCFD.H" +#include "fvOptions.H" +#include "simpleControl.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +int main(int argc, char *argv[]) +{ + argList::addNote + ( + "Laplace equation solver for a scalar quantity." + ); + + #include "postProcess.H" + + #include "addCheckCaseOptions.H" + #include "setRootCaseLists.H" + #include "createTime.H" + #include "createMesh.H" + + simpleControl simple(mesh); + + #include "createFields.H" + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + Info<< "\nCalculating temperature distribution\n" << endl; + + const double alpha = 3; + const double beta = 1.3; + const double rhs = beta - 2 - 2 * alpha; + + volScalarField f + ( + IOobject + ( + "RHS", + runTime.timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionedScalar( + "Tdim", + dimensionSet(0, 0, -1, 1, 0, 0, 0), + Foam::scalar(rhs)) + ); + + while (simple.loop()) + { + Info<< "Time = " << runTime.timeName() << nl << endl; + + while (simple.correctNonOrthogonal()) + { + fvScalarMatrix TEqn + ( + fvm::ddt(T) - fvm::laplacian(DT, T) - fvm::Su(f,T) + == + fvOptions(T) + ); + + fvOptions.constrain(TEqn); + TEqn.solve(); + fvOptions.correct(T); + } + + #include "write.H" + + runTime.printExecutionTime(Info); + } + + Info<< "End\n" << endl; + + return 0; +} + + +// ************************************************************************* // diff --git a/partitioned-heat-conduction/openfoam-solver/write.H b/partitioned-heat-conduction/openfoam-solver/write.H new file mode 100644 index 000000000..c4d405d44 --- /dev/null +++ b/partitioned-heat-conduction/openfoam-solver/write.H @@ -0,0 +1,58 @@ + if (runTime.writeTime()) + { + volVectorField gradT(fvc::grad(T)); + + volScalarField gradTx + ( + IOobject + ( + "gradTx", + runTime.timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + gradT.component(vector::X) + ); + + volScalarField gradTy + ( + IOobject + ( + "gradTy", + runTime.timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + gradT.component(vector::Y) + ); + + volScalarField gradTz + ( + IOobject + ( + "gradTz", + runTime.timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + gradT.component(vector::Z) + ); + + volVectorField DTgradT + ( + IOobject + ( + "flux", + runTime.timeName(), + mesh, + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + DT*gradT + ); + + runTime.write(); + } diff --git a/partitioned-heat-conduction/precice-config.xml b/partitioned-heat-conduction/precice-config.xml index a810f285d..280fcb2f2 100644 --- a/partitioned-heat-conduction/precice-config.xml +++ b/partitioned-heat-conduction/precice-config.xml @@ -1,61 +1,75 @@ - - + - - + - - - + + - - + + - - + + - - - - - + + + + + - - - - - + + + + + - + - - - - - - - - + + + + + + + + - - - - - + + + + + - From 1672e89181e66346127ba40cd15cb513d3fafb39 Mon Sep 17 00:00:00 2001 From: DavidSCN Date: Thu, 29 Jul 2021 13:25:14 +0200 Subject: [PATCH 28/55] Add missing review changes supposed to be part of #223 --- partitioned-heat-conduction/README.md | 2 +- partitioned-heat-conduction/openfoam-dirichlet/clean.sh | 1 + partitioned-heat-conduction/openfoam-neumann/clean.sh | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/partitioned-heat-conduction/README.md b/partitioned-heat-conduction/README.md index 83b668eb1..71dbf5b0b 100644 --- a/partitioned-heat-conduction/README.md +++ b/partitioned-heat-conduction/README.md @@ -35,7 +35,7 @@ Running this tutorial with OpenFOAM is a bit of a challenge and requires some sp * First of all, OpenFOAM does not provide a Laplace solver with a non-zero right-hand side. Therefore, we provide a modified Laplace solver together with the tutorial, which needs to be compiled before running the tutorial. The solver can be compiled by executing `wmake` in the solver directory `./openfoam-solver/`. The generated executable will be stored in the `FOAM_USER_APPBIN` by default. Afterwards, the custom solver `heatTransfer` can be started from the respective OpenFOAM case directory, as usual. -* The second challenge is given by the time- and space-dependent Dirichlet boundary conditions required for domain boundaries not belonging to the interface. For this purpose, a valid installation of `groovyBC` (part of `swak4Foam`) is required. +* The second challenge is given by the time- and space-dependent Dirichlet boundary conditions required for domain boundaries not belonging to the interface. For this purpose, a valid installation of `groovyBC` (part of [`swak4Foam`](https://openfoamwiki.net/index.php/Contrib/swak4Foam)) is required. * The third challenge is given by the space-dependent initial conditions. We use `funkySetFields` (installed with OpenFOAM) to evaluate the initial condition. You can directly execute the `./run.sh` script, which calls the `setInitialField.sh` in order to evaluate the required initial condition and store it in the `0` directory. Note that `run.sh` deletes the `0` time directory and copies it again from `0.orig`. If you start modifying the initial or boundary conditions, make sure you modify the files located in the `0.orig` directory in combination with the default `run.sh` scripts. diff --git a/partitioned-heat-conduction/openfoam-dirichlet/clean.sh b/partitioned-heat-conduction/openfoam-dirichlet/clean.sh index c31d9fc76..1d4095dbf 100755 --- a/partitioned-heat-conduction/openfoam-dirichlet/clean.sh +++ b/partitioned-heat-conduction/openfoam-dirichlet/clean.sh @@ -4,3 +4,4 @@ set -e -u . ../../tools/cleaning-tools.sh clean_openfoam . +rm -rfv 0 diff --git a/partitioned-heat-conduction/openfoam-neumann/clean.sh b/partitioned-heat-conduction/openfoam-neumann/clean.sh index c31d9fc76..1d4095dbf 100755 --- a/partitioned-heat-conduction/openfoam-neumann/clean.sh +++ b/partitioned-heat-conduction/openfoam-neumann/clean.sh @@ -4,3 +4,4 @@ set -e -u . ../../tools/cleaning-tools.sh clean_openfoam . +rm -rfv 0 From abefa998d6e0c2f7d82b802b8c3c01caecc8e574 Mon Sep 17 00:00:00 2001 From: Benjamin Rodenberg Date: Thu, 12 Aug 2021 08:45:53 +0200 Subject: [PATCH 29/55] flow-over-heated-plate: Add density and pressure to problem parameters (#233) * Update README.md * Add ambient pressure --- flow-over-heated-plate/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow-over-heated-plate/README.md b/flow-over-heated-plate/README.md index 1d54234e0..7082080f4 100644 --- a/flow-over-heated-plate/README.md +++ b/flow-over-heated-plate/README.md @@ -15,7 +15,7 @@ This scenario consists of one fluid and one solid participant and it is inspired The test case is two-dimensional and a serial-implicit coupling with Aitken underrelaxation is used for the coupling. -The inlet velocity is $$ u_{\infty} = 0.1 m/s $$, the inlet temperature is $$ T_{\infty} = 300K $$. The fluid and solid have the same thermal conductivities $$ k_S = k_F = 100 W/m/K $$. Further material properties of the fluid are its viscosity $$ mu = 0.0002 kg/m/s $$ and specific heat capacity $$ c_p = 5000 J/kg/K $$. The Prandtl number $$ Pr = 0.01 $$ follows from thermal conductivity, viscosity and specific heat capacity. The solid has the thermal diffusivity $$ \alpha = 1 m^2/s $$. The gravitational acceleration is $$ g = 9.81 m/s^2 $$. +The inlet velocity is $$ u_{\infty} = 0.1 m/s $$, the inlet temperature is $$ T_{\infty} = 300K $$ and ambient pressure is $$ p_0 = 103500 Pa $$ . The fluid and solid have the same thermal conductivities $$ k_S = k_F = 100 W/m/K $$ and densities $$ rho_S = rho_F = 1 kg/m^3 $$. Further material properties of the fluid are its viscosity $$ mu = 0.0002 kg/m/s $$ and specific heat capacity $$ c_p = 5000 J/kg/K $$. The Prandtl number $$ Pr = 0.01 $$ follows from thermal conductivity, viscosity and specific heat capacity. The solid has the thermal diffusivity $$ \alpha = 1 m^2/s $$. The gravitational acceleration is $$ g = 9.81 m/s^2 $$. ## Available solvers From bf76752715d84f5c3c600186f20c6c9995d8d9a3 Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Thu, 16 Sep 2021 19:10:20 +0200 Subject: [PATCH 30/55] Repair erronous execution command in paritioned-heat-conduction-complex (#236) * Add PEP8 CI. * Format code-base. * Better formatting * Increase line length to 120. * Some more reformatting. * Minor reformatting. * More reformatting. * Cleanup perpendicular flap. * Partially update for turek-hron. BROKEN! #186 * Add missing file. * Remove turek-hron FEniCS solver. * Update broken run script for paritioned-heat-conduction-complex FEniCS case Co-authored-by: BenjaminRodenberg --- partitioned-heat-conduction-complex/fenics/run.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/partitioned-heat-conduction-complex/fenics/run.sh b/partitioned-heat-conduction-complex/fenics/run.sh index e31f07a10..0b375221b 100755 --- a/partitioned-heat-conduction-complex/fenics/run.sh +++ b/partitioned-heat-conduction-complex/fenics/run.sh @@ -4,10 +4,10 @@ set -e -u while getopts ":dn" opt; do case ${opt} in d) - python3 heat.py -d --error-tol 10e-3 + python3 heat.py -d -a ;; n) - python3 heat.py -n --error-tol 10e-3 + python3 heat.py -n -a ;; \?) echo "Usage: cmd [-d] [-n]" From b966f24cc0472feeefca739b943bd560a60d0e09 Mon Sep 17 00:00:00 2001 From: David Schneider Date: Tue, 21 Sep 2021 21:18:15 +0200 Subject: [PATCH 31/55] Remove 1-d tube warning (#237) --- elastic-tube-1d/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/elastic-tube-1d/README.md b/elastic-tube-1d/README.md index 5bebb1af5..4062311c3 100644 --- a/elastic-tube-1d/README.md +++ b/elastic-tube-1d/README.md @@ -90,8 +90,6 @@ cd solid-python **Optional:** A run-time plot visualization can be trigged by passing `--enable-plot` in `run.sh` of `FluidSolver.py`. Additionally a video of the run-time plot visualization can be generated by additionally passing `--write-video` -{% include warning.html content= "The C++ and Python solvers lead to different results. Please consider the Python results as the correct ones and refer to this [open issue](https://github.com/precice/tutorials/issues/195) for more insight. Contributions are particularly welcome here." %} - ## Post-processing ![Elastic tube animation](images/tutorials-elastic-tube-1d-animation.gif) From b5930fc529e8b757e128fba94233419643cb1200 Mon Sep 17 00:00:00 2001 From: David Schneider Date: Thu, 23 Sep 2021 09:51:43 +0200 Subject: [PATCH 32/55] Remove 'www' from preCICE website links (#238) * Remove 'www' from preCICE links * Fix link in run script --- README.md | 4 ++-- elastic-tube-1d/README.md | 6 +++--- elastic-tube-3d/README.md | 8 ++++---- .../README.md | 12 +++++------ flow-over-heated-plate-steady-state/README.md | 8 ++++---- .../solid-codeaster/run.sh | 2 +- flow-over-heated-plate/README.md | 8 ++++---- heat-exchanger/README.md | 6 +++--- multiple-perpendicular-flaps/README.md | 8 ++++---- partitioned-elastic-beam/README.md | 4 ++-- partitioned-heat-conduction-complex/README.md | 2 +- partitioned-heat-conduction/README.md | 4 ++-- partitioned-pipe/README.md | 6 +++--- perpendicular-flap/README.md | 14 ++++++------- quickstart/README.md | 20 +++++++++---------- turek-hron-fsi3/README.md | 8 ++++---- volume-coupled-diffusion/README.md | 2 +- 17 files changed, 61 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index 6e5b5b0f9..a80f1f0a8 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # preCICE tutorials -This repository contains ready-to-run tutorial cases for the coupling library [preCICE](http://www.precice.org/). -The purpose of these cases is not to teach you how to use preCICE from scratch, but to serve as starting points for setting up similar simulation cases, as well as test cases. Read more on our [preCICE tutorials](https://www.precice.org/tutorials.html) documentation section. +This repository contains ready-to-run tutorial cases for the coupling library [preCICE](https://precice.org/). +The purpose of these cases is not to teach you how to use preCICE from scratch, but to serve as starting points for setting up similar simulation cases, as well as test cases. Read more on our [preCICE tutorials](https://precice.org/tutorials.html) documentation section. As a general rule, you can start each participant from inside their `/-` using `./run.sh`. Look into these short scripts and copy the parts you need for your new case. Before running again, execute the cleaning scripts you can find at each level, to clean from this point and deeper. diff --git a/elastic-tube-1d/README.md b/elastic-tube-1d/README.md index 4062311c3..171583695 100644 --- a/elastic-tube-1d/README.md +++ b/elastic-tube-1d/README.md @@ -5,7 +5,7 @@ keywords: OpenFOAM, python summary: The 1D Elastic Tube is a FSI case, that consists of an internal flow in a flexible tube. The flow is unsteady and incompressible. This tutorial contains C++ and Python variants of the fluid and solid solvers. Running the simulation takes just 1-2 minutes. --- -{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/elastic-tube-1d). Read how in the [tutorials introduction](https://www.precice.org/tutorials.html)." %} +{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/elastic-tube-1d). Read how in the [tutorials introduction](https://precice.org/tutorials.html)." %} ## Setup @@ -31,8 +31,8 @@ Additionally the solvers use the parameters `N = 100` (number of cells), `tau = Both fluid and solid participant are supported in: -- *C++*: An example solver using the intrinsic [C++ API of preCICE](https://www.precice.org/couple-your-code-api.html). This solver also depends on LAPACK (e.g. on Ubuntu `sudo apt-get install liblapack-dev`) -- *Python*: An example solver using the preCICE [Python bindings](https://www.precice.org/installation-bindings-python.html). This solver also depends on the Python libraries `numpy scipy matplotlib vtk mpi4py`, which you can get from your system package manager or with `pip3 install --user `. +- *C++*: An example solver using the intrinsic [C++ API of preCICE](https://precice.org/couple-your-code-api.html). This solver also depends on LAPACK (e.g. on Ubuntu `sudo apt-get install liblapack-dev`) +- *Python*: An example solver using the preCICE [Python bindings](https://precice.org/installation-bindings-python.html). This solver also depends on the Python libraries `numpy scipy matplotlib vtk mpi4py`, which you can get from your system package manager or with `pip3 install --user `. ### Building the C++ Solver diff --git a/elastic-tube-3d/README.md b/elastic-tube-3d/README.md index 5da2a3a3b..65f2bde08 100644 --- a/elastic-tube-3d/README.md +++ b/elastic-tube-3d/README.md @@ -5,23 +5,23 @@ keywords: FSI, OpenFOAM, CalculiX, nearest-projection, IMVJ summary: Tutorial for an FSI simulation of a three-dimensional expanding tube scenario --- -{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/elastic-tube-3d). Read how in the [tutorials introduction](https://www.precice.org/tutorials.html)." %} +{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/elastic-tube-3d). Read how in the [tutorials introduction](https://precice.org/tutorials.html)." %} ## Setup The expanding tube test case involves a cylindrical fluid domain surrounded by a solid domain. A pressure inlet boundary condition is applied at the inlet for 3 milliseconds, and then 0 set to zero for a further 7 millisecond. The pressure of the fluid expands the tube which then relaxes once the pressure decreases. -The expanding tube test case comes with the interface surface mesh connectivity of the solid domain. This allows the use of nearest-projection mapping of the displacements of the solid domain. In order to run the example with nearest projection mapping, the "node-mesh-with-connectivity" has been specified in the `solid-calculix/config.yml` file. More details can be found in the [CalculiX configuration description](https://www.precice.org/adapter-calculix-config.html#nearest-projection-mapping). +The expanding tube test case comes with the interface surface mesh connectivity of the solid domain. This allows the use of nearest-projection mapping of the displacements of the solid domain. In order to run the example with nearest projection mapping, the "node-mesh-with-connectivity" has been specified in the `solid-calculix/config.yml` file. More details can be found in the [CalculiX configuration description](https://precice.org/adapter-calculix-config.html#nearest-projection-mapping). ## Available solvers Fluid participant: -* OpenFOAM. This tutorial is known to work with OpenFOAM 4.1, 5.0, but it should also work with newer versions. The case files are prepared for the latest versions of OpenFOAM and use the solver `pimpleFoam`. In case you are using a previous OpenFOAM version you need to adjust the solver to `pimpleDyMFoam` in the `Fluid/system/controlDict` file. For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). +* OpenFOAM. This tutorial is known to work with OpenFOAM 4.1, 5.0, but it should also work with newer versions. The case files are prepared for the latest versions of OpenFOAM and use the solver `pimpleFoam`. In case you are using a previous OpenFOAM version you need to adjust the solver to `pimpleDyMFoam` in the `Fluid/system/controlDict` file. For more information, have a look at the [OpenFOAM adapter documentation](https://precice.org/adapter-openfoam-overview.html). Solid participant: -* CalculiX. This tutorial is known to work with CalculiX 2.15, but it should also work with newer versions. For more information, have a look at the [CalculiX adapter documentation](https://www.precice.org/adapter-calculix-overview.html). +* CalculiX. This tutorial is known to work with CalculiX 2.15, but it should also work with newer versions. For more information, have a look at the [CalculiX adapter documentation](https://precice.org/adapter-calculix-overview.html). ## Running the simulation diff --git a/flow-over-heated-plate-nearest-projection/README.md b/flow-over-heated-plate-nearest-projection/README.md index 2799d57a8..41de23551 100644 --- a/flow-over-heated-plate-nearest-projection/README.md +++ b/flow-over-heated-plate-nearest-projection/README.md @@ -5,23 +5,23 @@ keywords: OpenFOAM, nearest-projection, CHT summary: This tutorial introduces an example simulation setup for a nearest-projection mapping, based on the "flow over a heated plate" scenario. --- -{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/flow-over-heated-plate-nearest-projection). Read how in the [tutorials introduction](https://www.precice.org/tutorials.html)." %} +{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/flow-over-heated-plate-nearest-projection). Read how in the [tutorials introduction](https://precice.org/tutorials.html)." %} ## Setup -The setup is exactly the same as described in our [flow-over-heated-plate tutorial](https://www.precice.org/tutorials-flow-over-heated-plate.html). +The setup is exactly the same as described in our [flow-over-heated-plate tutorial](https://precice.org/tutorials-flow-over-heated-plate.html). ## Available solvers Fluid participant: -* OpenFOAM (buoyantPimpleFoam). For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). +* OpenFOAM (buoyantPimpleFoam). For more information, have a look at the [OpenFOAM adapter documentation](https://precice.org/adapter-openfoam-overview.html). Solid participant: -* OpenFOAM (laplacianFoam). For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). +* OpenFOAM (laplacianFoam). For more information, have a look at the [OpenFOAM adapter documentation](https://precice.org/adapter-openfoam-overview.html). -The solvers are currently only OpenFOAM related. For information regarding the nearest-projection mapping, have a look in the [OpenFOAM configuration section](https://www.precice.org/adapter-openfoam-config.html). +The solvers are currently only OpenFOAM related. For information regarding the nearest-projection mapping, have a look in the [OpenFOAM configuration section](https://precice.org/adapter-openfoam-config.html). ## Running the Simulation @@ -66,7 +66,7 @@ From the preCICE point of view, the simulation here is in 3D, as opposed to the ## Post-processing -Have a look at the [flow-over heated-plate](https://www.precice.org/tutorials-flow-over-heated-plate.html) tutorial for the general aspects of post-processing. +Have a look at the [flow-over heated-plate](https://precice.org/tutorials-flow-over-heated-plate.html) tutorial for the general aspects of post-processing. Since we now defined mesh connectivity on our interface, we can export the coupling interface with the tag `` in our `precice-config.xml`. Visualizing these files (e.g. using ParaView) will show a triangular mesh, even though you use hexahedral meshes. This has nothing to do with your mesh and is just caused by the way the connectivity is defined in preCICE. As described above, the function `setMeshTriangles` is used to define the connectivity. Hence, every interface cell/face is represented by two triangles. The following image should give you an impression of a possible triangulated coupling mesh, which consists purely of hexahedral cells: diff --git a/flow-over-heated-plate-steady-state/README.md b/flow-over-heated-plate-steady-state/README.md index 6e92f7d5d..741f2ade5 100644 --- a/flow-over-heated-plate-steady-state/README.md +++ b/flow-over-heated-plate-steady-state/README.md @@ -5,11 +5,11 @@ keywords: CHT, steady-state, Code_Aster, OpenFOAM summary: Using a steady-state OpenFOAM solver for a CHT coupling with code_aster. This tutorial is based on the "flow over a heated plate" scenario. --- -{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/flow-over-heated-plate-steady-state). Read how in the [tutorials introduction](https://www.precice.org/tutorials.html)." %} +{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/flow-over-heated-plate-steady-state). Read how in the [tutorials introduction](https://precice.org/tutorials.html)." %} ## Setup -The setup for this tutorial is similar to the [flow over a heated plate](https://www.precice.org/tutorials-flow-over-heated-plate.html) using OpenFOAM. In this tutorial OpenFOAM is used as the solver for the fluid domain, and code_aster is the solver for the solid domain. A difference here is that we are using a steady-state OpenFOAM solver for demonstration purposes, therefore the results between the two tutorials are not comparable. +The setup for this tutorial is similar to the [flow over a heated plate](https://precice.org/tutorials-flow-over-heated-plate.html) using OpenFOAM. In this tutorial OpenFOAM is used as the solver for the fluid domain, and code_aster is the solver for the solid domain. A difference here is that we are using a steady-state OpenFOAM solver for demonstration purposes, therefore the results between the two tutorials are not comparable. {% include note.html content="This is a pseudo-2D case, but we still set a 3D `solver-interface` in `precice-config.xml`, because the code_aster case is set up like this at the moment. Contributions here are particularly welcome!" %} @@ -17,11 +17,11 @@ The setup for this tutorial is similar to the [flow over a heated plate](https:/ Fluid participant: -* OpenFOAM. We use buoyantSimpleFoam instead of the transient buoyantPimpleFoam. For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). +* OpenFOAM. We use buoyantSimpleFoam instead of the transient buoyantPimpleFoam. For more information, have a look at the [OpenFOAM adapter documentation](https://precice.org/adapter-openfoam-overview.html). Solid participant: -* code_aster. The [code_aster adapter documentation](https://www.precice.org/adapter-code_aster.html) is oriented on this tutorial case. In particular the described configuration settings. +* code_aster. The [code_aster adapter documentation](https://precice.org/adapter-code_aster.html) is oriented on this tutorial case. In particular the described configuration settings. ## Running the Simulation diff --git a/flow-over-heated-plate-steady-state/solid-codeaster/run.sh b/flow-over-heated-plate-steady-state/solid-codeaster/run.sh index 3860a6a10..93592fa88 100755 --- a/flow-over-heated-plate-steady-state/solid-codeaster/run.sh +++ b/flow-over-heated-plate-steady-state/solid-codeaster/run.sh @@ -4,7 +4,7 @@ set -e -u echo "Warning: this case requires a manual preparation step for code_aster." echo "You also need to set an absolute path as exchange-directory in precice-config.xml." echo "See the tutorial and code_aster adapter documentation pages for more:" -echo "https://www.precice.org/adapter-code_aster.html" +echo "https://precice.org/adapter-code_aster.html" echo "" export TUTORIAL_ROOT=${PWD} diff --git a/flow-over-heated-plate/README.md b/flow-over-heated-plate/README.md index 7082080f4..124c2b54b 100644 --- a/flow-over-heated-plate/README.md +++ b/flow-over-heated-plate/README.md @@ -5,7 +5,7 @@ keywords: tutorial, CHT, conjugate-heat transfer, OpenFOAM, FEniCS, Nutils summary: This tutorial describes how to run a conjugate heat transfer coupled simulation using preCICE and any fluid-solid solver combination of our officially provided adapter codes. --- -{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/flow-over-heated-plate). Read how in the [tutorials introduction](https://www.precice.org/tutorials.html)." %} +{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/flow-over-heated-plate). Read how in the [tutorials introduction](https://precice.org/tutorials.html)." %} ## Setup @@ -23,13 +23,13 @@ By default, the fluid participant reads heat-flux values and the solid participa Fluid participant: -* OpenFOAM (buoyantPimpleFoam). For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). +* OpenFOAM (buoyantPimpleFoam). For more information, have a look at the [OpenFOAM adapter documentation](https://precice.org/adapter-openfoam-overview.html). Solid participant: -* OpenFOAM (laplacianFoam). For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). +* OpenFOAM (laplacianFoam). For more information, have a look at the [OpenFOAM adapter documentation](https://precice.org/adapter-openfoam-overview.html). -* FEniCS. For more information, have a look at the [FeniCS adapter documentation](https://www.precice.org/adapter-fenics.html). +* FEniCS. For more information, have a look at the [FeniCS adapter documentation](https://precice.org/adapter-fenics.html). * Nutils. For more information, have a look at the [Nutils adapter documentation](https://precice.org/adapter-nutils.html). diff --git a/heat-exchanger/README.md b/heat-exchanger/README.md index d08cadb05..42a39cd02 100644 --- a/heat-exchanger/README.md +++ b/heat-exchanger/README.md @@ -5,7 +5,7 @@ keywords: CHT, OpenFOAM, CalculiX summary: Tutorial for a shell-and-tube heat exchanger, using OpenFOAM and CalculiX --- -{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/heat-exchanger). Read how in the [tutorials introduction](https://www.precice.org/tutorials.html)." %} +{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/heat-exchanger). Read how in the [tutorials introduction](https://precice.org/tutorials.html)." %} This tutorial describes how to run a conjugate heat transfer simulation with two separate OpenFOAM solvers and CalculiX. The files for this tutorial are located in this repository (directory CHT/heat_exchanger). @@ -23,9 +23,9 @@ We define the participants `Inner-Fluid`, `Solid`, and `Outer-Fluid` and two int ## Available solvers -* OpenFOAM. `buoyantSimpleFoam` is used for fluid flow (both participants). This is a solver for steady-state, buoyant, turbulent flow of compressible fluids for ventilation and heat transfer. For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). +* OpenFOAM. `buoyantSimpleFoam` is used for fluid flow (both participants). This is a solver for steady-state, buoyant, turbulent flow of compressible fluids for ventilation and heat transfer. For more information, have a look at the [OpenFOAM adapter documentation](https://precice.org/adapter-openfoam-overview.html). -* CalculiX. For more information, have a look at the [CalculiX adapter documentation](https://www.precice.org/adapter-calculix-overview.html). +* CalculiX. For more information, have a look at the [CalculiX adapter documentation](https://precice.org/adapter-calculix-overview.html). ## Running the Simulation diff --git a/multiple-perpendicular-flaps/README.md b/multiple-perpendicular-flaps/README.md index 6d90879a7..bf1cda180 100644 --- a/multiple-perpendicular-flaps/README.md +++ b/multiple-perpendicular-flaps/README.md @@ -5,7 +5,7 @@ keywords: multi-coupling, OpenFOAM, deal.II, FSI summary: In this case, a fluid and two solids are coupled together using a fully-implicit multi-coupling scheme. --- -{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/multiple-perpendicular-flaps). Read how in the [tutorials introduction](https://www.precice.org/tutorials.html)." %} +{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/multiple-perpendicular-flaps). Read how in the [tutorials introduction](https://precice.org/tutorials.html)." %} ## Case Setup @@ -21,11 +21,11 @@ The inflow velocity is 5 m/s (uniform) on the left boundary. At the outlet, pressure is set to zero and velocity to `zeroGradient`. The top, bottom and flap are walls with a `noslip` condition. -For a case showing fluid-structure interaction only (no multi-coupling), take a look at the [single perpendicular flap tutorial](https://www.precice.org/tutorials-perpendicular-flap.html). +For a case showing fluid-structure interaction only (no multi-coupling), take a look at the [single perpendicular flap tutorial](https://precice.org/tutorials-perpendicular-flap.html). ## Why multi-coupling? -This is a case with three participants: the fluid and each flap. In preCICE, there are two options to [couple more than two participants](https://www.precice.org/configuration-coupling-multi.html). The first option a composition of bi-coupling schemes, in which we must specify the exchange of data in a participant to participant manner. However, such a composition is not suited for combining multiple strong fluid-structure interations [1]. Thus, in this case, we use the second option, fully-implicit multi-coupling. +This is a case with three participants: the fluid and each flap. In preCICE, there are two options to [couple more than two participants](https://precice.org/configuration-coupling-multi.html). The first option a composition of bi-coupling schemes, in which we must specify the exchange of data in a participant to participant manner. However, such a composition is not suited for combining multiple strong fluid-structure interations [1]. Thus, in this case, we use the second option, fully-implicit multi-coupling. We can set this in our `precice-config.xml`: @@ -67,7 +67,7 @@ The scenario settings are implemented similarly for the nonlinear case. ## Running the Simulation 1. Preparation: - To run the coupled simulation, copy the deal.II executable `linear_elasticity` or `nonlinear_elasticity` into the main folder. To learn how to obtain the deal.II executable take a look at the description on the [deal.II-adapter page](https://www.precice.org/adapter-dealii-overview.html). + To run the coupled simulation, copy the deal.II executable `linear_elasticity` or `nonlinear_elasticity` into the main folder. To learn how to obtain the deal.II executable take a look at the description on the [deal.II-adapter page](https://precice.org/adapter-dealii-overview.html). 2. Starting: We are going to run each solver in a different terminal. It is important that first we navigate to the simulation directory so that all solvers start in the same directory. diff --git a/partitioned-elastic-beam/README.md b/partitioned-elastic-beam/README.md index f497afb32..cb752a984 100644 --- a/partitioned-elastic-beam/README.md +++ b/partitioned-elastic-beam/README.md @@ -5,7 +5,7 @@ keywords: Structure-Structure Coupling, CalculiX, solid mechanics summary: This tutorial describes how to run a structure-structure interaction simulation with CalculiX running on both sides. --- -{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/partitioned-elastic-beam). Read how in the [tutorials introduction](https://www.precice.org/tutorials.html)." %} +{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/partitioned-elastic-beam). Read how in the [tutorials introduction](https://precice.org/tutorials.html)." %} ## Setup @@ -15,7 +15,7 @@ We have a rectangular linear elastic beam of dimensions 1 x 1 x 8 m, divided in ## Available solvers -* CalculiX. CalculiX is used for both structural parts. For more information, have a look at the [CalculiX adapter documentation](https://www.precice.org/adapter-calculix-overview.html) for more. +* CalculiX. CalculiX is used for both structural parts. For more information, have a look at the [CalculiX adapter documentation](https://precice.org/adapter-calculix-overview.html) for more. ## Running the Simulation diff --git a/partitioned-heat-conduction-complex/README.md b/partitioned-heat-conduction-complex/README.md index a5024ae00..a8102f42e 100644 --- a/partitioned-heat-conduction-complex/README.md +++ b/partitioned-heat-conduction-complex/README.md @@ -5,7 +5,7 @@ keywords: FEniCS, Heat conduction summary: This tutorial is the advanced version of the "partitioned heat conduction" tutorial, showcasing more advanced features and geometries. --- -{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/partitioned-heat-conduction-complex). Read how in the [tutorials introduction](https://www.precice.org/tutorials.html)." %} +{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/partitioned-heat-conduction-complex). Read how in the [tutorials introduction](https://precice.org/tutorials.html)." %} ## Setup diff --git a/partitioned-heat-conduction/README.md b/partitioned-heat-conduction/README.md index 71dbf5b0b..6f50f1efb 100644 --- a/partitioned-heat-conduction/README.md +++ b/partitioned-heat-conduction/README.md @@ -5,7 +5,7 @@ keywords: FEniCS, Nutils, Heat conduction summary: We solve a simple heat equation. The domain is partitioned and the coupling is established in a Dirichlet-Neumann fashion. --- -{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/partitioned-heat-conduction). Read how in the [tutorials introduction](https://www.precice.org/tutorials.html)." %} +{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/partitioned-heat-conduction). Read how in the [tutorials introduction](https://precice.org/tutorials.html)." %} ## Setup @@ -27,7 +27,7 @@ You can either couple a solver with itself or different solvers with each other. * Nutils. Install [Nutils](http://www.nutils.org/en/latest/). -* OpenFOAM. Install OpenFOAM and the [OpenFOAM adapter](https://www.precice.org/adapter-openfoam-overview.html). This tutorial uses a custom solver, which you can find in `tutorials/partitioned-heat-conduction/openfoam-solver` and build using `cd tutorials/partitioned-heat-conduction/openfoam-solver && wmake`. Have a look at the section below (Notes on the OpenFOAM case) for further information. +* OpenFOAM. Install OpenFOAM and the [OpenFOAM adapter](https://precice.org/adapter-openfoam-overview.html). This tutorial uses a custom solver, which you can find in `tutorials/partitioned-heat-conduction/openfoam-solver` and build using `cd tutorials/partitioned-heat-conduction/openfoam-solver && wmake`. Have a look at the section below (Notes on the OpenFOAM case) for further information. ### Notes on the OpenFOAM case diff --git a/partitioned-pipe/README.md b/partitioned-pipe/README.md index 9070cacc6..faf36fb2b 100644 --- a/partitioned-pipe/README.md +++ b/partitioned-pipe/README.md @@ -5,7 +5,7 @@ keywords: tutorial, FF, fluid-fluid coupling, OpenFOAM, pimpleFoam, sonicLiquidF summary: This tutorial describes how to run a partitioned fluid simulation using preCICE. --- -{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/partitioned-pipe). Read how in the [tutorials introduction](https://www.precice.org/tutorials.html)." %} +{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/partitioned-pipe). Read how in the [tutorials introduction](https://precice.org/tutorials.html)." %} ## Setup @@ -17,9 +17,9 @@ On the coupling interface, Fluid1 sends velocity and pressure gradient to Fluid2 Both for Fluid1 and Fluid2, the following participants are available: -* OpenFOAM (pimpleFoam). An incompressible OpenFOAM solver. For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). +* OpenFOAM (pimpleFoam). An incompressible OpenFOAM solver. For more information, have a look at the [OpenFOAM adapter documentation](https://precice.org/adapter-openfoam-overview.html). -* OpenFOAM (sonicLiquidFoam). A compressible OpenFOAM solver. For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). +* OpenFOAM (sonicLiquidFoam). A compressible OpenFOAM solver. For more information, have a look at the [OpenFOAM adapter documentation](https://precice.org/adapter-openfoam-overview.html). ## Running the Simulation diff --git a/perpendicular-flap/README.md b/perpendicular-flap/README.md index 6eef8a2ca..9949d3566 100644 --- a/perpendicular-flap/README.md +++ b/perpendicular-flap/README.md @@ -5,7 +5,7 @@ keywords: fluid-structure interaction, FSI, OpenFOAM, FEniCS, Nutils, deal.II, C summary: This tutorial describes how to run a fluid-structure interaction using preCICE and any fluid-solid solver combination of our officially provided adapter codes. --- -{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/perpendicular-flap). Read how in the [tutorials introduction](https://www.precice.org/tutorials.html)." %} +{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/perpendicular-flap). Read how in the [tutorials introduction](https://precice.org/tutorials.html)." %} ## Setup @@ -19,19 +19,19 @@ The simulated flow domain is 6 units long (x) and 4 units tall (y). The flap is Fluid participant: -* OpenFOAM. For older OpenFOAM versions, the solver name differs: If you are using OpenFOAM v1712 / 5.x or older have a look at `fluid-openfoam/system/controlDict` and set the appropriate solver name. The solver can run in parallel using the command line argument `run.sh -parallel`. For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). +* OpenFOAM. For older OpenFOAM versions, the solver name differs: If you are using OpenFOAM v1712 / 5.x or older have a look at `fluid-openfoam/system/controlDict` and set the appropriate solver name. The solver can run in parallel using the command line argument `run.sh -parallel`. For more information, have a look at the [OpenFOAM adapter documentation](https://precice.org/adapter-openfoam-overview.html). -* Nutils. For more information, have a look at the [Nutils adapter documentation](https://www.precice.org/adapter-nutils.html). This Nutils solver requires at least Nutils v6.0. +* Nutils. For more information, have a look at the [Nutils adapter documentation](https://precice.org/adapter-nutils.html). This Nutils solver requires at least Nutils v6.0. -* SU2. As opposed to the other two fluid codes, SU2 is in particular specialized for compressible flow. Therefore the default simulation parameters haven been adjusted in order to pull the setup into the compressible flow regime. For more information, have a look at the [SU2 adapter documentation](https://www.precice.org/adapter-su2-overview.html). +* SU2. As opposed to the other two fluid codes, SU2 is in particular specialized for compressible flow. Therefore the default simulation parameters haven been adjusted in order to pull the setup into the compressible flow regime. For more information, have a look at the [SU2 adapter documentation](https://precice.org/adapter-su2-overview.html). Solid participant: -* FEniCS. The structural model is currently limited to linear elasticity. For more information, have a look at the [FeniCS adapter documentation](https://www.precice.org/adapter-fenics.html). +* FEniCS. The structural model is currently limited to linear elasticity. For more information, have a look at the [FeniCS adapter documentation](https://precice.org/adapter-fenics.html). -* CalculiX. In order to allow a reasonable comparison to all solid codes, the geometrically non-linear solver has been disabled and only a linear model is used by default. For more information, have a look at the [CalculiX adapter documentation](https://www.precice.org/adapter-calculix-overview.html) +* CalculiX. In order to allow a reasonable comparison to all solid codes, the geometrically non-linear solver has been disabled and only a linear model is used by default. For more information, have a look at the [CalculiX adapter documentation](https://precice.org/adapter-calculix-overview.html) -* deal.II. For compatibility reasons, the solver reads `Force` data from other `Fluid` participants. Reading and applying `Force` data is currently only implemented in the linear elastic solid model (`Model = linear` in the parameter file). Thus, the default simulation setup is only compatible with the linear elastic solid model. If you want to apply the non-linear solid model, please use `Stress` data for your read data, which is supported by the OpenFOAM adapter as well (example given in Turek-Hron-FSI). The `./run.sh` script takes the compiled executable `elasticity` as input argument (`run.sh -e=/path/to/elasticity`) and is required in case the executable is not discoverable at runtime (e.g. has been added to the system `PATH`). For more information, have a look at the [deal.II adapter documentation](https://www.precice.org/adapter-dealii-overview.html). +* deal.II. For compatibility reasons, the solver reads `Force` data from other `Fluid` participants. Reading and applying `Force` data is currently only implemented in the linear elastic solid model (`Model = linear` in the parameter file). Thus, the default simulation setup is only compatible with the linear elastic solid model. If you want to apply the non-linear solid model, please use `Stress` data for your read data, which is supported by the OpenFOAM adapter as well (example given in Turek-Hron-FSI). The `./run.sh` script takes the compiled executable `elasticity` as input argument (`run.sh -e=/path/to/elasticity`) and is required in case the executable is not discoverable at runtime (e.g. has been added to the system `PATH`). For more information, have a look at the [deal.II adapter documentation](https://precice.org/adapter-dealii-overview.html). ## Running the Simulation diff --git a/quickstart/README.md b/quickstart/README.md index 33e0a2a24..8bf3133d9 100644 --- a/quickstart/README.md +++ b/quickstart/README.md @@ -25,9 +25,9 @@ To get a feeling what preCICE does, watch a [short presentation](https://www.you sudo apt install ./libprecice2_2.2.1_focal.deb ``` - - Are you using something else? Just pick what suits you best on [this overview page](https://www.precice.org/installation-overview.html). - - Facing any problems? [Ask for help](https://www.precice.org/community-channels.html). -2. We will use OpenFOAM here and in many of our tutorial cases, so [install OpenFOAM](https://www.precice.org/adapter-openfoam-support.html): + - Are you using something else? Just pick what suits you best on [this overview page](https://precice.org/installation-overview.html). + - Facing any problems? [Ask for help](https://precice.org/community-channels.html). +2. We will use OpenFOAM here and in many of our tutorial cases, so [install OpenFOAM](https://precice.org/adapter-openfoam-support.html): ```bash # Add the signing key, add the repository, update (check this): @@ -45,7 +45,7 @@ To get a feeling what preCICE does, watch a [short presentation](https://www.you sudo apt install build-essential pkg-config cmake git ``` -4. Download and install the [OpenFOAM-preCICE adapter](https://www.precice.org/adapter-openfoam-get.html): +4. Download and install the [OpenFOAM-preCICE adapter](https://precice.org/adapter-openfoam-get.html): ```bash git clone --branch=master --depth 1 https://github.com/precice/openfoam-adapter @@ -61,7 +61,7 @@ To get a feeling what preCICE does, watch a [short presentation](https://www.you cd tutorials/quickstart ``` -If you prefer to easily try everything in an isolated environment, you may prefer using our [demo virtual machine](https://www.precice.org/installation-vm.html). +If you prefer to easily try everything in an isolated environment, you may prefer using our [demo virtual machine](https://precice.org/installation-vm.html). ## Case setup @@ -116,10 +116,10 @@ You may be curious what displacements OpenFOAM received from the rigid body solv To become a preCICE pro: -- Get an overview of the [preCICE docs](https://www.precice.org/docs.html). +- Get an overview of the [preCICE docs](https://precice.org/docs.html). - See what users talk about in the [preCICE forum](https://precice.discourse.group/). -- Run [tutorials with other coupled solvers](https://www.precice.org/tutorials.html). +- Run [tutorials with other coupled solvers](https://precice.org/tutorials.html). - Watch some [preCICE videos](https://www.youtube.com/c/preCICECoupling/). -- Meet our [community](https://www.precice.org/community.html). -- Find out how to [couple your own solver](https://www.precice.org/couple-your-code-overview.html). -- Tell us [your story](https://www.precice.org/community-projects.html). +- Meet our [community](https://precice.org/community.html). +- Find out how to [couple your own solver](https://precice.org/couple-your-code-overview.html). +- Tell us [your story](https://precice.org/community-projects.html). diff --git a/turek-hron-fsi3/README.md b/turek-hron-fsi3/README.md index c4064bebb..4cb20c4a6 100644 --- a/turek-hron-fsi3/README.md +++ b/turek-hron-fsi3/README.md @@ -5,7 +5,7 @@ keywords: OpenFOAM, deal.II, verification summary: The Turek-Hron FSI cases are well-established numerical benchmarks and, therefore, well suited for verification of preCICE itself and the used adapters. In this tutorial, we focus on the FSI3 case, which presents the most challenging case in terms of added mass. Please note that the meshes of this case are significantly finer than for other tutorials. Running the simulation might take a few hours. We do not recommend to run this tutorials as your first preCICE tutorial. --- -{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/turek-hron-fsi3). Read how in the [tutorials introduction](https://www.precice.org/tutorials.html)." %} +{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/turek-hron-fsi3). Read how in the [tutorials introduction](https://precice.org/tutorials.html)." %} ## Setup @@ -19,13 +19,13 @@ For more information please refer to the original publication of the benchmark [ Fluid participant: -* OpenFOAM. For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). +* OpenFOAM. For more information, have a look at the [OpenFOAM adapter documentation](https://precice.org/adapter-openfoam-overview.html). {% include important.html content="For the parabolic inflow profile, this tutorial requires groovyBC. groovyBC is part of swak4Foam. You can find more explanations in [openfoamwiki.net](https://openfoamwiki.net/index.php/Contrib/swak4Foam) or get it from an [unofficial GitHub mirror](https://github.com/Unofficial-Extend-Project-Mirror/openfoam-extend-swak4Foam-dev.git). Please follow the building instructions there." %} Solid participant: -* deal.II. For more information, have a look at the [deal.II adapter documentation](https://www.precice.org/adapter-dealii-overview.html). This tutorial requires the nonlinear solid solver. Please copy the nonlinear solver executable to the `solid-dealii` folder or make it discoverable at runtime and update the `solid-dealii/run.sh` script. +* deal.II. For more information, have a look at the [deal.II adapter documentation](https://precice.org/adapter-dealii-overview.html). This tutorial requires the nonlinear solid solver. Please copy the nonlinear solver executable to the `solid-dealii` folder or make it discoverable at runtime and update the `solid-dealii/run.sh` script. ## Running the Simulation @@ -86,7 +86,7 @@ For the double-refined mesh, it is wisely to use local basis functions in the RB support-radius="0.011" constraint="consistent" /> ``` -You can find more information on RBF data mapping in the [documentation](https://www.precice.org/configuration-mapping.html#radial-basis-function-mapping). +You can find more information on RBF data mapping in the [documentation](https://precice.org/configuration-mapping.html#radial-basis-function-mapping). ## References diff --git a/volume-coupled-diffusion/README.md b/volume-coupled-diffusion/README.md index 8ec442c76..28ec8f660 100644 --- a/volume-coupled-diffusion/README.md +++ b/volume-coupled-diffusion/README.md @@ -5,7 +5,7 @@ keywords: FEniCS, Diffusion, Volume Coupling summary: This tutorial illustrates volume coupling with a simple example. --- -{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/develop/volume-coupled-diffusion). Read how in the [tutorials introduction](https://www.precice.org/tutorials.html)." %} +{% include note.html content="Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/develop/volume-coupled-diffusion). Read how in the [tutorials introduction](https://precice.org/tutorials.html)." %} ## Setup From 90804544a51bdef40c013ca56b4dbeff8bb1d10e Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Fri, 1 Oct 2021 23:27:26 +0200 Subject: [PATCH 33/55] Move prompt to clean after visualization --- quickstart/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/quickstart/README.md b/quickstart/README.md index 8bf3133d9..c06f3bea6 100644 --- a/quickstart/README.md +++ b/quickstart/README.md @@ -98,7 +98,6 @@ cd tutorials/quickstart/fluid-openfoam ``` You can also run OpenFOAM in parallel: `./run.sh -parallel`. -Before the simulation again, cleanup the results and temporary files using `./clean-tutorial.sh`. In serial, the simulation should take less than a minute to compute (simulated time: 2.5s). @@ -112,6 +111,12 @@ You may be curious what displacements OpenFOAM received from the rigid body solv {% include disclaimer.html content="This offering is not approved or endorsed by OpenCFD Limited, producer and distributor of the OpenFOAM software via www.openfoam.com, and owner of the OPENFOAM® and OpenCFD® trade marks." %} +## Running again (and again, and again) + +Now that you have a first working example, experiment! For example, how can you tell preCICE to simulate for a longer maximum time? + +Before running the simulation again, cleanup the results and temporary files using `./clean-tutorial.sh`. + ## What's next? To become a preCICE pro: From b7042a5bd97434e469a643e98391bfe58239c76d Mon Sep 17 00:00:00 2001 From: Max Firmbach <76822743+maxfirmbach@users.noreply.github.com> Date: Tue, 7 Dec 2021 08:33:38 +0100 Subject: [PATCH 34/55] Create a perpendicular-flap tutorial case for Dune (#239) * Create Dune tutorial case for perpendicular flap * reorder files * Modify tutorial readme for dune-case * Change to correct executable name * Get executable name right --- perpendicular-flap/README.md | 4 +- perpendicular-flap/solid-dune/Solid.msh | 154 ++++++++++++++++++++++++ perpendicular-flap/solid-dune/clean.sh | 6 + perpendicular-flap/solid-dune/run.sh | 4 + tools/cleaning-tools.sh | 14 ++- 5 files changed, 180 insertions(+), 2 deletions(-) create mode 100755 perpendicular-flap/solid-dune/Solid.msh create mode 100755 perpendicular-flap/solid-dune/clean.sh create mode 100755 perpendicular-flap/solid-dune/run.sh diff --git a/perpendicular-flap/README.md b/perpendicular-flap/README.md index 9949d3566..18300fdab 100644 --- a/perpendicular-flap/README.md +++ b/perpendicular-flap/README.md @@ -1,7 +1,7 @@ --- title: Perpendicular flap permalink: tutorials-perpendicular-flap.html -keywords: fluid-structure interaction, FSI, OpenFOAM, FEniCS, Nutils, deal.II, Calculix, SU2, +keywords: fluid-structure interaction, FSI, OpenFOAM, FEniCS, Nutils, deal.II, Calculix, SU2, Dune summary: This tutorial describes how to run a fluid-structure interaction using preCICE and any fluid-solid solver combination of our officially provided adapter codes. --- @@ -33,6 +33,8 @@ Solid participant: * deal.II. For compatibility reasons, the solver reads `Force` data from other `Fluid` participants. Reading and applying `Force` data is currently only implemented in the linear elastic solid model (`Model = linear` in the parameter file). Thus, the default simulation setup is only compatible with the linear elastic solid model. If you want to apply the non-linear solid model, please use `Stress` data for your read data, which is supported by the OpenFOAM adapter as well (example given in Turek-Hron-FSI). The `./run.sh` script takes the compiled executable `elasticity` as input argument (`run.sh -e=/path/to/elasticity`) and is required in case the executable is not discoverable at runtime (e.g. has been added to the system `PATH`). For more information, have a look at the [deal.II adapter documentation](https://precice.org/adapter-dealii-overview.html). +* Dune. The structural model is limited to linear elasticity. The solver reads `Force` data and writes `Displacement` data. The `./run.sh` script needs the compiled executable `dune-perpendicular-flap` in the same directory, which can be obtained by building the dune-adapter. + ## Running the Simulation All listed solvers can be used in order to run the simulation. Open two separate terminals and start the desired fluid and solid participant by calling the respective run script `run.sh` located in the participant directory. For example: diff --git a/perpendicular-flap/solid-dune/Solid.msh b/perpendicular-flap/solid-dune/Solid.msh new file mode 100755 index 000000000..d14f7cbf7 --- /dev/null +++ b/perpendicular-flap/solid-dune/Solid.msh @@ -0,0 +1,154 @@ +$MeshFormat +2.2 0 8 +$EndMeshFormat +$Nodes +64 +1 -0.05 0 -0.5 +2 -0.05 1 -0.5 +3 0.05 1 -0.5 +4 0.05 0 -0.5 +5 -0.05 0.0666666666665325 -0.5 +6 -0.05 0.1333333333330848 -0.5 +7 -0.05 0.1999999999995569 -0.5 +8 -0.05 0.266666666666029 -0.5 +9 -0.05 0.3333333333325011 -0.5 +10 -0.05 0.3999999999989731 -0.5 +11 -0.05 0.4666666666654452 -0.5 +12 -0.05 0.5333333333321025 -0.5 +13 -0.05 0.599999999998945 -0.5 +14 -0.05 0.6666666666657876 -0.5 +15 -0.05 0.73333333333263 -0.5 +16 -0.05 0.7999999999994725 -0.5 +17 -0.05 0.8666666666663151 -0.5 +18 -0.05 0.9333333333331575 -0.5 +19 -0.0166666666667507 1 -0.5 +20 0.01666666666657628 1 -0.5 +21 0.05 0.9333333333330558 -0.5 +22 0.05 0.866666666666204 -0.5 +23 0.05 0.8 -0.5 +24 0.05 0.7333333333337959 -0.5 +25 0.05 0.6666666666675918 -0.5 +26 0.05 0.6000000000013874 -0.5 +27 0.05 0.5333333333351832 -0.5 +28 0.05 0.466666666668609 -0.5 +29 0.05 0.4000000000016649 -0.5 +30 0.05 0.3333333333347207 -0.5 +31 0.05 0.2666666666677765 -0.5 +32 0.05 0.2000000000008324 -0.5 +33 0.05 0.1333333333338883 -0.5 +34 0.05 0.06666666666694399 -0.5 +35 0.0166666666667507 0 -0.5 +36 -0.01666666666657628 0 -0.5 +37 -0.0166666666665879 0.06666666666666968 -0.5 +38 0.01666666666673907 0.06666666666680683 -0.5 +39 -0.01666666666659953 0.1333333333333527 -0.5 +40 0.01666666666672744 0.1333333333336205 -0.5 +41 -0.01666666666661116 0.1999999999999821 -0.5 +42 0.01666666666671581 0.2000000000004072 -0.5 +43 -0.01666666666662279 0.2666666666666115 -0.5 +44 0.01666666666670419 0.266666666667194 -0.5 +45 -0.01666666666663442 0.333333333333241 -0.5 +46 0.01666666666669255 0.3333333333339808 -0.5 +47 -0.01666666666664605 0.3999999999998704 -0.5 +48 0.01666666666668092 0.4000000000007675 -0.5 +49 -0.01666666666665767 0.4666666666664998 -0.5 +50 0.01666666666666931 0.4666666666675544 -0.5 +51 -0.01666666666666929 0.5333333333331293 -0.5 +52 0.01666666666665767 0.5333333333341564 -0.5 +53 -0.01666666666668093 0.5999999999997592 -0.5 +54 0.01666666666664605 0.6000000000005733 -0.5 +55 -0.01666666666669255 0.666666666666389 -0.5 +56 0.01666666666663442 0.6666666666669904 -0.5 +57 -0.01666666666670419 0.7333333333330185 -0.5 +58 0.0166666666666228 0.7333333333334071 -0.5 +59 -0.01666666666671581 0.7999999999996483 -0.5 +60 0.01666666666661116 0.7999999999998242 -0.5 +61 -0.01666666666672744 0.8666666666662781 -0.5 +62 0.01666666666659953 0.8666666666662408 -0.5 +63 -0.01666666666673907 0.9333333333331235 -0.5 +64 0.0166666666665879 0.9333333333330895 -0.5 +$EndNodes +$Elements +81 +1 1 2 3 1 1 5 +2 1 2 3 1 5 6 +3 1 2 3 1 6 7 +4 1 2 3 1 7 8 +5 1 2 3 1 8 9 +6 1 2 3 1 9 10 +7 1 2 3 1 10 11 +8 1 2 3 1 11 12 +9 1 2 3 1 12 13 +10 1 2 3 1 13 14 +11 1 2 3 1 14 15 +12 1 2 3 1 15 16 +13 1 2 3 1 16 17 +14 1 2 3 1 17 18 +15 1 2 3 1 18 2 +16 1 2 3 2 2 19 +17 1 2 3 2 19 20 +18 1 2 3 2 20 3 +19 1 2 3 3 3 21 +20 1 2 3 3 21 22 +21 1 2 3 3 22 23 +22 1 2 3 3 23 24 +23 1 2 3 3 24 25 +24 1 2 3 3 25 26 +25 1 2 3 3 26 27 +26 1 2 3 3 27 28 +27 1 2 3 3 28 29 +28 1 2 3 3 29 30 +29 1 2 3 3 30 31 +30 1 2 3 3 31 32 +31 1 2 3 3 32 33 +32 1 2 3 3 33 34 +33 1 2 3 3 34 4 +34 1 2 1 4 4 35 +35 1 2 1 4 35 36 +36 1 2 1 4 36 1 +37 3 2 1 1 1 5 37 36 +38 3 2 1 1 36 37 38 35 +39 3 2 1 1 35 38 34 4 +40 3 2 1 1 5 6 39 37 +41 3 2 1 1 37 39 40 38 +42 3 2 1 1 38 40 33 34 +43 3 2 1 1 6 7 41 39 +44 3 2 1 1 39 41 42 40 +45 3 2 1 1 40 42 32 33 +46 3 2 1 1 7 8 43 41 +47 3 2 1 1 41 43 44 42 +48 3 2 1 1 42 44 31 32 +49 3 2 1 1 8 9 45 43 +50 3 2 1 1 43 45 46 44 +51 3 2 1 1 44 46 30 31 +52 3 2 1 1 9 10 47 45 +53 3 2 1 1 45 47 48 46 +54 3 2 1 1 46 48 29 30 +55 3 2 1 1 10 11 49 47 +56 3 2 1 1 47 49 50 48 +57 3 2 1 1 48 50 28 29 +58 3 2 1 1 11 12 51 49 +59 3 2 1 1 49 51 52 50 +60 3 2 1 1 50 52 27 28 +61 3 2 1 1 12 13 53 51 +62 3 2 1 1 51 53 54 52 +63 3 2 1 1 52 54 26 27 +64 3 2 1 1 13 14 55 53 +65 3 2 1 1 53 55 56 54 +66 3 2 1 1 54 56 25 26 +67 3 2 1 1 14 15 57 55 +68 3 2 1 1 55 57 58 56 +69 3 2 1 1 56 58 24 25 +70 3 2 1 1 15 16 59 57 +71 3 2 1 1 57 59 60 58 +72 3 2 1 1 58 60 23 24 +73 3 2 1 1 16 17 61 59 +74 3 2 1 1 59 61 62 60 +75 3 2 1 1 60 62 22 23 +76 3 2 1 1 17 18 63 61 +77 3 2 1 1 61 63 64 62 +78 3 2 1 1 62 64 21 22 +79 3 2 1 1 18 2 19 63 +80 3 2 1 1 63 19 20 64 +81 3 2 1 1 64 20 3 21 +$EndElements diff --git a/perpendicular-flap/solid-dune/clean.sh b/perpendicular-flap/solid-dune/clean.sh new file mode 100755 index 000000000..eaf41de47 --- /dev/null +++ b/perpendicular-flap/solid-dune/clean.sh @@ -0,0 +1,6 @@ +#!/bin/sh +set -e -u + +. ../../tools/cleaning-tools.sh + +clean_dune . diff --git a/perpendicular-flap/solid-dune/run.sh b/perpendicular-flap/solid-dune/run.sh new file mode 100755 index 000000000..bbe2d648c --- /dev/null +++ b/perpendicular-flap/solid-dune/run.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -e -u + +./dune-perpendicular-flap diff --git a/tools/cleaning-tools.sh b/tools/cleaning-tools.sh index 3f326f6ec..327f1ae1a 100755 --- a/tools/cleaning-tools.sh +++ b/tools/cleaning-tools.sh @@ -73,7 +73,7 @@ clean_fenics() { set -e -u cd "$1" echo "--- Cleaning up FEniCS case in $(pwd)" - rm -fv ./*.pvd spooles.out Solid/FSI-S/* + rm -fv ./*.pvd spooles.out FSI-S/* rm -rfv ./out/ rm -rfv ./preCICE-output/ clean_precice_logs . @@ -116,3 +116,15 @@ clean_su2() { clean_precice_logs . ) } + +clean_dune() { + ( + set -e -u + cd "$1" + echo "--- Cleaning up DUNE case in $(pwd)" + rm -fv ./*.pvd + rm -fv ./*.vtu + rm -rfv ./preCICE-output/ + clean_precice_logs . + ) +} From abf7b625c8ab67cf1b9d64959beff03f0e318568 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Wed, 8 Dec 2021 15:11:16 +0100 Subject: [PATCH 35/55] Fix shellcheck notice on solid-codeaster/run.sh (#246) --- flow-over-heated-plate-steady-state/solid-codeaster/run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flow-over-heated-plate-steady-state/solid-codeaster/run.sh b/flow-over-heated-plate-steady-state/solid-codeaster/run.sh index 93592fa88..0af4b021f 100755 --- a/flow-over-heated-plate-steady-state/solid-codeaster/run.sh +++ b/flow-over-heated-plate-steady-state/solid-codeaster/run.sh @@ -7,6 +7,6 @@ echo "See the tutorial and code_aster adapter documentation pages for more:" echo "https://precice.org/adapter-code_aster.html" echo "" -export TUTORIAL_ROOT=${PWD} +export TUTORIAL_ROOT="${PWD}" export PRECICE_PARTICIPANT=Solid as_run --run solid.export From fc93dd1506eea87b0a7ecb807da07524bd8a857a Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Wed, 8 Dec 2021 15:12:48 +0100 Subject: [PATCH 36/55] Delete irrelevant couplingProperties file (#245) This file seems to be a relic of the (very long) past. This has nothing to do with preCICE at the moment and it can lead to confusion. --- .../fluid-openfoam/constant/couplingProperties | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 elastic-tube-3d/fluid-openfoam/constant/couplingProperties diff --git a/elastic-tube-3d/fluid-openfoam/constant/couplingProperties b/elastic-tube-3d/fluid-openfoam/constant/couplingProperties deleted file mode 100644 index 1c5a03ce6..000000000 --- a/elastic-tube-3d/fluid-openfoam/constant/couplingProperties +++ /dev/null @@ -1,15 +0,0 @@ -FoamFile -{ - version 2.0; - format ascii; - root ""; - case ""; - instance ""; - local ""; - class dictionary; - object couplingProperties; -} - -movingSolidPatches (auto1); - -movingFluidPatches (auto1); From c484833a7dd47e634de2e1cfdbc6f4f3360b0684 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Thu, 16 Dec 2021 14:28:35 +0100 Subject: [PATCH 37/55] Heat exchanger: Add tip for explicit and implicit coupling --- heat-exchanger/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/heat-exchanger/README.md b/heat-exchanger/README.md index 42a39cd02..e06f8cdae 100644 --- a/heat-exchanger/README.md +++ b/heat-exchanger/README.md @@ -21,6 +21,8 @@ We define the participants `Inner-Fluid`, `Solid`, and `Outer-Fluid` and two int ![Heat exchanger: three participants](images/tutorials-heat-exchanger-participants.png) +{% include tip.html content="In this tutorial, we are combining two **explicit** coupling schemes. Combining multiple implicit coupling schemes does not make numerical sense. Use a [fully-implicit multi-coupling scheme](https://precice.org/configuration-coupling-multi.html), instead." %} + ## Available solvers * OpenFOAM. `buoyantSimpleFoam` is used for fluid flow (both participants). This is a solver for steady-state, buoyant, turbulent flow of compressible fluids for ventilation and heat transfer. For more information, have a look at the [OpenFOAM adapter documentation](https://precice.org/adapter-openfoam-overview.html). From 3d17693293724b741904a52abc1092e1665ec221 Mon Sep 17 00:00:00 2001 From: Mohamad Altaweel Date: Sun, 2 Jan 2022 15:26:07 +0100 Subject: [PATCH 38/55] Make visualize.py compatible with Python3 (#247) * changed visualize to python 3 * removed backup file --- partitioned-elastic-beam/visualize.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/partitioned-elastic-beam/visualize.py b/partitioned-elastic-beam/visualize.py index 3f0734a02..bbc97956d 100755 --- a/partitioned-elastic-beam/visualize.py +++ b/partitioned-elastic-beam/visualize.py @@ -25,7 +25,7 @@ def join_frd(frd1, frd2): with open(frd1, "r") as f1, open(frd2, "r") as f2, open("beam_full.frd", "w") as fp: # copy frd header in new file - for i in xrange(11): + for i in range(11): fp.write(f1.readline()) f2.readline() @@ -72,8 +72,8 @@ def join_frd(frd1, frd2): fp.write(" -3\n") # merging blocks of lines for each step - for i in xrange(nsteps): - print "step", i + 1 + for i in range(nsteps): + print("step", i + 1) # step header fp.write(f1.readline()) f2.readline() @@ -81,7 +81,7 @@ def join_frd(frd1, frd2): line_f1 = line_f1[:33] + str(nsizem) + line_f1[36:] fp.write(line_f1) f2.readline() - for j in xrange(5): + for j in range(5): fp.write(f1.readline()) f2.readline() From e9f0dfa1e4536412f87c32bad8964a9b3ff54ba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Pedemonte?= <67233283+AndresPedemonteFIUBA@users.noreply.github.com> Date: Sat, 29 Jan 2022 04:51:09 -0300 Subject: [PATCH 39/55] Change C3D8 elements to C3D8I elements in perpendicular-flap solid-calculix (#250) * Update all.msh, use C3D8I elements * Update flap.inp, added `DIRECT` parameter to `*DYNAMIC* keyword. --- perpendicular-flap/solid-calculix/all.msh | 2 +- perpendicular-flap/solid-calculix/flap.inp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/perpendicular-flap/solid-calculix/all.msh b/perpendicular-flap/solid-calculix/all.msh index 5bfebc2b9..7e196a054 100644 --- a/perpendicular-flap/solid-calculix/all.msh +++ b/perpendicular-flap/solid-calculix/all.msh @@ -737,7 +737,7 @@ 736,-5.000000000000e-02,9.918032786885e-01,0.000000000000e+00 737,-5.000000000000e-02,1.000000000000e+00,1.000000000000e+00 738,-5.000000000000e-02,1.000000000000e+00,0.000000000000e+00 -*ELEMENT, TYPE=C3D8, ELSET=Eall +*ELEMENT, TYPE=C3D8I, ELSET=Eall 1, 1, 2, 3, 4, 5, 6, 7, 8 2, 4, 3, 9, 10, 8, 7, 11, 12 3, 10, 9, 13, 14, 12, 11, 15, 16 diff --git a/perpendicular-flap/solid-calculix/flap.inp b/perpendicular-flap/solid-calculix/flap.inp index 44145246c..4eda56c96 100644 --- a/perpendicular-flap/solid-calculix/flap.inp +++ b/perpendicular-flap/solid-calculix/flap.inp @@ -8,7 +8,7 @@ 3000 *SOLID SECTION, Elset=Eall, Material=EL *STEP, INC=1000000 -*DYNAMIC, ALPHA=0.0 +*DYNAMIC, ALPHA=0.0, DIRECT 1.E-2, 5.0 *BOUNDARY Nfix1, 1, 3 From 1938c4c1b3fd1fa06449ce2f9e6054635d00c302 Mon Sep 17 00:00:00 2001 From: Benjamin Rodenberg Date: Mon, 31 Jan 2022 13:09:35 +0100 Subject: [PATCH 40/55] Update results according to #250. --- ...ular-flap-displacement-all-watchpoints.png | Bin 244398 -> 73583 bytes perpendicular-flap/plot-all-displacements.sh | 4 +++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/perpendicular-flap/images/tutorials-perpendicular-flap-displacement-all-watchpoints.png b/perpendicular-flap/images/tutorials-perpendicular-flap-displacement-all-watchpoints.png index 26a1f1c4d0aa5443ef7dbab980634b75a9b4cfab..0139741c71fb1ee7380c3a767294ac8391e11f3d 100644 GIT binary patch literal 73583 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�NMPh^6|KSX8ZdJ(#N_|hq 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 G(f2n literal 244398 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 z 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 Cb{+r# diff --git a/perpendicular-flap/plot-all-displacements.sh b/perpendicular-flap/plot-all-displacements.sh index 05ea08829..7e9925dd0 100755 --- a/perpendicular-flap/plot-all-displacements.sh +++ b/perpendicular-flap/plot-all-displacements.sh @@ -11,5 +11,7 @@ gnuplot -p << EOF "watchpoints/su2-calculix.log" using 1:4 with lines title "SU2-CalculiX", \ "watchpoints/su2-dealii.log" using 1:4 with lines title "SU2-deal.II", \ "watchpoints/su2-fenics.log" using 1:4 with lines title "SU2-FEniCS", \ - "watchpoints/nutils-dealii.log" using 1:4 with lines title "Nutils-deal.II" + "watchpoints/nutils-calculix.log" using 1:4 with lines title "Nutils-CalculiX", \ + "watchpoints/nutils-dealii.log" using 1:4 with lines title "Nutils-deal.II", \ + "watchpoints/nutils-fenics.log" using 1:4 with lines title "Nutils-FEniCS" EOF From 74e4b6f27c1f073ae5137d36ac39c1fe40c7b1a1 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Mon, 31 Jan 2022 13:28:58 +0100 Subject: [PATCH 41/55] Add hint for time synchronization in ParaView --- perpendicular-flap/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/perpendicular-flap/README.md b/perpendicular-flap/README.md index 18300fdab..480a597e6 100644 --- a/perpendicular-flap/README.md +++ b/perpendicular-flap/README.md @@ -74,4 +74,6 @@ Reasons for the differences: * The CalculiX adapter only supports linear finite elements (deal.II uses 4th order, FEniCS 2nd order). * SU2 models a compressible fluid, OpenFOAM and Nutils an incompressible one. +If you want to plot all results in ParaView, you may want to use the [TemporalShiftScale filter](https://kitware.github.io/paraview-docs/v5.9.0/python/paraview.simple.TemporalShiftScale.html) to synchronize the results. + {% include disclaimer.html content="This offering is not approved or endorsed by OpenCFD Limited, producer and distributor of the OpenFOAM software via www.openfoam.com, and owner of the OPENFOAM® and OpenCFD® trade marks." %} From f16e8b00f60c3016dd5ce53d370f201d876511ff Mon Sep 17 00:00:00 2001 From: Benjamin Rodenberg Date: Mon, 31 Jan 2022 13:38:21 +0100 Subject: [PATCH 42/55] Enhance plot quality. --- ...ular-flap-displacement-all-watchpoints.png | Bin 73583 -> 115159 bytes perpendicular-flap/plot-all-displacements.sh | 4 +++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/perpendicular-flap/images/tutorials-perpendicular-flap-displacement-all-watchpoints.png b/perpendicular-flap/images/tutorials-perpendicular-flap-displacement-all-watchpoints.png index 0139741c71fb1ee7380c3a767294ac8391e11f3d..7fc01ef55fa0f1e53bd602d607aa97ccdebeb853 100644 GIT binary patch literal 115159 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�NMPh^6|KSX8ZdJ(#N_|hq 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 G(f2n diff --git a/perpendicular-flap/plot-all-displacements.sh b/perpendicular-flap/plot-all-displacements.sh index 7e9925dd0..bd18f6125 100755 --- a/perpendicular-flap/plot-all-displacements.sh +++ b/perpendicular-flap/plot-all-displacements.sh @@ -4,7 +4,9 @@ gnuplot -p << EOF set grid set title 'x-displacement of the flap tip' set xlabel 'time [s]' - set ylabel 'x-displacement [m]' + set ylabel 'x-displacement [m]' + set term pngcairo enhanced size 900,654 + set output "images/tutorials-perpendicular-flap-displacement-all-watchpoints.png" plot "watchpoints/openfoam-calculix.log" using 1:4 with lines title "OpenFOAM-CalculiX", \ "watchpoints/openfoam-dealii.log" using 1:4 with lines title "OpenFOAM-deal.II", \ "watchpoints/openfoam-fenics.log" using 1:4 with lines title "OpenFOAM-FEniCS", \ From 1e6334b2270c2d34a12807659f1136222c492b67 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Mon, 31 Jan 2022 20:15:29 +0100 Subject: [PATCH 43/55] Add link to YouTube tutorial --- elastic-tube-3d/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/elastic-tube-3d/README.md b/elastic-tube-3d/README.md index 65f2bde08..69c8423b8 100644 --- a/elastic-tube-3d/README.md +++ b/elastic-tube-3d/README.md @@ -13,6 +13,10 @@ The expanding tube test case involves a cylindrical fluid domain surrounded by a The expanding tube test case comes with the interface surface mesh connectivity of the solid domain. This allows the use of nearest-projection mapping of the displacements of the solid domain. In order to run the example with nearest projection mapping, the "node-mesh-with-connectivity" has been specified in the `solid-calculix/config.yml` file. More details can be found in the [CalculiX configuration description](https://precice.org/adapter-calculix-config.html#nearest-projection-mapping). +{% tip %} +Are you new to CalculiX? Watch this [amazing contributed tutorial](https://www.youtube.com/playlist?list=PLWHQIdms-YHT8Ybt9psE8lJpaWRyy3fNf) explaining how to set up a very similar case with preCICE, OpenFOAM, and CalculiX. +{% endtip %} + ## Available solvers Fluid participant: From 110bd39bed98f83b7821044b945a73bf3217fc58 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Tue, 1 Feb 2022 23:15:56 +0100 Subject: [PATCH 44/55] Convert check links to manual (#252) --- .github/workflows/check-links.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/check-links.yml b/.github/workflows/check-links.yml index 091411966..f7e0ce616 100644 --- a/.github/workflows/check-links.yml +++ b/.github/workflows/check-links.yml @@ -1,7 +1,5 @@ -name: Check links -on: - schedule: - - cron: '0 0 * * SUN' +name: Check links (manual) +on: workflow_dispatch jobs: check_links: runs-on: ubuntu-latest From e472814f371b998cdd2b7226b47bec8282c90fb9 Mon Sep 17 00:00:00 2001 From: Benjamin Rodenberg Date: Tue, 1 Feb 2022 23:31:04 +0100 Subject: [PATCH 45/55] flow-over-heated-plate: Remove unnecessary parameter nMoles (#234) --- changelog-entries/234.md | 1 + .../fluid-openfoam/constant/thermophysicalProperties | 1 - .../fluid-openfoam/constant/thermophysicalProperties | 1 - .../fluid-openfoam/constant/thermophysicalProperties | 1 - 4 files changed, 1 insertion(+), 3 deletions(-) create mode 100644 changelog-entries/234.md diff --git a/changelog-entries/234.md b/changelog-entries/234.md new file mode 100644 index 000000000..4b4157f67 --- /dev/null +++ b/changelog-entries/234.md @@ -0,0 +1 @@ +* Remove unnecessary parameter `nMoles` from flow-over-heated-plate cases with OpenFOAM #234 diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/constant/thermophysicalProperties b/flow-over-heated-plate-nearest-projection/fluid-openfoam/constant/thermophysicalProperties index 9992c3670..d452e0693 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/constant/thermophysicalProperties +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/constant/thermophysicalProperties @@ -23,7 +23,6 @@ mixture { specie { - nMoles 1; molWeight 24.0999; } thermodynamics diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/constant/thermophysicalProperties b/flow-over-heated-plate-steady-state/fluid-openfoam/constant/thermophysicalProperties index 171ca1957..8052f42ef 100644 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/constant/thermophysicalProperties +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/constant/thermophysicalProperties @@ -25,7 +25,6 @@ mixture { specie { - nMoles 1; molWeight 24.09989; } thermodynamics diff --git a/flow-over-heated-plate/fluid-openfoam/constant/thermophysicalProperties b/flow-over-heated-plate/fluid-openfoam/constant/thermophysicalProperties index e47cdd82e..f735c1993 100644 --- a/flow-over-heated-plate/fluid-openfoam/constant/thermophysicalProperties +++ b/flow-over-heated-plate/fluid-openfoam/constant/thermophysicalProperties @@ -30,7 +30,6 @@ mixture { specie { - nMoles 1; molWeight 24.0999; } thermodynamics From 9750de59c1b5c7be18ac33d03ed3690fed7a79c8 Mon Sep 17 00:00:00 2001 From: Benjamin Rodenberg Date: Tue, 1 Feb 2022 23:37:20 +0100 Subject: [PATCH 46/55] elastic-tube-1d: Remove unnecessary read statement (#232) --- changelog-entries/232.md | 1 + elastic-tube-1d/fluid-cpp/src/FluidSolver.cpp | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) create mode 100644 changelog-entries/232.md diff --git a/changelog-entries/232.md b/changelog-entries/232.md new file mode 100644 index 000000000..232f4a92c --- /dev/null +++ b/changelog-entries/232.md @@ -0,0 +1 @@ +- Removed unnecessary read statment in `elastic-tube-1d` [#232](https://github.com/precice/tutorials/pull/232). diff --git a/elastic-tube-1d/fluid-cpp/src/FluidSolver.cpp b/elastic-tube-1d/fluid-cpp/src/FluidSolver.cpp index 5010c2cf7..88c99d551 100644 --- a/elastic-tube-1d/fluid-cpp/src/FluidSolver.cpp +++ b/elastic-tube-1d/fluid-cpp/src/FluidSolver.cpp @@ -101,10 +101,6 @@ int main(int argc, char **argv) interface.markActionFulfilled(actionWriteIterationCheckpoint()); } - if (interface.isReadDataAvailable()) { - interface.readBlockScalarData(crossSectionLengthID, chunkLength, vertexIDs.data(), crossSectionLength.data()); - } - fluidComputeSolutionSerial( // values from last time window velocity_old.data(), pressure_old.data(), crossSectionLength_old.data(), From 88fb82e58b77da1dc20d405b4b420142b2976a39 Mon Sep 17 00:00:00 2001 From: David Schneider Date: Wed, 2 Feb 2022 10:24:21 +0100 Subject: [PATCH 47/55] Fix note regarding OpenFOAM and residual control (#253) * Fix note regarding residual control * Apply suggestions from code review Co-authored-by: Gerasimos Chourdakis Co-authored-by: Gerasimos Chourdakis --- elastic-tube-3d/fluid-openfoam/system/fvSolution | 3 ++- turek-hron-fsi3/fluid-openfoam/system/fvSolution | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/elastic-tube-3d/fluid-openfoam/system/fvSolution b/elastic-tube-3d/fluid-openfoam/system/fvSolution index 48444e2b6..a245c5d9f 100755 --- a/elastic-tube-3d/fluid-openfoam/system/fvSolution +++ b/elastic-tube-3d/fluid-openfoam/system/fvSolution @@ -200,8 +200,9 @@ residualControl */ // OpenFOAM 6 (.org) or newer +// see also https://bugs.openfoam.org/view.php?id=3336 /* -residualControl +outerResidualControl { U 0.0001; p 0.0001; diff --git a/turek-hron-fsi3/fluid-openfoam/system/fvSolution b/turek-hron-fsi3/fluid-openfoam/system/fvSolution index d559f7d2f..143b71db3 100644 --- a/turek-hron-fsi3/fluid-openfoam/system/fvSolution +++ b/turek-hron-fsi3/fluid-openfoam/system/fvSolution @@ -88,8 +88,9 @@ PIMPLE } // OpenFOAM 6 (.org) or newer + // see also https://bugs.openfoam.org/view.php?id=3336 /* - residualControl + outerResidualControl { U 1e-5; p 1e-5; From 3cccabe32b846ae1397816137074a147405d5351 Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Thu, 3 Feb 2022 21:31:34 +0100 Subject: [PATCH 48/55] Making output directories for all FEniCS participants consistent (#256) * Add PEP8 CI. * Format code-base. * Better formatting * Increase line length to 120. * Some more reformatting. * Minor reformatting. * More reformatting. * Cleanup perpendicular flap. * Partially update for turek-hron. BROKEN! #186 * Add missing file. * Remove turek-hron FEniCS solver. * Update broken run script for paritioned-heat-conduction-complex FEniCS case * Making output folder structure consistent for all FEniCS participants Co-authored-by: BenjaminRodenberg --- flow-over-heated-plate/solid-fenics/solid.py | 4 ++-- partitioned-heat-conduction-complex/fenics/heat.py | 8 ++++---- partitioned-heat-conduction/fenics/heat.py | 8 ++++---- perpendicular-flap/solid-fenics/solid.py | 2 +- tools/cleaning-tools.sh | 4 ++-- .../fenics/volume-coupled-diffusion.py | 4 ++-- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/flow-over-heated-plate/solid-fenics/solid.py b/flow-over-heated-plate/solid-fenics/solid.py index 105ea30a9..23ee3bbd4 100644 --- a/flow-over-heated-plate/solid-fenics/solid.py +++ b/flow-over-heated-plate/solid-fenics/solid.py @@ -141,14 +141,14 @@ def determine_heat_flux(V_g, u, k, flux): u_D.t = t + dt # mark mesh w.r.t ranks -ranks = File("Solid/VTK/ranks%s.pvd.pvd" % precice.get_participant_name()) +ranks = File("output/ranks%s.pvd.pvd" % precice.get_participant_name()) mesh_rank = MeshFunction("size_t", mesh, mesh.topology().dim()) mesh_rank.set_all(MPI.rank(MPI.comm_world)) mesh_rank.rename("myRank", "") ranks << mesh_rank # Create output file -file_out = File("Solid/VTK/%s.pvd" % precice.get_participant_name()) +file_out = File("output/%s.pvd" % precice.get_participant_name()) file_out << u_n print("output vtk for time = {}".format(float(t))) diff --git a/partitioned-heat-conduction-complex/fenics/heat.py b/partitioned-heat-conduction-complex/fenics/heat.py index dd9d2390a..9ba1f519c 100644 --- a/partitioned-heat-conduction-complex/fenics/heat.py +++ b/partitioned-heat-conduction-complex/fenics/heat.py @@ -165,10 +165,10 @@ def determine_gradient(V_g, u, flux): mesh_rank.rename("myRank", "") # Generating output files -temperature_out = File("out/%s.pvd" % precice.get_participant_name()) -ref_out = File("out/ref%s.pvd" % precice.get_participant_name()) -error_out = File("out/error%s.pvd" % precice.get_participant_name()) -ranks = File("out/ranks%s.pvd" % precice.get_participant_name()) +temperature_out = File("output/%s.pvd" % precice.get_participant_name()) +ref_out = File("output/ref%s.pvd" % precice.get_participant_name()) +error_out = File("output/error%s.pvd" % precice.get_participant_name()) +ranks = File("output/ranks%s.pvd" % precice.get_participant_name()) # output solution and reference solution at t=0, n=0 n = 0 diff --git a/partitioned-heat-conduction/fenics/heat.py b/partitioned-heat-conduction/fenics/heat.py index fb0487854..e7b7f6529 100644 --- a/partitioned-heat-conduction/fenics/heat.py +++ b/partitioned-heat-conduction/fenics/heat.py @@ -148,10 +148,10 @@ def determine_gradient(V_g, u, flux): mesh_rank.rename("myRank", "") # Generating output files -temperature_out = File("out/%s.pvd" % precice.get_participant_name()) -ref_out = File("out/ref%s.pvd" % precice.get_participant_name()) -error_out = File("out/error%s.pvd" % precice.get_participant_name()) -ranks = File("out/ranks%s.pvd" % precice.get_participant_name()) +temperature_out = File("output/%s.pvd" % precice.get_participant_name()) +ref_out = File("output/ref%s.pvd" % precice.get_participant_name()) +error_out = File("output/error%s.pvd" % precice.get_participant_name()) +ranks = File("output/ranks%s.pvd" % precice.get_participant_name()) # output solution and reference solution at t=0, n=0 n = 0 diff --git a/perpendicular-flap/solid-fenics/solid.py b/perpendicular-flap/solid-fenics/solid.py index 66bcb3a62..8c571c0b6 100644 --- a/perpendicular-flap/solid-fenics/solid.py +++ b/perpendicular-flap/solid-fenics/solid.py @@ -170,7 +170,7 @@ def avg(x_old, x_new, alpha): n = 0 E_ext = 0 -displacement_out = File("Solid/FSI-S/u_fsi.pvd") +displacement_out = File("output/u_fsi.pvd") u_n.rename("Displacement", "") u_np1.rename("Displacement", "") diff --git a/tools/cleaning-tools.sh b/tools/cleaning-tools.sh index 327f1ae1a..c143947c1 100755 --- a/tools/cleaning-tools.sh +++ b/tools/cleaning-tools.sh @@ -73,8 +73,8 @@ clean_fenics() { set -e -u cd "$1" echo "--- Cleaning up FEniCS case in $(pwd)" - rm -fv ./*.pvd spooles.out FSI-S/* - rm -rfv ./out/ + rm -fv spooles.out output/* + rm -rfv ./output/ rm -rfv ./preCICE-output/ clean_precice_logs . ) diff --git a/volume-coupled-diffusion/fenics/volume-coupled-diffusion.py b/volume-coupled-diffusion/fenics/volume-coupled-diffusion.py index d95d9fc66..eeffce490 100644 --- a/volume-coupled-diffusion/fenics/volume-coupled-diffusion.py +++ b/volume-coupled-diffusion/fenics/volume-coupled-diffusion.py @@ -81,8 +81,8 @@ def inside(self, x, on_boundary): mesh_rank.rename("myRank", "") # Generating output files -solution_out = File("out/%s.pvd" % precice.get_participant_name()) -ranks = File("out/ranks%s.pvd" % precice.get_participant_name()) +solution_out = File("output/%s.pvd" % precice.get_participant_name()) +ranks = File("output/ranks%s.pvd" % precice.get_participant_name()) # output solution and reference solution at t=0, n=0 n = 0 From 32d8b89403b1f62335b16577eb4b8dc4af77101d Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Fri, 4 Feb 2022 09:08:49 +0100 Subject: [PATCH 49/55] Reduce the writing frquency of partitioned-pipe (#257) --- partitioned-pipe/fluid1-openfoam-pimplefoam/system/controlDict | 2 +- .../fluid1-openfoam-sonicliquidfoam/system/controlDict | 2 +- partitioned-pipe/fluid2-openfoam-pimplefoam/system/controlDict | 2 +- .../fluid2-openfoam-sonicliquidfoam/system/controlDict | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/partitioned-pipe/fluid1-openfoam-pimplefoam/system/controlDict b/partitioned-pipe/fluid1-openfoam-pimplefoam/system/controlDict index 9fe0ab9f5..839905b56 100644 --- a/partitioned-pipe/fluid1-openfoam-pimplefoam/system/controlDict +++ b/partitioned-pipe/fluid1-openfoam-pimplefoam/system/controlDict @@ -21,7 +21,7 @@ deltaT 0.01; writeControl adjustableRunTime; -writeInterval 0.01; +writeInterval 0.1; purgeWrite 0; diff --git a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/controlDict b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/controlDict index 162aef6ed..482f4ef28 100644 --- a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/controlDict +++ b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/controlDict @@ -21,7 +21,7 @@ deltaT 0.01; writeControl adjustableRunTime; -writeInterval 0.01; +writeInterval 0.1; purgeWrite 0; diff --git a/partitioned-pipe/fluid2-openfoam-pimplefoam/system/controlDict b/partitioned-pipe/fluid2-openfoam-pimplefoam/system/controlDict index 9fe0ab9f5..839905b56 100644 --- a/partitioned-pipe/fluid2-openfoam-pimplefoam/system/controlDict +++ b/partitioned-pipe/fluid2-openfoam-pimplefoam/system/controlDict @@ -21,7 +21,7 @@ deltaT 0.01; writeControl adjustableRunTime; -writeInterval 0.01; +writeInterval 0.1; purgeWrite 0; diff --git a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/controlDict b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/controlDict index 162aef6ed..482f4ef28 100644 --- a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/controlDict +++ b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/controlDict @@ -21,7 +21,7 @@ deltaT 0.01; writeControl adjustableRunTime; -writeInterval 0.01; +writeInterval 0.1; purgeWrite 0; From 4104f2dfd9d0d8fa32eee5ad2c57ceec86b77ce5 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Sun, 6 Feb 2022 22:30:19 +0100 Subject: [PATCH 50/55] Remove specific solver versions from README files We anyway check that the tutorials run with the latest supported versions. --- elastic-tube-3d/README.md | 6 +++--- flow-over-heated-plate-nearest-projection/README.md | 2 +- perpendicular-flap/README.md | 4 ++-- turek-hron-fsi3/README.md | 3 +-- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/elastic-tube-3d/README.md b/elastic-tube-3d/README.md index 4196c7dd5..f471fef3d 100644 --- a/elastic-tube-3d/README.md +++ b/elastic-tube-3d/README.md @@ -19,15 +19,15 @@ The expanding tube test case comes with the interface surface mesh connectivity Fluid participant: -* OpenFOAM. This tutorial is known to work with OpenFOAM 4.1, 5.0, but it should also work with newer versions. The case files are prepared for the latest versions of OpenFOAM and use the solver `pimpleFoam`. In case you are using a previous OpenFOAM version you need to adjust the solver to `pimpleDyMFoam` in the `Fluid/system/controlDict` file. For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). +* OpenFOAM (pimpleFoam). In case you are using a very old OpenFOAM version, you will need to adjust the solver to `pimpleDyMFoam` in the `Fluid/system/controlDict` file. For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). Solid participant: -* CalculiX. This tutorial is known to work with CalculiX 2.15, but it should also work with newer versions. For more information, have a look at the [CalculiX adapter documentation](https://www.precice.org/adapter-calculix-overview.html). +* CalculiX. For more information, have a look at the [CalculiX adapter documentation](https://www.precice.org/adapter-calculix-overview.html). ## Running the simulation -You can start the simulation by running the script `./run.sh` located in each participant directory. OpenFOAM can be executed in parallel by using an additional `run.sh -parallel` flag. The default setting uses 4 MPI ranks. +You can start the simulation by running the script `./run.sh` located in each participant directory. OpenFOAM can be executed in parallel using `run.sh -parallel`. The default setting uses 4 MPI ranks. ## Post-processing diff --git a/flow-over-heated-plate-nearest-projection/README.md b/flow-over-heated-plate-nearest-projection/README.md index 2682f7fc6..209e9d447 100644 --- a/flow-over-heated-plate-nearest-projection/README.md +++ b/flow-over-heated-plate-nearest-projection/README.md @@ -41,7 +41,7 @@ cd solid-openfoam ./run.sh ``` -You can also run OpenFOAM in parallel by `./run.sh -parallel`. If you are using OpenFOAM v1712 / 5.x or older have a look in the `fluid-openfoam/system/controlDict` file and set the appropriate solver name. +You can also run OpenFOAM in parallel by `./run.sh -parallel`. ## Changes in the Simulation Setup diff --git a/perpendicular-flap/README.md b/perpendicular-flap/README.md index 96724de51..0084a9fc1 100644 --- a/perpendicular-flap/README.md +++ b/perpendicular-flap/README.md @@ -21,7 +21,7 @@ The simulated flow domain is 6 units long (x) and 4 units tall (y). The flap is Fluid participant: -* OpenFOAM. For older OpenFOAM versions, the solver name differs: If you are using OpenFOAM v1712 / 5.x or older have a look at `fluid-openfoam/system/controlDict` and set the appropriate solver name. The solver can run in parallel using the command line argument `run.sh -parallel`. For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). +* OpenFOAM (pimpleFoam). In case you are using a very old OpenFOAM version, you will need to adjust the solver to `pimpleDyMFoam` in the `Fluid/system/controlDict` file. For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). * Nutils. For more information, have a look at the [Nutils adapter documentation](https://www.precice.org/adapter-nutils.html). This Nutils solver requires at least Nutils v6.0. @@ -37,7 +37,7 @@ Solid participant: ## Running the Simulation -All listed solvers can be used in order to run the simulation. Open two separate terminals and start the desired fluid and solid participant by calling the respective run script `run.sh` located in the participant directory. For example: +All listed solvers can be used in order to run the simulation. OpenFOAM can be executed in parallel using `run.sh -parallel`. The default setting uses 4 MPI ranks. Open two separate terminals and start the desired fluid and solid participant by calling the respective run script `run.sh` located in the participant directory. For example: ```bash cd fluid-openfoam diff --git a/turek-hron-fsi3/README.md b/turek-hron-fsi3/README.md index 5cb474b95..026f69850 100644 --- a/turek-hron-fsi3/README.md +++ b/turek-hron-fsi3/README.md @@ -21,7 +21,7 @@ For more information please refer to the original publication of the benchmark [ Fluid participant: -* OpenFOAM. For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). +* OpenFOAM (pimpleFoam). In case you are using a very old OpenFOAM version, you will need to adjust the solver to `pimpleDyMFoam` in the `Fluid/system/controlDict` file. For more information, have a look at the [OpenFOAM adapter documentation](https://www.precice.org/adapter-openfoam-overview.html). {% important %} For the parabolic inflow profile, this tutorial requires groovyBC. groovyBC is part of swak4Foam. You can find more explanations in [openfoamwiki.net](https://openfoamwiki.net/index.php/Contrib/swak4Foam) or get it from an [unofficial GitHub mirror](https://github.com/Unofficial-Extend-Project-Mirror/openfoam-extend-swak4Foam-dev.git). Please follow the building instructions there. @@ -48,7 +48,6 @@ cd solid-dealii ``` You can also run OpenFOAM in parallel by `./run.sh -parallel`. The default setting here uses 25 MPI ranks. You can change this setting in `fluid-openfoam/system/decomposeParDict`. -For older OpenFOAM versions, the solver name will differ. If you are using OpenFOAM v1712 / 5.x or older have a look in the `fluid-openfoam/system/controlDict` file and set the appropriate solver name. You may adjust the end time in the `precice-config.xml`, or interupt the execution earlier if you want. From 4c58bce4391ddc60cb34033ca769530fe253592b Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Mon, 7 Feb 2022 08:55:48 +0100 Subject: [PATCH 51/55] Cleanup OpenFOAM configuration files (#258) --- elastic-tube-3d/fluid-openfoam/0/U | 5 - elastic-tube-3d/fluid-openfoam/0/p | 19 +-- .../fluid-openfoam/0/pointDisplacement | 6 +- .../fluid-openfoam/constant/RASProperties | 16 --- .../fluid-openfoam/constant/dynamicMeshDict | 8 -- .../constant/polyMesh.orig/boundary | 3 - .../constant/polyMesh.orig/cellZones | 3 - .../constant/polyMesh.orig/faceZones | 3 - .../constant/polyMesh.orig/faces | 5 - .../constant/polyMesh.orig/neighbour | 5 - .../constant/polyMesh.orig/owner | 5 - .../constant/polyMesh.orig/pointZones | 3 - .../constant/polyMesh.orig/points | 5 - .../constant/transportProperties | 7 +- .../constant/turbulenceProperties | 12 +- .../fluid-openfoam/system/controlDict | 17 +-- .../fluid-openfoam/system/decomposeParDict | 3 - .../fluid-openfoam/system/fvSchemes | 124 +++++++++--------- .../fluid-openfoam/system/fvSolution | 1 - .../fluid-openfoam/system/preciceDict | 1 - elastic-tube-3d/fluid-openfoam/time-series | 8 +- .../fluid-openfoam/0/T | 4 - .../fluid-openfoam/0/U | 4 - .../fluid-openfoam/0/alphat | 5 - .../fluid-openfoam/0/epsilon | 5 - .../fluid-openfoam/0/k | 5 - .../fluid-openfoam/0/nut | 5 - .../fluid-openfoam/0/p | 4 - .../fluid-openfoam/0/p_rgh | 4 - .../fluid-openfoam/constant/g | 5 - .../constant/thermophysicalProperties | 19 +-- .../constant/turbulenceProperties | 9 -- .../fluid-openfoam/system/blockMeshDict | 11 -- .../fluid-openfoam/system/controlDict | 6 - .../fluid-openfoam/system/decomposeParDict | 4 +- .../fluid-openfoam/system/fvSchemes | 5 - .../fluid-openfoam/system/fvSolution | 5 - .../fluid-openfoam/system/preciceDict | 1 - .../fluid-openfoam/0/T | 3 - .../fluid-openfoam/0/U | 3 - .../fluid-openfoam/0/alphat | 5 - .../fluid-openfoam/0/epsilon | 5 - .../fluid-openfoam/0/k | 5 - .../fluid-openfoam/0/nut | 5 - .../fluid-openfoam/0/p | 3 - .../fluid-openfoam/0/p_rgh | 3 - .../fluid-openfoam/constant/g | 5 - .../constant/thermophysicalProperties | 5 - .../constant/turbulenceProperties | 11 -- .../fluid-openfoam/system/blockMeshDict | 13 -- .../fluid-openfoam/system/controlDict | 6 - .../fluid-openfoam/system/fvSchemes | 73 ++++++----- .../fluid-openfoam/system/fvSolution | 4 - .../fluid-openfoam/system/preciceDict | 1 - flow-over-heated-plate/fluid-openfoam/0/T | 11 -- flow-over-heated-plate/fluid-openfoam/0/U | 11 -- .../fluid-openfoam/0/alphat | 12 -- .../fluid-openfoam/0/epsilon | 12 -- flow-over-heated-plate/fluid-openfoam/0/k | 12 -- flow-over-heated-plate/fluid-openfoam/0/nut | 12 -- flow-over-heated-plate/fluid-openfoam/0/p | 11 -- flow-over-heated-plate/fluid-openfoam/0/p_rgh | 11 -- .../fluid-openfoam/constant/g | 12 -- .../constant/thermophysicalProperties | 11 -- .../constant/turbulenceProperties | 17 --- .../fluid-openfoam/system/blockMeshDict | 19 --- .../fluid-openfoam/system/controlDict | 13 -- .../fluid-openfoam/system/decomposeParDict | 4 +- .../fluid-openfoam/system/fvSchemes | 11 -- .../fluid-openfoam/system/fvSolution | 11 -- heat-exchanger/fluid-inner-openfoam/0/T | 12 -- heat-exchanger/fluid-inner-openfoam/0/U | 12 -- heat-exchanger/fluid-inner-openfoam/0/alphat | 12 -- heat-exchanger/fluid-inner-openfoam/0/epsilon | 12 -- heat-exchanger/fluid-inner-openfoam/0/k | 12 -- heat-exchanger/fluid-inner-openfoam/0/nut | 12 -- heat-exchanger/fluid-inner-openfoam/0/p | 12 -- heat-exchanger/fluid-inner-openfoam/0/p_rgh | 12 -- .../fluid-inner-openfoam/constant/g | 16 ++- .../constant/radiationProperties | 8 -- .../constant/thermophysicalProperties | 12 +- .../constant/turbulenceProperties | 16 +-- .../fluid-inner-openfoam/system/controlDict | 53 +++++--- .../system/decomposeParDict | 10 +- .../fluid-inner-openfoam/system/fvOptions | 8 +- .../fluid-inner-openfoam/system/fvSchemes | 57 ++++---- .../fluid-inner-openfoam/system/fvSolution | 11 -- heat-exchanger/fluid-outer-openfoam/0/T | 12 -- heat-exchanger/fluid-outer-openfoam/0/U | 12 -- heat-exchanger/fluid-outer-openfoam/0/alphat | 12 -- heat-exchanger/fluid-outer-openfoam/0/epsilon | 12 -- heat-exchanger/fluid-outer-openfoam/0/k | 11 -- heat-exchanger/fluid-outer-openfoam/0/nut | 12 -- heat-exchanger/fluid-outer-openfoam/0/p | 12 -- heat-exchanger/fluid-outer-openfoam/0/p_rgh | 12 -- .../fluid-outer-openfoam/constant/g | 10 +- .../constant/radiationProperties | 8 -- .../constant/thermophysicalProperties | 10 +- .../constant/turbulenceProperties | 17 +-- .../fluid-outer-openfoam/system/controlDict | 23 +++- .../system/decomposeParDict | 10 +- .../fluid-outer-openfoam/system/fvOptions | 8 +- .../fluid-outer-openfoam/system/fvSchemes | 61 ++++----- .../fluid-outer-openfoam/system/fvSolution | 16 +-- .../fluid-openfoam/0/U | 5 - .../fluid-openfoam/0/p | 3 - .../fluid-openfoam/0/phi | 5 - .../fluid-openfoam/0/pointDisplacement | 3 - .../fluid-openfoam/constant/dynamicMeshDict | 11 +- .../constant/transportProperties | 4 - .../constant/turbulenceProperties | 4 - .../fluid-openfoam/system/blockMeshDict | 12 +- .../fluid-openfoam/system/controlDict | 6 +- .../fluid-openfoam/system/decomposeParDict | 8 +- .../fluid-openfoam/system/fvSchemes | 5 - .../fluid-openfoam/system/fvSolution | 6 - .../fluid-openfoam/system/preciceDict | 1 - .../openfoam-dirichlet/0.orig/T | 4 - .../constant/transportProperties | 1 - .../openfoam-dirichlet/system/blockMeshDict | 8 -- .../openfoam-dirichlet/system/controlDict | 3 +- .../openfoam-dirichlet/system/fvSchemes | 1 - .../openfoam-dirichlet/system/fvSolution | 1 - .../openfoam-dirichlet/system/preciceDict | 1 - .../openfoam-neumann/0.orig/T | 5 - .../constant/transportProperties | 2 - .../openfoam-neumann/system/blockMeshDict | 8 -- .../openfoam-neumann/system/controlDict | 3 +- .../openfoam-neumann/system/fvSchemes | 1 - .../openfoam-neumann/system/fvSolution | 1 - .../openfoam-neumann/system/preciceDict | 1 - .../fluid1-openfoam-pimplefoam/0/U | 1 - .../constant/transportProperties | 1 - .../constant/turbulenceProperties | 1 - .../system/blockMeshDict | 1 - .../system/controlDict | 1 - .../system/decomposeParDict | 8 +- .../system/fvSchemes | 1 - .../system/preciceDict | 3 +- .../fluid1-openfoam-sonicliquidfoam/0/U | 1 - .../constant/thermodynamicProperties | 1 - .../constant/transportProperties | 1 - .../constant/turbulenceProperties | 1 - .../system/blockMeshDict | 1 - .../system/controlDict | 1 - .../system/fvSchemes | 1 - .../system/fvSolution | 1 - .../system/preciceDict | 3 +- .../fluid2-openfoam-pimplefoam/0/U | 1 - .../constant/transportProperties | 1 - .../constant/turbulenceProperties | 1 - .../fluid2-openfoam-sonicliquidfoam/0/U | 1 - .../constant/thermodynamicProperties | 1 - .../constant/transportProperties | 1 - .../constant/turbulenceProperties | 1 - .../system/blockMeshDict | 1 - .../system/controlDict | 1 - .../system/decomposeParDict | 8 +- .../system/fvSchemes | 1 - .../system/fvSolution | 1 - .../system/preciceDict | 3 +- perpendicular-flap/fluid-openfoam/0/U | 5 - perpendicular-flap/fluid-openfoam/0/p | 3 - perpendicular-flap/fluid-openfoam/0/phi | 5 - .../fluid-openfoam/0/pointDisplacement | 3 - .../fluid-openfoam/constant/dynamicMeshDict | 7 +- .../constant/transportProperties | 4 - .../constant/turbulenceProperties | 4 - .../fluid-openfoam/system/blockMeshDict | 7 - .../fluid-openfoam/system/controlDict | 6 +- .../fluid-openfoam/system/decomposeParDict | 8 +- .../fluid-openfoam/system/fvSchemes | 5 - .../fluid-openfoam/system/fvSolution | 6 - .../fluid-openfoam/system/preciceDict | 1 - quickstart/fluid-openfoam/0/U | 7 +- quickstart/fluid-openfoam/0/p | 3 - quickstart/fluid-openfoam/0/pointDisplacement | 3 - .../fluid-openfoam/constant/dynamicMeshDict | 6 +- .../constant/transportProperties | 10 +- .../constant/turbulenceProperties | 2 - .../fluid-openfoam/system/blockMeshDict | 3 - quickstart/fluid-openfoam/system/controlDict | 8 +- .../fluid-openfoam/system/decomposeParDict | 39 +++--- quickstart/fluid-openfoam/system/fvSchemes | 53 ++++---- quickstart/fluid-openfoam/system/fvSolution | 5 - turek-hron-fsi3/fluid-openfoam/0/U | 3 - turek-hron-fsi3/fluid-openfoam/0/p | 3 - .../fluid-openfoam/0/pointDisplacement | 3 - turek-hron-fsi3/fluid-openfoam/0/vorticity | 5 - .../fluid-openfoam/constant/dynamicMeshDict | 11 +- .../constant/transportProperties | 9 +- .../constant/turbulenceProperties | 2 - .../fluid-openfoam/system/blockMeshDict | 8 -- .../system/blockMeshDict_double_refined | 8 -- .../system/blockMeshDict_refined | 8 -- .../fluid-openfoam/system/controlDict | 8 +- .../fluid-openfoam/system/decomposeParDict | 38 +++--- .../fluid-openfoam/system/fvSchemes | 54 ++++---- .../fluid-openfoam/system/fvSolution | 5 - .../fluid-openfoam/system/preciceDict | 1 - 200 files changed, 420 insertions(+), 1357 deletions(-) delete mode 100644 elastic-tube-3d/fluid-openfoam/constant/RASProperties delete mode 100644 heat-exchanger/fluid-inner-openfoam/constant/radiationProperties delete mode 100644 heat-exchanger/fluid-outer-openfoam/constant/radiationProperties diff --git a/elastic-tube-3d/fluid-openfoam/0/U b/elastic-tube-3d/fluid-openfoam/0/U index 8abd00144..a10aef64b 100755 --- a/elastic-tube-3d/fluid-openfoam/0/U +++ b/elastic-tube-3d/fluid-openfoam/0/U @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class volVectorField; - location "0"; object U; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; @@ -28,6 +26,3 @@ boundaryField type zeroGradient; } } - - -// ************************************************************************* // diff --git a/elastic-tube-3d/fluid-openfoam/0/p b/elastic-tube-3d/fluid-openfoam/0/p index e67f29f41..0eafdccae 100755 --- a/elastic-tube-3d/fluid-openfoam/0/p +++ b/elastic-tube-3d/fluid-openfoam/0/p @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class volScalarField; - location "0"; object p; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -2 0 0 0 0]; @@ -17,13 +15,13 @@ boundaryField auto0 { type uniformFixedValue; - uniformValue table - ( - (0 1.3332) - (3e-3 1.3332) - (3.1e-3 0) - (1e-2 0) - ); + uniformValue table + ( + (0 1.3332) + (3e-3 1.3332) + (3.1e-3 0) + (1e-2 0) + ); } interface { @@ -35,6 +33,3 @@ boundaryField value uniform 0; } } - - -// ************************************************************************* // diff --git a/elastic-tube-3d/fluid-openfoam/0/pointDisplacement b/elastic-tube-3d/fluid-openfoam/0/pointDisplacement index 1aaaaeef9..7d8b966f7 100644 --- a/elastic-tube-3d/fluid-openfoam/0/pointDisplacement +++ b/elastic-tube-3d/fluid-openfoam/0/pointDisplacement @@ -5,7 +5,6 @@ FoamFile class pointVectorField; object pointDisplacement; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 0 0 0 0 0]; @@ -21,7 +20,7 @@ boundaryField interface { - type fixedValue; + type fixedValue; value $internalField; } @@ -32,6 +31,3 @@ boundaryField } } - - -// ************************************************************************* // diff --git a/elastic-tube-3d/fluid-openfoam/constant/RASProperties b/elastic-tube-3d/fluid-openfoam/constant/RASProperties deleted file mode 100644 index c383a2b59..000000000 --- a/elastic-tube-3d/fluid-openfoam/constant/RASProperties +++ /dev/null @@ -1,16 +0,0 @@ -FoamFile -{ - version 2.0; - format ascii; - class dictionary; - object RASProperties; -} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -RASModel laminar; - -turbulence off; - -printCoeffs on; - -// ************************************************************************* // diff --git a/elastic-tube-3d/fluid-openfoam/constant/dynamicMeshDict b/elastic-tube-3d/fluid-openfoam/constant/dynamicMeshDict index fb7e15ef2..d49c2d241 100644 --- a/elastic-tube-3d/fluid-openfoam/constant/dynamicMeshDict +++ b/elastic-tube-3d/fluid-openfoam/constant/dynamicMeshDict @@ -2,18 +2,10 @@ FoamFile { version 2.0; format ascii; - - root ""; - case ""; - instance ""; - local ""; - class dictionary; object motionProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - dynamicFvMesh dynamicMotionSolverFvMesh; motionSolverLibs ( "libfvMotionSolvers.so" ); diff --git a/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/boundary b/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/boundary index e1aa017d9..2c571265b 100644 --- a/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/boundary +++ b/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/boundary @@ -6,7 +6,6 @@ FoamFile location "constant/polyMesh"; object boundary; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 3 ( @@ -29,5 +28,3 @@ FoamFile startFace 67196; } ) - -// ************************************************************************* // diff --git a/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/cellZones b/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/cellZones index 0fbd79ea5..f382205d8 100644 --- a/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/cellZones +++ b/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/cellZones @@ -6,9 +6,6 @@ FoamFile location "constant/polyMesh"; object cellZones; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 0 () - -// ************************************************************************* // diff --git a/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/faceZones b/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/faceZones index 2879fc837..9603e9eeb 100644 --- a/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/faceZones +++ b/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/faceZones @@ -6,9 +6,6 @@ FoamFile location "constant/polyMesh"; object faceZones; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 0 () - -// ************************************************************************* // diff --git a/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/faces b/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/faces index fdfa43a10..1371f4287 100644 --- a/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/faces +++ b/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/faces @@ -6,8 +6,6 @@ FoamFile location "constant/polyMesh"; object faces; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - 67367 ( @@ -67379,6 +67377,3 @@ FoamFile 3(223 230 222) 3(232 225 233) ) - - -// ************************************************************************* // diff --git a/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/neighbour b/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/neighbour index 5a6e2315f..2495145ee 100644 --- a/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/neighbour +++ b/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/neighbour @@ -7,8 +7,6 @@ FoamFile location "constant/polyMesh"; object neighbour; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - 63397 ( @@ -63410,6 +63408,3 @@ FoamFile 32690 32690 ) - - -// ************************************************************************* // diff --git a/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/owner b/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/owner index b48b8b378..f6bc9c468 100644 --- a/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/owner +++ b/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/owner @@ -7,8 +7,6 @@ FoamFile location "constant/polyMesh"; object owner; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - 67367 ( @@ -67380,6 +67378,3 @@ FoamFile 32352 32685 ) - - -// ************************************************************************* // diff --git a/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/pointZones b/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/pointZones index a0a8bd443..2e6430973 100644 --- a/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/pointZones +++ b/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/pointZones @@ -6,9 +6,6 @@ FoamFile location "constant/polyMesh"; object pointZones; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 0 () - -// ************************************************************************* // diff --git a/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/points b/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/points index 554f3f9f1..f2c95f414 100644 --- a/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/points +++ b/elastic-tube-3d/fluid-openfoam/constant/polyMesh.orig/points @@ -6,8 +6,6 @@ FoamFile location "constant/polyMesh"; object points; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - 6598 ( @@ -6610,6 +6608,3 @@ FoamFile (-0.00056456403382237 0.0027208575300533 0.017526220021498) (-0.0033003515528103 0.0026852032948362 0.001388666491757) ) - - -// ************************************************************************* // diff --git a/elastic-tube-3d/fluid-openfoam/constant/transportProperties b/elastic-tube-3d/fluid-openfoam/constant/transportProperties index a10b59d7c..c12193e79 100644 --- a/elastic-tube-3d/fluid-openfoam/constant/transportProperties +++ b/elastic-tube-3d/fluid-openfoam/constant/transportProperties @@ -3,12 +3,9 @@ FoamFile version 2.0; format ascii; class dictionary; - object flowProperties; + object transportProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // nu nu [0 2 -1 0 0 0 0] 3e-6; -transportModel Newtonian; - -// ************************************************************************* // +transportModel Newtonian; diff --git a/elastic-tube-3d/fluid-openfoam/constant/turbulenceProperties b/elastic-tube-3d/fluid-openfoam/constant/turbulenceProperties index 23f972c18..9789bb1f6 100644 --- a/elastic-tube-3d/fluid-openfoam/constant/turbulenceProperties +++ b/elastic-tube-3d/fluid-openfoam/constant/turbulenceProperties @@ -1,13 +1,9 @@ FoamFile { - version 2.0; - format ascii; - root ""; - case ""; - instance ""; - local ""; - class dictionary; - object turbulenceProperties; + version 2.0; + format ascii; + class dictionary; + object turbulenceProperties; } simulationType laminar; diff --git a/elastic-tube-3d/fluid-openfoam/system/controlDict b/elastic-tube-3d/fluid-openfoam/system/controlDict index 4247dc635..8a0e989eb 100755 --- a/elastic-tube-3d/fluid-openfoam/system/controlDict +++ b/elastic-tube-3d/fluid-openfoam/system/controlDict @@ -1,18 +1,13 @@ - FoamFile { - version 2.0; - format ascii; - root ""; - case ""; - instance ""; - local ""; - class dictionary; - object controlDict; + version 2.0; + format ascii; + class dictionary; + object controlDict; } -application pimpleFoam; -//application pimpleDyMFoam; +application pimpleFoam; // latest OpenFOAM +// application pimpleDyMFoam; // OpenFOAM v1712, OpenFOAM 5.x, or older startFrom startTime; diff --git a/elastic-tube-3d/fluid-openfoam/system/decomposeParDict b/elastic-tube-3d/fluid-openfoam/system/decomposeParDict index 121fc8f17..eecf99e23 100755 --- a/elastic-tube-3d/fluid-openfoam/system/decomposeParDict +++ b/elastic-tube-3d/fluid-openfoam/system/decomposeParDict @@ -5,7 +5,6 @@ FoamFile class dictionary; object decomposeParDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // numberOfSubdomains 4; method simple; @@ -14,6 +13,4 @@ simpleCoeffs { n (4 1 1); delta 0.001; - } -// ************************************************************************* // diff --git a/elastic-tube-3d/fluid-openfoam/system/fvSchemes b/elastic-tube-3d/fluid-openfoam/system/fvSchemes index 504047272..e69974eb5 100755 --- a/elastic-tube-3d/fluid-openfoam/system/fvSchemes +++ b/elastic-tube-3d/fluid-openfoam/system/fvSchemes @@ -7,72 +7,72 @@ FoamFile object fvSchemes; } - ddtSchemes - { - default Euler; - } +ddtSchemes +{ + default Euler; +} - gradSchemes - { - default Gauss linear; - grad(U) leastSquares; - grad(nuTilda) cellLimited Gauss linear 1; - grad(k) cellLimited Gauss linear 1; - grad(kl) cellLimited Gauss linear 1; - grad(omega) cellLimited Gauss linear 1; - grad(epsilon) cellLimited Gauss linear 1; - grad(q) cellLimited Gauss linear 1; - grad(zeta) cellLimited Gauss linear 1; - grad(v2) cellLimited Gauss linear 1; - grad(f) cellLimited Gauss linear 1; - grad(sqrt(kt)) cellLimited Gauss linear 1; - grad(kt) cellLimited Gauss linear 1; - grad(sqrt(kl)) cellLimited Gauss linear 1; - } +gradSchemes +{ + default Gauss linear; + grad(U) leastSquares; + grad(nuTilda) cellLimited Gauss linear 1; + grad(k) cellLimited Gauss linear 1; + grad(kl) cellLimited Gauss linear 1; + grad(omega) cellLimited Gauss linear 1; + grad(epsilon) cellLimited Gauss linear 1; + grad(q) cellLimited Gauss linear 1; + grad(zeta) cellLimited Gauss linear 1; + grad(v2) cellLimited Gauss linear 1; + grad(f) cellLimited Gauss linear 1; + grad(sqrt(kt)) cellLimited Gauss linear 1; + grad(kt) cellLimited Gauss linear 1; + grad(sqrt(kl)) cellLimited Gauss linear 1; +} - divSchemes - { - default Gauss linear; - div(phi,U) Gauss linearUpwindV leastSquares; - div(phi,k) Gauss linearUpwind cellLimited Gauss linear 1; - div(phi,epsilon) bounded Gauss linearUpwind grad(epsilon); - div(phi,zeta) bounded Gauss linearUpwind grad(zeta); - div(phi,q) bounded Gauss linearUpwind grad(q); - div(phi,omega) bounded Gauss linearUpwind grad(omega); - div(phi,nuTilda) bounded Gauss linearUpwind grad(nuTilda); - div(phi,T) bounded Gauss limitedLinear 1; - div(phi,kl) Gauss limitedLinear 1; - div(phi,kt) Gauss limitedLinear 1; - div(phi,R) Gauss upwind; - div(R) Gauss linear; - div((nuEff*dev(grad(U).T()))) Gauss linear; - div(phi,v2) bounded Gauss linearUpwind grad(v2); - div(phi,f) bounded Gauss linearUpwind grad(f); - } +divSchemes +{ + default Gauss linear; + div(phi,U) Gauss linearUpwindV leastSquares; + div(phi,k) Gauss linearUpwind cellLimited Gauss linear 1; + div(phi,epsilon) bounded Gauss linearUpwind grad(epsilon); + div(phi,zeta) bounded Gauss linearUpwind grad(zeta); + div(phi,q) bounded Gauss linearUpwind grad(q); + div(phi,omega) bounded Gauss linearUpwind grad(omega); + div(phi,nuTilda) bounded Gauss linearUpwind grad(nuTilda); + div(phi,T) bounded Gauss limitedLinear 1; + div(phi,kl) Gauss limitedLinear 1; + div(phi,kt) Gauss limitedLinear 1; + div(phi,R) Gauss upwind; + div(R) Gauss linear; + div((nuEff*dev(grad(U).T()))) Gauss linear; + div(phi,v2) bounded Gauss linearUpwind grad(v2); + div(phi,f) bounded Gauss linearUpwind grad(f); +} - interpolationSchemes - { - default linear; - interpolate(HbyA) linear; - } +interpolationSchemes +{ + default linear; + interpolate(HbyA) linear; +} - laplacianSchemes - { - default Gauss linear limited 0.333; - } +laplacianSchemes +{ + default Gauss linear limited 0.333; +} - snGradSchemes - { - default limited 0.333; - } +snGradSchemes +{ + default limited 0.333; +} - wallDist - { - method meshWave; - } +wallDist +{ + method meshWave; +} - fluxRequired - { - default yes; - p ; - } +fluxRequired +{ + default yes; + p ; +} diff --git a/elastic-tube-3d/fluid-openfoam/system/fvSolution b/elastic-tube-3d/fluid-openfoam/system/fvSolution index a245c5d9f..40c25c2b6 100755 --- a/elastic-tube-3d/fluid-openfoam/system/fvSolution +++ b/elastic-tube-3d/fluid-openfoam/system/fvSolution @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location system; object fvSolution; } diff --git a/elastic-tube-3d/fluid-openfoam/system/preciceDict b/elastic-tube-3d/fluid-openfoam/system/preciceDict index 152688f59..9a2163a66 100644 --- a/elastic-tube-3d/fluid-openfoam/system/preciceDict +++ b/elastic-tube-3d/fluid-openfoam/system/preciceDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object preciceDict; } diff --git a/elastic-tube-3d/fluid-openfoam/time-series b/elastic-tube-3d/fluid-openfoam/time-series index 004c64129..50bfca4a9 100644 --- a/elastic-tube-3d/fluid-openfoam/time-series +++ b/elastic-tube-3d/fluid-openfoam/time-series @@ -1,6 +1,6 @@ ( -(0 1.3332) -(3e-3 1.3332) -(3.1e-3 0) -(1e-2 0) + (0 1.3332) + (3e-3 1.3332) + (3.1e-3 0) + (1e-2 0) ) diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/T b/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/T index fad9ded3e..abf1bce54 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/T +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/T @@ -5,7 +5,6 @@ FoamFile class volScalarField; object T; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 0 0 1 0 0 0 ]; @@ -48,6 +47,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/U b/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/U index 2d9ee8fcb..cfe775cf3 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/U +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/U @@ -5,7 +5,6 @@ FoamFile class volVectorField; object U; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 1 -1 0 0 0 0 ]; @@ -43,6 +42,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/alphat b/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/alphat index 658075c8a..1d3ac72d0 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/alphat +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/alphat @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class volScalarField; - location "0"; object alphat; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 1 -1 -1 0 0 0 0 ]; @@ -49,6 +47,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/epsilon b/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/epsilon index 763f85ba3..c419576fc 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/epsilon +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/epsilon @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class volScalarField; - location "0"; object epsilon; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 2 -3 0 0 0 0 ]; @@ -49,6 +47,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/k b/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/k index 3fcebfa3c..a09c9617c 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/k +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/k @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class volScalarField; - location "0"; object k; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 2 -2 0 0 0 0 ]; @@ -49,6 +47,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/nut b/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/nut index 72e6ef35a..580e908d7 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/nut +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/nut @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class volScalarField; - location "0"; object nut; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 2 -1 0 0 0 0 ]; @@ -49,6 +47,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/p b/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/p index 6eb21cecf..654bb4023 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/p +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/p @@ -5,7 +5,6 @@ FoamFile class volScalarField; object p; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 1 -1 -2 0 0 0 0 ]; @@ -53,6 +52,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/p_rgh b/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/p_rgh index 31673b434..c5eebe883 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/p_rgh +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/0/p_rgh @@ -5,7 +5,6 @@ FoamFile class volScalarField; object p_rgh; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 1 -1 -2 0 0 0 0 ]; @@ -43,6 +42,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/constant/g b/flow-over-heated-plate-nearest-projection/fluid-openfoam/constant/g index 9d33548db..ca544e1f1 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/constant/g +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/constant/g @@ -3,13 +3,8 @@ FoamFile version 2.0; format ascii; class uniformDimensionedVectorField; - location "constant"; object g; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -2 0 0 0 0]; value (0 -9.81 0); - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/constant/thermophysicalProperties b/flow-over-heated-plate-nearest-projection/fluid-openfoam/constant/thermophysicalProperties index d452e0693..50413edcb 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/constant/thermophysicalProperties +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/constant/thermophysicalProperties @@ -3,20 +3,18 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object thermophysicalProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // thermoType { - type heRhoThermo; - mixture pureMixture; - transport const; - thermo hConst; - equationOfState perfectGas; - specie specie; - energy sensibleEnthalpy; + type heRhoThermo; + mixture pureMixture; + transport const; + thermo hConst; + equationOfState perfectGas; + specie specie; + energy sensibleEnthalpy; } mixture @@ -36,6 +34,3 @@ mixture Pr 0.01; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/constant/turbulenceProperties b/flow-over-heated-plate-nearest-projection/fluid-openfoam/constant/turbulenceProperties index a5ca2ead4..8271e5f76 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/constant/turbulenceProperties +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/constant/turbulenceProperties @@ -6,14 +6,5 @@ FoamFile location "constant"; object turbulenceProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // simulationType laminar; - -RAS -{ - RASModel kEpsilon; - turbulence off; -} - -// ************************************************************************* // diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/blockMeshDict b/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/blockMeshDict index de9322736..20c24a506 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/blockMeshDict +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/blockMeshDict @@ -5,7 +5,6 @@ FoamFile class dictionary; object blockMeshDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // convertToMeters 1; @@ -42,10 +41,6 @@ blocks hex (1 8 9 2 5 10 11 6) (51 41 1) simpleGrading (1 15 1) ); -edges -( -); - boundary ( @@ -106,9 +101,3 @@ boundary } ); - -mergePatchPairs -( -); - -// ************************************************************************* // diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/controlDict b/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/controlDict index 1f4d27106..edf69a529 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/controlDict +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/controlDict @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object controlDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application buoyantPimpleFoam; @@ -46,7 +44,3 @@ functions libs ("libpreciceAdapterFunctionObject.so"); } } - - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/decomposeParDict b/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/decomposeParDict index ad99cf6c5..979d08fad 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/decomposeParDict +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/decomposeParDict @@ -5,9 +5,9 @@ FoamFile { format ascii; } -numberOfSubdomains 2; +numberOfSubdomains 2; -method simple; +method simple; simpleCoeffs { diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/fvSchemes b/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/fvSchemes index 16fe50adc..937165c3a 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/fvSchemes +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/fvSchemes @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSchemes; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { @@ -47,6 +45,3 @@ snGradSchemes { default corrected; } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/fvSolution b/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/fvSolution index ea2b78f4c..d9a4f1673 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/fvSolution +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/fvSolution @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSolution; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { @@ -54,6 +52,3 @@ PIMPLE nCorrectors 2; nNonOrthogonalCorrectors 0; } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/preciceDict b/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/preciceDict index 57df62850..11b4f38d0 100644 --- a/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/preciceDict +++ b/flow-over-heated-plate-nearest-projection/fluid-openfoam/system/preciceDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object preciceDict; } diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/0/T b/flow-over-heated-plate-steady-state/fluid-openfoam/0/T index 38e3e14b1..70a7cfde7 100644 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/0/T +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/0/T @@ -5,7 +5,6 @@ FoamFile class volScalarField; object T; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 0 0 1 0 0 0]; @@ -64,5 +63,3 @@ boundaryField } } - -// ************************************************************************* // diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/0/U b/flow-over-heated-plate-steady-state/fluid-openfoam/0/U index d29b5ea55..86a2c7400 100644 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/0/U +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/0/U @@ -5,7 +5,6 @@ FoamFile class volVectorField; object U; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; @@ -53,5 +52,3 @@ boundaryField } } - -// ************************************************************************* // diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/0/alphat b/flow-over-heated-plate-steady-state/fluid-openfoam/0/alphat index 21992e643..3682f9bf0 100644 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/0/alphat +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/0/alphat @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class volScalarField; - location "0"; object alphat; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [1 -1 -1 0 0 0 0]; @@ -50,6 +48,3 @@ boundaryField } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/0/epsilon b/flow-over-heated-plate-steady-state/fluid-openfoam/0/epsilon index 732df6c14..8102db9d6 100644 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/0/epsilon +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/0/epsilon @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class volScalarField; - location "0"; object epsilon; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -3 0 0 0 0]; @@ -49,6 +47,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/0/k b/flow-over-heated-plate-steady-state/fluid-openfoam/0/k index 820daaa92..91066d443 100644 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/0/k +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/0/k @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class volScalarField; - location "0"; object k; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -2 0 0 0 0]; @@ -49,6 +47,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/0/nut b/flow-over-heated-plate-steady-state/fluid-openfoam/0/nut index 7d9945f0c..e9a4c10e5 100644 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/0/nut +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/0/nut @@ -4,10 +4,8 @@ FoamFile version 2.0; format ascii; class volScalarField; - location "0"; object nut; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -1 0 0 0 0]; @@ -50,6 +48,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/0/p b/flow-over-heated-plate-steady-state/fluid-openfoam/0/p index 5e8193004..06072f75d 100644 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/0/p +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/0/p @@ -5,7 +5,6 @@ FoamFile class volScalarField; object p; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [1 -1 -2 0 0 0 0]; @@ -63,5 +62,3 @@ boundaryField } } - -// ************************************************************************* // diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/0/p_rgh b/flow-over-heated-plate-steady-state/fluid-openfoam/0/p_rgh index 8e5217d1d..63b464f53 100644 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/0/p_rgh +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/0/p_rgh @@ -5,7 +5,6 @@ FoamFile class volScalarField; object p_rgh; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [1 -1 -2 0 0 0 0]; @@ -48,5 +47,3 @@ boundaryField type empty; } } - -// ************************************************************************* // diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/constant/g b/flow-over-heated-plate-steady-state/fluid-openfoam/constant/g index 64e6a8788..1d992f742 100644 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/constant/g +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/constant/g @@ -3,13 +3,8 @@ FoamFile version 2.0; format ascii; class uniformDimensionedVectorField; - location "constant"; object g; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -2 0 0 0 0]; value ( 0 0 0 ); - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/constant/thermophysicalProperties b/flow-over-heated-plate-steady-state/fluid-openfoam/constant/thermophysicalProperties index 8052f42ef..a901c8aef 100644 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/constant/thermophysicalProperties +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/constant/thermophysicalProperties @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object thermophysicalProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dpdt no; @@ -38,6 +36,3 @@ mixture Pr 0.01; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/constant/turbulenceProperties b/flow-over-heated-plate-steady-state/fluid-openfoam/constant/turbulenceProperties index 43760b90f..b75c49530 100644 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/constant/turbulenceProperties +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/constant/turbulenceProperties @@ -3,18 +3,7 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object turbulenceProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // simulationType laminar; - -RAS -{ - RASModel kEpsilon; - turbulence off; - printCoeffs on; -} - -// ************************************************************************* // diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/system/blockMeshDict b/flow-over-heated-plate-steady-state/fluid-openfoam/system/blockMeshDict index 94b912f9a..0c5118983 100755 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/system/blockMeshDict +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/system/blockMeshDict @@ -5,9 +5,6 @@ FoamFile class dictionary; object blockMeshDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - convertToMeters 1; @@ -45,10 +42,6 @@ blocks hex (1 8 9 2 5 10 11 6) (51 41 4) simpleGrading (1 15 1) ); -edges -( -); - boundary ( @@ -109,9 +102,3 @@ boundary } ); - -mergePatchPairs -( -); - -// ************************************************************************* // diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/system/controlDict b/flow-over-heated-plate-steady-state/fluid-openfoam/system/controlDict index 9e8689acc..db751afa7 100644 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/system/controlDict +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/system/controlDict @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object controlDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application buoyantSimpleFoam; @@ -44,7 +42,3 @@ functions libs ("libpreciceAdapterFunctionObject.so"); } } - - - -// ************************************************************************* // diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/system/fvSchemes b/flow-over-heated-plate-steady-state/fluid-openfoam/system/fvSchemes index 07934a877..d471fedf6 100644 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/system/fvSchemes +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/system/fvSchemes @@ -4,51 +4,58 @@ FoamFile { object fvSchemes; format ascii; } + ddtSchemes { default steadyState; } + gradSchemes { - grad(e) cellLimited Gauss linear 1.0; - default cellLimited Gauss linear 1.0; - grad(p_rgh) cellLimited Gauss linear 1.0; - grad(U) cellLimited Gauss linear 1.0; - grad(h) cellLimited Gauss linear 1.0; - grad(rho) cellLimited Gauss linear 1.0; -} + default cellLimited Gauss linear 1.0; + grad(e) cellLimited Gauss linear 1.0; + grad(p_rgh) cellLimited Gauss linear 1.0; + grad(U) cellLimited Gauss linear 1.0; + grad(h) cellLimited Gauss linear 1.0; + grad(rho) cellLimited Gauss linear 1.0; +} + divSchemes { - div(phi,e) bounded Gauss upwind; - div(phi,h) bounded Gauss upwind; - default Gauss linear; + default Gauss linear; + div(phi,e) bounded Gauss upwind; + div(phi,h) bounded Gauss upwind; div((muEff*dev2(T(grad(U))))) Gauss linear; - div(phiv,p) bounded Gauss upwind; - div(phi,K) bounded Gauss upwind; - div(phi,U) bounded Gauss upwind; + div(phiv,p) bounded Gauss upwind; + div(phi,K) bounded Gauss upwind; + div(phi,U) bounded Gauss upwind; } + laplacianSchemes { - laplacian(muEff,U) Gauss linear corrected; - laplacian(rhorAUf,p_rgh) Gauss linear corrected; - default Gauss linear corrected; - laplacian(alphaEff,e) Gauss linear corrected; - laplacian(alphaEff,h) Gauss linear corrected; - laplacian(alpha,h) Gauss linear corrected; -} + default Gauss linear corrected; + laplacian(muEff,U) Gauss linear corrected; + laplacian(rhorAUf,p_rgh) Gauss linear corrected; + laplacian(alphaEff,e) Gauss linear corrected; + laplacian(alphaEff,h) Gauss linear corrected; + laplacian(alpha,h) Gauss linear corrected; +} + interpolationSchemes { - interpolate(grad(h)) linear; - default linear; + default linear; + interpolate(grad(h)) linear; interpolate((thermo:rho*Cp)) linear; - interpolate((rho*rAU)) linear; - interpolate(rho) linear; - interpolate(kappa) linear; - interpolate(mag(Kappa)) linear; - interpolate((rho*HbyA)) linear; - interpolate((rho_0*U_0)) linear; -} + interpolate((rho*rAU)) linear; + interpolate(rho) linear; + interpolate(kappa) linear; + interpolate(mag(Kappa)) linear; + interpolate((rho*HbyA)) linear; + interpolate((rho_0*U_0)) linear; +} + snGradSchemes { - default corrected; - snGrad(rho) corrected; - snGrad(p_rgh) corrected; + default corrected; + snGrad(rho) corrected; + snGrad(p_rgh) corrected; } + fluxRequired { default no; - p_rgh ; + p_rgh; } diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/system/fvSolution b/flow-over-heated-plate-steady-state/fluid-openfoam/system/fvSolution index 29e027ef8..34246cd4f 100644 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/system/fvSolution +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/system/fvSolution @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSolution; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { @@ -87,5 +85,3 @@ relaxationFactors h 0.99; } } - -// ************************************************************************* // diff --git a/flow-over-heated-plate-steady-state/fluid-openfoam/system/preciceDict b/flow-over-heated-plate-steady-state/fluid-openfoam/system/preciceDict index 932e42bdd..6eda33e26 100644 --- a/flow-over-heated-plate-steady-state/fluid-openfoam/system/preciceDict +++ b/flow-over-heated-plate-steady-state/fluid-openfoam/system/preciceDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object preciceDict; } diff --git a/flow-over-heated-plate/fluid-openfoam/0/T b/flow-over-heated-plate/fluid-openfoam/0/T index ed002e908..abf1bce54 100644 --- a/flow-over-heated-plate/fluid-openfoam/0/T +++ b/flow-over-heated-plate/fluid-openfoam/0/T @@ -1,10 +1,3 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; @@ -12,7 +5,6 @@ FoamFile class volScalarField; object T; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 0 0 1 0 0 0 ]; @@ -55,6 +47,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate/fluid-openfoam/0/U b/flow-over-heated-plate/fluid-openfoam/0/U index 3cc2f65ee..cfe775cf3 100644 --- a/flow-over-heated-plate/fluid-openfoam/0/U +++ b/flow-over-heated-plate/fluid-openfoam/0/U @@ -1,10 +1,3 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; @@ -12,7 +5,6 @@ FoamFile class volVectorField; object U; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 1 -1 0 0 0 0 ]; @@ -50,6 +42,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate/fluid-openfoam/0/alphat b/flow-over-heated-plate/fluid-openfoam/0/alphat index 8cdbda4b4..1d3ac72d0 100644 --- a/flow-over-heated-plate/fluid-openfoam/0/alphat +++ b/flow-over-heated-plate/fluid-openfoam/0/alphat @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0"; object alphat; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 1 -1 -1 0 0 0 0 ]; @@ -56,6 +47,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate/fluid-openfoam/0/epsilon b/flow-over-heated-plate/fluid-openfoam/0/epsilon index a1374d174..c419576fc 100644 --- a/flow-over-heated-plate/fluid-openfoam/0/epsilon +++ b/flow-over-heated-plate/fluid-openfoam/0/epsilon @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0"; object epsilon; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 2 -3 0 0 0 0 ]; @@ -56,6 +47,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate/fluid-openfoam/0/k b/flow-over-heated-plate/fluid-openfoam/0/k index 87a6a0a83..a09c9617c 100644 --- a/flow-over-heated-plate/fluid-openfoam/0/k +++ b/flow-over-heated-plate/fluid-openfoam/0/k @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0"; object k; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 2 -2 0 0 0 0 ]; @@ -56,6 +47,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate/fluid-openfoam/0/nut b/flow-over-heated-plate/fluid-openfoam/0/nut index 9cb00d410..580e908d7 100644 --- a/flow-over-heated-plate/fluid-openfoam/0/nut +++ b/flow-over-heated-plate/fluid-openfoam/0/nut @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0"; object nut; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 0 2 -1 0 0 0 0 ]; @@ -56,6 +47,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate/fluid-openfoam/0/p b/flow-over-heated-plate/fluid-openfoam/0/p index 33c185074..654bb4023 100644 --- a/flow-over-heated-plate/fluid-openfoam/0/p +++ b/flow-over-heated-plate/fluid-openfoam/0/p @@ -1,10 +1,3 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; @@ -12,7 +5,6 @@ FoamFile class volScalarField; object p; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 1 -1 -2 0 0 0 0 ]; @@ -60,6 +52,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate/fluid-openfoam/0/p_rgh b/flow-over-heated-plate/fluid-openfoam/0/p_rgh index 6829b2c16..c5eebe883 100644 --- a/flow-over-heated-plate/fluid-openfoam/0/p_rgh +++ b/flow-over-heated-plate/fluid-openfoam/0/p_rgh @@ -1,10 +1,3 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; @@ -12,7 +5,6 @@ FoamFile class volScalarField; object p_rgh; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [ 1 -1 -2 0 0 0 0 ]; @@ -50,6 +42,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate/fluid-openfoam/constant/g b/flow-over-heated-plate/fluid-openfoam/constant/g index 66a77f74e..ca544e1f1 100644 --- a/flow-over-heated-plate/fluid-openfoam/constant/g +++ b/flow-over-heated-plate/fluid-openfoam/constant/g @@ -1,22 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class uniformDimensionedVectorField; - location "constant"; object g; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -2 0 0 0 0]; value (0 -9.81 0); - - -// ************************************************************************* // diff --git a/flow-over-heated-plate/fluid-openfoam/constant/thermophysicalProperties b/flow-over-heated-plate/fluid-openfoam/constant/thermophysicalProperties index f735c1993..7b93ee2ea 100644 --- a/flow-over-heated-plate/fluid-openfoam/constant/thermophysicalProperties +++ b/flow-over-heated-plate/fluid-openfoam/constant/thermophysicalProperties @@ -1,10 +1,3 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; @@ -13,7 +6,6 @@ FoamFile location "constant"; object thermophysicalProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // thermoType { @@ -43,6 +35,3 @@ mixture Pr 0.01; } } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate/fluid-openfoam/constant/turbulenceProperties b/flow-over-heated-plate/fluid-openfoam/constant/turbulenceProperties index 95da7141e..b75c49530 100644 --- a/flow-over-heated-plate/fluid-openfoam/constant/turbulenceProperties +++ b/flow-over-heated-plate/fluid-openfoam/constant/turbulenceProperties @@ -1,26 +1,9 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; - location "constant"; object turbulenceProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // simulationType laminar; - -RAS -{ - RASModel kEpsilon; - turbulence off; -} - -// ************************************************************************* // diff --git a/flow-over-heated-plate/fluid-openfoam/system/blockMeshDict b/flow-over-heated-plate/fluid-openfoam/system/blockMeshDict index 55281d6a5..de95b0ace 100644 --- a/flow-over-heated-plate/fluid-openfoam/system/blockMeshDict +++ b/flow-over-heated-plate/fluid-openfoam/system/blockMeshDict @@ -1,10 +1,3 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; @@ -12,8 +5,6 @@ FoamFile class dictionary; object blockMeshDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - vertices ( @@ -48,10 +39,6 @@ blocks hex (1 8 9 2 5 10 11 6) (51 41 1) simpleGrading (1 15 1) ); -edges -( -); - boundary ( @@ -112,9 +99,3 @@ boundary } ); - -mergePatchPairs -( -); - -// ************************************************************************* // diff --git a/flow-over-heated-plate/fluid-openfoam/system/controlDict b/flow-over-heated-plate/fluid-openfoam/system/controlDict index bdfdb5da9..edf69a529 100644 --- a/flow-over-heated-plate/fluid-openfoam/system/controlDict +++ b/flow-over-heated-plate/fluid-openfoam/system/controlDict @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; - location "system"; object controlDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application buoyantPimpleFoam; @@ -53,7 +44,3 @@ functions libs ("libpreciceAdapterFunctionObject.so"); } } - - - -// ************************************************************************* // diff --git a/flow-over-heated-plate/fluid-openfoam/system/decomposeParDict b/flow-over-heated-plate/fluid-openfoam/system/decomposeParDict index ad99cf6c5..0d1859e14 100644 --- a/flow-over-heated-plate/fluid-openfoam/system/decomposeParDict +++ b/flow-over-heated-plate/fluid-openfoam/system/decomposeParDict @@ -11,6 +11,6 @@ method simple; simpleCoeffs { - n (2 1 1); - delta 0.001; + n (2 1 1); + delta 0.001; } diff --git a/flow-over-heated-plate/fluid-openfoam/system/fvSchemes b/flow-over-heated-plate/fluid-openfoam/system/fvSchemes index 3eb3688c2..fd48cb5b7 100644 --- a/flow-over-heated-plate/fluid-openfoam/system/fvSchemes +++ b/flow-over-heated-plate/fluid-openfoam/system/fvSchemes @@ -1,10 +1,3 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; @@ -13,7 +6,6 @@ FoamFile location "system"; object fvSchemes; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { @@ -54,6 +46,3 @@ snGradSchemes { default corrected; } - - -// ************************************************************************* // diff --git a/flow-over-heated-plate/fluid-openfoam/system/fvSolution b/flow-over-heated-plate/fluid-openfoam/system/fvSolution index e55987f34..e7047fa96 100644 --- a/flow-over-heated-plate/fluid-openfoam/system/fvSolution +++ b/flow-over-heated-plate/fluid-openfoam/system/fvSolution @@ -1,10 +1,3 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; @@ -13,7 +6,6 @@ FoamFile location "system"; object fvSolution; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { @@ -61,6 +53,3 @@ PIMPLE nCorrectors 2; nNonOrthogonalCorrectors 0; } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-inner-openfoam/0/T b/heat-exchanger/fluid-inner-openfoam/0/T index 1bdc6ec75..fde10f98f 100644 --- a/heat-exchanger/fluid-inner-openfoam/0/T +++ b/heat-exchanger/fluid-inner-openfoam/0/T @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0/Zone_solid_2"; object T; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 0 0 1 0 0 0]; @@ -42,6 +33,3 @@ boundaryField type zeroGradient; } } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-inner-openfoam/0/U b/heat-exchanger/fluid-inner-openfoam/0/U index 09cc8ce79..3bd740d94 100644 --- a/heat-exchanger/fluid-inner-openfoam/0/U +++ b/heat-exchanger/fluid-inner-openfoam/0/U @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volVectorField; - location "0/Zone_solid_2"; object U; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; @@ -41,6 +32,3 @@ boundaryField value uniform (0 0 0); } } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-inner-openfoam/0/alphat b/heat-exchanger/fluid-inner-openfoam/0/alphat index 24d11a2f2..03047af9a 100644 --- a/heat-exchanger/fluid-inner-openfoam/0/alphat +++ b/heat-exchanger/fluid-inner-openfoam/0/alphat @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0"; object alphat; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [1 -1 -1 0 0 0 0]; @@ -27,6 +18,3 @@ boundaryField value uniform 0; } } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-inner-openfoam/0/epsilon b/heat-exchanger/fluid-inner-openfoam/0/epsilon index 0dcd39da8..351c4a840 100644 --- a/heat-exchanger/fluid-inner-openfoam/0/epsilon +++ b/heat-exchanger/fluid-inner-openfoam/0/epsilon @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0"; object epsilon; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -3 0 0 0 0]; @@ -27,6 +18,3 @@ boundaryField value uniform 1e-6; } } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-inner-openfoam/0/k b/heat-exchanger/fluid-inner-openfoam/0/k index 4aa87181e..256131bba 100644 --- a/heat-exchanger/fluid-inner-openfoam/0/k +++ b/heat-exchanger/fluid-inner-openfoam/0/k @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0"; object k; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -2 0 0 0 0]; @@ -27,6 +18,3 @@ boundaryField value uniform 0; } } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-inner-openfoam/0/nut b/heat-exchanger/fluid-inner-openfoam/0/nut index 88c6fc85c..541c6425e 100644 --- a/heat-exchanger/fluid-inner-openfoam/0/nut +++ b/heat-exchanger/fluid-inner-openfoam/0/nut @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0"; object nut; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -1 0 0 0 0]; @@ -27,6 +18,3 @@ boundaryField value uniform 0; } } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-inner-openfoam/0/p b/heat-exchanger/fluid-inner-openfoam/0/p index 2a9ce1844..37d628dbd 100644 --- a/heat-exchanger/fluid-inner-openfoam/0/p +++ b/heat-exchanger/fluid-inner-openfoam/0/p @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0/Zone_solid_2"; object p; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [1 -1 -2 0 0 0 0]; @@ -42,6 +33,3 @@ boundaryField value uniform 101325; } } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-inner-openfoam/0/p_rgh b/heat-exchanger/fluid-inner-openfoam/0/p_rgh index 7b6ab90dc..30da491ca 100644 --- a/heat-exchanger/fluid-inner-openfoam/0/p_rgh +++ b/heat-exchanger/fluid-inner-openfoam/0/p_rgh @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0/Zone_solid_2"; object p_rgh; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [1 -1 -2 0 0 0 0]; @@ -43,6 +34,3 @@ boundaryField value uniform 101325; } } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-inner-openfoam/constant/g b/heat-exchanger/fluid-inner-openfoam/constant/g index 3d548e617..03bf70885 100644 --- a/heat-exchanger/fluid-inner-openfoam/constant/g +++ b/heat-exchanger/fluid-inner-openfoam/constant/g @@ -1,8 +1,12 @@ -FoamFile { - version 2.0; - class uniformDimensionedVectorField; - object g; - format ascii; +FoamFile +{ + version 2.0; + format ascii; + class uniformDimensionedVectorField; + object g; } -value (0.0 0.0 0.0); + dimensions [0 1 -2 0 0 0 0]; + +value (0.0 0.0 0.0); + diff --git a/heat-exchanger/fluid-inner-openfoam/constant/radiationProperties b/heat-exchanger/fluid-inner-openfoam/constant/radiationProperties deleted file mode 100644 index 7f6c4885b..000000000 --- a/heat-exchanger/fluid-inner-openfoam/constant/radiationProperties +++ /dev/null @@ -1,8 +0,0 @@ -FoamFile { - version 2.0; - class dictionary; - object radiationProperties; - format ascii; -} -radiation off; -radiationModel none; diff --git a/heat-exchanger/fluid-inner-openfoam/constant/thermophysicalProperties b/heat-exchanger/fluid-inner-openfoam/constant/thermophysicalProperties index a34ad1449..bb2648261 100644 --- a/heat-exchanger/fluid-inner-openfoam/constant/thermophysicalProperties +++ b/heat-exchanger/fluid-inner-openfoam/constant/thermophysicalProperties @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; - location "constant"; - object thermophysicalProperties.water; + object thermophysicalProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dpdt no; @@ -51,4 +42,3 @@ mixture Pr 2.289; } } - diff --git a/heat-exchanger/fluid-inner-openfoam/constant/turbulenceProperties b/heat-exchanger/fluid-inner-openfoam/constant/turbulenceProperties index 4e34e7806..2b2c4a310 100644 --- a/heat-exchanger/fluid-inner-openfoam/constant/turbulenceProperties +++ b/heat-exchanger/fluid-inner-openfoam/constant/turbulenceProperties @@ -1,14 +1,8 @@ FoamFile { - version 2.0; - class dictionary; - object turbulenceProperties; - format ascii; + version 2.0; + format ascii; + class dictionary; + object turbulenceProperties; } -simulationType laminar; -RAS -{ - RASModel kEpsilon; - turbulence off; - printCoeffs on; -} +simulationType laminar; diff --git a/heat-exchanger/fluid-inner-openfoam/system/controlDict b/heat-exchanger/fluid-inner-openfoam/system/controlDict index fde22f262..8b2c0d38d 100644 --- a/heat-exchanger/fluid-inner-openfoam/system/controlDict +++ b/heat-exchanger/fluid-inner-openfoam/system/controlDict @@ -1,24 +1,39 @@ FoamFile { - version 2.0; - class dictionary; - object controlDict; - format ascii; + version 2.0; + format ascii; + class dictionary; + object controlDict; } -application buoyantSimpleFoam; -startFrom startTime; -stopAt endTime; -writeFormat ascii; -writePrecision 12; -writeCompression on; -timeFormat general; -timePrecision 12; -runTimeModifiable false; -deltaT 1; -startTime 0.0; -writeInterval 50; -adjustTimeStep no; -endTime 2000.0; -writeControl timeStep; + +application buoyantSimpleFoam; + +startFrom startTime; + +stopAt endTime; + +writeFormat ascii; + +writePrecision 12; + +writeCompression on; + +timeFormat general; + +timePrecision 12; + +runTimeModifiable false; + +deltaT 1; + +startTime 0.0; + +writeInterval 50; + +adjustTimeStep no; + +endTime 2000.0; + +writeControl timeStep; functions { diff --git a/heat-exchanger/fluid-inner-openfoam/system/decomposeParDict b/heat-exchanger/fluid-inner-openfoam/system/decomposeParDict index f22d98557..672e38ef1 100755 --- a/heat-exchanger/fluid-inner-openfoam/system/decomposeParDict +++ b/heat-exchanger/fluid-inner-openfoam/system/decomposeParDict @@ -1,8 +1,10 @@ FoamFile { - version 2.0; - class dictionary; - object decomposeParDict; - format ascii; + version 2.0; + format ascii; + class dictionary; + object decomposeParDict; } + method scotch; + numberOfSubdomains 2; diff --git a/heat-exchanger/fluid-inner-openfoam/system/fvOptions b/heat-exchanger/fluid-inner-openfoam/system/fvOptions index da779a0c2..e61c9ace7 100644 --- a/heat-exchanger/fluid-inner-openfoam/system/fvOptions +++ b/heat-exchanger/fluid-inner-openfoam/system/fvOptions @@ -1,6 +1,6 @@ FoamFile { - version 2.0; - class dictionary; - object fvOptions; - format ascii; + version 2.0; + class dictionary; + object fvOptions; + format ascii; } diff --git a/heat-exchanger/fluid-inner-openfoam/system/fvSchemes b/heat-exchanger/fluid-inner-openfoam/system/fvSchemes index 07934a877..52bf9cc35 100644 --- a/heat-exchanger/fluid-inner-openfoam/system/fvSchemes +++ b/heat-exchanger/fluid-inner-openfoam/system/fvSchemes @@ -1,54 +1,41 @@ FoamFile { - version 2.0; - class dictionary; - object fvSchemes; - format ascii; + version 2.0; + format ascii; + class dictionary; + object fvSchemes; } + ddtSchemes { default steadyState; } + gradSchemes { - grad(e) cellLimited Gauss linear 1.0; - default cellLimited Gauss linear 1.0; - grad(p_rgh) cellLimited Gauss linear 1.0; - grad(U) cellLimited Gauss linear 1.0; - grad(h) cellLimited Gauss linear 1.0; - grad(rho) cellLimited Gauss linear 1.0; + default cellLimited Gauss linear 1.0; } + divSchemes { - div(phi,e) bounded Gauss upwind; - div(phi,h) bounded Gauss upwind; - default Gauss linear; + default Gauss linear; + div(phi,e) bounded Gauss upwind; + div(phi,h) bounded Gauss upwind; div((muEff*dev2(T(grad(U))))) Gauss linear; - div(phiv,p) bounded Gauss upwind; - div(phi,K) bounded Gauss upwind; - div(phi,U) bounded Gauss upwind; + div(phiv,p) bounded Gauss upwind; + div(phi,K) bounded Gauss upwind; + div(phi,U) bounded Gauss upwind; } + laplacianSchemes { - laplacian(muEff,U) Gauss linear corrected; - laplacian(rhorAUf,p_rgh) Gauss linear corrected; - default Gauss linear corrected; - laplacian(alphaEff,e) Gauss linear corrected; - laplacian(alphaEff,h) Gauss linear corrected; - laplacian(alpha,h) Gauss linear corrected; + default Gauss linear corrected; } + interpolationSchemes { - interpolate(grad(h)) linear; - default linear; - interpolate((thermo:rho*Cp)) linear; - interpolate((rho*rAU)) linear; - interpolate(rho) linear; - interpolate(kappa) linear; - interpolate(mag(Kappa)) linear; - interpolate((rho*HbyA)) linear; - interpolate((rho_0*U_0)) linear; + default linear; } + snGradSchemes { - default corrected; - snGrad(rho) corrected; - snGrad(p_rgh) corrected; + default corrected; } + fluxRequired { default no; - p_rgh ; + p_rgh; } diff --git a/heat-exchanger/fluid-inner-openfoam/system/fvSolution b/heat-exchanger/fluid-inner-openfoam/system/fvSolution index 06a34475d..2cb8ffaa2 100644 --- a/heat-exchanger/fluid-inner-openfoam/system/fvSolution +++ b/heat-exchanger/fluid-inner-openfoam/system/fvSolution @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; - location "system"; object fvSolution; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { @@ -88,5 +79,3 @@ relaxationFactors h 0.99; } } - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-outer-openfoam/0/T b/heat-exchanger/fluid-outer-openfoam/0/T index 07f79e7a0..151450f45 100644 --- a/heat-exchanger/fluid-outer-openfoam/0/T +++ b/heat-exchanger/fluid-outer-openfoam/0/T @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0/Zone_solid_1"; object T; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 0 0 1 0 0 0]; @@ -42,6 +33,3 @@ boundaryField type zeroGradient; } } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-outer-openfoam/0/U b/heat-exchanger/fluid-outer-openfoam/0/U index c72388097..4d6293388 100644 --- a/heat-exchanger/fluid-outer-openfoam/0/U +++ b/heat-exchanger/fluid-outer-openfoam/0/U @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volVectorField; - location "0/Zone_solid_1"; object U; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; @@ -41,6 +32,3 @@ boundaryField value uniform (0 0 0); } } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-outer-openfoam/0/alphat b/heat-exchanger/fluid-outer-openfoam/0/alphat index 24d11a2f2..03047af9a 100644 --- a/heat-exchanger/fluid-outer-openfoam/0/alphat +++ b/heat-exchanger/fluid-outer-openfoam/0/alphat @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0"; object alphat; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [1 -1 -1 0 0 0 0]; @@ -27,6 +18,3 @@ boundaryField value uniform 0; } } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-outer-openfoam/0/epsilon b/heat-exchanger/fluid-outer-openfoam/0/epsilon index 0dcd39da8..351c4a840 100644 --- a/heat-exchanger/fluid-outer-openfoam/0/epsilon +++ b/heat-exchanger/fluid-outer-openfoam/0/epsilon @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0"; object epsilon; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -3 0 0 0 0]; @@ -27,6 +18,3 @@ boundaryField value uniform 1e-6; } } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-outer-openfoam/0/k b/heat-exchanger/fluid-outer-openfoam/0/k index 4aa87181e..afa8b4162 100644 --- a/heat-exchanger/fluid-outer-openfoam/0/k +++ b/heat-exchanger/fluid-outer-openfoam/0/k @@ -1,10 +1,3 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; @@ -13,7 +6,6 @@ FoamFile location "0"; object k; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -2 0 0 0 0]; @@ -27,6 +19,3 @@ boundaryField value uniform 0; } } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-outer-openfoam/0/nut b/heat-exchanger/fluid-outer-openfoam/0/nut index 88c6fc85c..541c6425e 100644 --- a/heat-exchanger/fluid-outer-openfoam/0/nut +++ b/heat-exchanger/fluid-outer-openfoam/0/nut @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0"; object nut; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -1 0 0 0 0]; @@ -27,6 +18,3 @@ boundaryField value uniform 0; } } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-outer-openfoam/0/p b/heat-exchanger/fluid-outer-openfoam/0/p index b09bf799f..593ee7719 100644 --- a/heat-exchanger/fluid-outer-openfoam/0/p +++ b/heat-exchanger/fluid-outer-openfoam/0/p @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0/Zone_solid_1"; object p; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [1 -1 -2 0 0 0 0]; @@ -42,6 +33,3 @@ boundaryField value uniform 101325; } } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-outer-openfoam/0/p_rgh b/heat-exchanger/fluid-outer-openfoam/0/p_rgh index 8d96cf683..9b57f2de9 100644 --- a/heat-exchanger/fluid-outer-openfoam/0/p_rgh +++ b/heat-exchanger/fluid-outer-openfoam/0/p_rgh @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; - location "0/Zone_solid_1"; object p_rgh; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [1 -1 -2 0 0 0 0]; @@ -43,6 +34,3 @@ boundaryField value uniform 101325; } } - - -// ************************************************************************* // diff --git a/heat-exchanger/fluid-outer-openfoam/constant/g b/heat-exchanger/fluid-outer-openfoam/constant/g index 3d548e617..913a7a48f 100644 --- a/heat-exchanger/fluid-outer-openfoam/constant/g +++ b/heat-exchanger/fluid-outer-openfoam/constant/g @@ -1,8 +1,10 @@ FoamFile { - version 2.0; - class uniformDimensionedVectorField; - object g; - format ascii; + version 2.0; + format ascii; + class uniformDimensionedVectorField; + object g; } + value (0.0 0.0 0.0); + dimensions [0 1 -2 0 0 0 0]; diff --git a/heat-exchanger/fluid-outer-openfoam/constant/radiationProperties b/heat-exchanger/fluid-outer-openfoam/constant/radiationProperties deleted file mode 100644 index 7f6c4885b..000000000 --- a/heat-exchanger/fluid-outer-openfoam/constant/radiationProperties +++ /dev/null @@ -1,8 +0,0 @@ -FoamFile { - version 2.0; - class dictionary; - object radiationProperties; - format ascii; -} -radiation off; -radiationModel none; diff --git a/heat-exchanger/fluid-outer-openfoam/constant/thermophysicalProperties b/heat-exchanger/fluid-outer-openfoam/constant/thermophysicalProperties index a34ad1449..54d56fa42 100644 --- a/heat-exchanger/fluid-outer-openfoam/constant/thermophysicalProperties +++ b/heat-exchanger/fluid-outer-openfoam/constant/thermophysicalProperties @@ -1,19 +1,11 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "constant"; - object thermophysicalProperties.water; + object thermophysicalProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dpdt no; diff --git a/heat-exchanger/fluid-outer-openfoam/constant/turbulenceProperties b/heat-exchanger/fluid-outer-openfoam/constant/turbulenceProperties index aa1011270..219383b49 100644 --- a/heat-exchanger/fluid-outer-openfoam/constant/turbulenceProperties +++ b/heat-exchanger/fluid-outer-openfoam/constant/turbulenceProperties @@ -1,15 +1,8 @@ FoamFile { - version 2.0; - class dictionary; - object turbulenceProperties; - format ascii; -} -simulationType laminar; - -RAS -{ - RASModel kEpsilon; - turbulence off; - printCoeffs on; + version 2.0; + class dictionary; + object turbulenceProperties; + format ascii; } +simulationType laminar; diff --git a/heat-exchanger/fluid-outer-openfoam/system/controlDict b/heat-exchanger/fluid-outer-openfoam/system/controlDict index fde22f262..5618652f8 100644 --- a/heat-exchanger/fluid-outer-openfoam/system/controlDict +++ b/heat-exchanger/fluid-outer-openfoam/system/controlDict @@ -1,23 +1,38 @@ FoamFile { - version 2.0; - class dictionary; - object controlDict; - format ascii; + version 2.0; + format ascii; + class dictionary; + object controlDict; } + application buoyantSimpleFoam; + startFrom startTime; + stopAt endTime; + writeFormat ascii; + writePrecision 12; + writeCompression on; + timeFormat general; + timePrecision 12; + runTimeModifiable false; + deltaT 1; + startTime 0.0; + writeInterval 50; + adjustTimeStep no; + endTime 2000.0; + writeControl timeStep; functions diff --git a/heat-exchanger/fluid-outer-openfoam/system/decomposeParDict b/heat-exchanger/fluid-outer-openfoam/system/decomposeParDict index f22d98557..63282e576 100755 --- a/heat-exchanger/fluid-outer-openfoam/system/decomposeParDict +++ b/heat-exchanger/fluid-outer-openfoam/system/decomposeParDict @@ -1,8 +1,10 @@ FoamFile { - version 2.0; - class dictionary; - object decomposeParDict; - format ascii; + version 2.0; + format ascii; + class dictionary; + object decomposeParDict; } + method scotch; + numberOfSubdomains 2; diff --git a/heat-exchanger/fluid-outer-openfoam/system/fvOptions b/heat-exchanger/fluid-outer-openfoam/system/fvOptions index da779a0c2..951889ed0 100644 --- a/heat-exchanger/fluid-outer-openfoam/system/fvOptions +++ b/heat-exchanger/fluid-outer-openfoam/system/fvOptions @@ -1,6 +1,6 @@ FoamFile { - version 2.0; - class dictionary; - object fvOptions; - format ascii; + version 2.0; + format ascii; + class dictionary; + object fvOptions; } diff --git a/heat-exchanger/fluid-outer-openfoam/system/fvSchemes b/heat-exchanger/fluid-outer-openfoam/system/fvSchemes index 07934a877..f7418fe7d 100644 --- a/heat-exchanger/fluid-outer-openfoam/system/fvSchemes +++ b/heat-exchanger/fluid-outer-openfoam/system/fvSchemes @@ -1,54 +1,41 @@ FoamFile { - version 2.0; - class dictionary; - object fvSchemes; - format ascii; + version 2.0; + format ascii; + class dictionary; + object fvSchemes; } + ddtSchemes { - default steadyState; + default steadyState; } + gradSchemes { - grad(e) cellLimited Gauss linear 1.0; - default cellLimited Gauss linear 1.0; - grad(p_rgh) cellLimited Gauss linear 1.0; - grad(U) cellLimited Gauss linear 1.0; - grad(h) cellLimited Gauss linear 1.0; - grad(rho) cellLimited Gauss linear 1.0; + default cellLimited Gauss linear 1.0; } + divSchemes { - div(phi,e) bounded Gauss upwind; - div(phi,h) bounded Gauss upwind; - default Gauss linear; + default Gauss linear; + div(phi,e) bounded Gauss upwind; + div(phi,h) bounded Gauss upwind; div((muEff*dev2(T(grad(U))))) Gauss linear; - div(phiv,p) bounded Gauss upwind; - div(phi,K) bounded Gauss upwind; - div(phi,U) bounded Gauss upwind; + div(phiv,p) bounded Gauss upwind; + div(phi,K) bounded Gauss upwind; + div(phi,U) bounded Gauss upwind; } + laplacianSchemes { - laplacian(muEff,U) Gauss linear corrected; - laplacian(rhorAUf,p_rgh) Gauss linear corrected; - default Gauss linear corrected; - laplacian(alphaEff,e) Gauss linear corrected; - laplacian(alphaEff,h) Gauss linear corrected; - laplacian(alpha,h) Gauss linear corrected; + default Gauss linear corrected; } + interpolationSchemes { - interpolate(grad(h)) linear; - default linear; - interpolate((thermo:rho*Cp)) linear; - interpolate((rho*rAU)) linear; - interpolate(rho) linear; - interpolate(kappa) linear; - interpolate(mag(Kappa)) linear; - interpolate((rho*HbyA)) linear; - interpolate((rho_0*U_0)) linear; + default linear; } + snGradSchemes { - default corrected; - snGrad(rho) corrected; - snGrad(p_rgh) corrected; + default corrected; } + fluxRequired { - default no; - p_rgh ; + default no; + p_rgh; } diff --git a/heat-exchanger/fluid-outer-openfoam/system/fvSolution b/heat-exchanger/fluid-outer-openfoam/system/fvSolution index 06a34475d..add05cd34 100644 --- a/heat-exchanger/fluid-outer-openfoam/system/fvSolution +++ b/heat-exchanger/fluid-outer-openfoam/system/fvSolution @@ -1,19 +1,10 @@ -/*--------------------------------*- C++ -*----------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 5 | -| \\ / A nd | Web: www.OpenFOAM.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; - location "system"; object fvSolution; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { @@ -65,12 +56,9 @@ solvers { $h; relTol 0; - } - - + } } - SIMPLE { nNonOrthogonalCorrectors 0; @@ -88,5 +76,3 @@ relaxationFactors h 0.99; } } - -// ************************************************************************* // diff --git a/multiple-perpendicular-flaps/fluid-openfoam/0/U b/multiple-perpendicular-flaps/fluid-openfoam/0/U index 9f67e7a47..bfe8f783a 100644 --- a/multiple-perpendicular-flaps/fluid-openfoam/0/U +++ b/multiple-perpendicular-flaps/fluid-openfoam/0/U @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class volVectorField; - location "0"; object U; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; @@ -46,6 +44,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/multiple-perpendicular-flaps/fluid-openfoam/0/p b/multiple-perpendicular-flaps/fluid-openfoam/0/p index ff622213b..88d18a3cf 100644 --- a/multiple-perpendicular-flaps/fluid-openfoam/0/p +++ b/multiple-perpendicular-flaps/fluid-openfoam/0/p @@ -5,7 +5,6 @@ FoamFile class volScalarField; object p; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -2 0 0 0 0]; @@ -49,5 +48,3 @@ boundaryField type empty; } } - -// ************************************************************************* // diff --git a/multiple-perpendicular-flaps/fluid-openfoam/0/phi b/multiple-perpendicular-flaps/fluid-openfoam/0/phi index 176ef2859..19af7d3fc 100644 --- a/multiple-perpendicular-flaps/fluid-openfoam/0/phi +++ b/multiple-perpendicular-flaps/fluid-openfoam/0/phi @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class surfaceScalarField; - location "0"; object phi; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 3 -1 0 0 0 0]; @@ -49,6 +47,3 @@ boundaryField value nonuniform 0; } } - - -// ************************************************************************* // diff --git a/multiple-perpendicular-flaps/fluid-openfoam/0/pointDisplacement b/multiple-perpendicular-flaps/fluid-openfoam/0/pointDisplacement index 7286c6d38..0c294a8fa 100644 --- a/multiple-perpendicular-flaps/fluid-openfoam/0/pointDisplacement +++ b/multiple-perpendicular-flaps/fluid-openfoam/0/pointDisplacement @@ -5,7 +5,6 @@ FoamFile class pointVectorField; object pointDisplacement; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 0 0 0 0 0]; @@ -52,5 +51,3 @@ boundaryField type empty; } } - -// ************************************************************************* // diff --git a/multiple-perpendicular-flaps/fluid-openfoam/constant/dynamicMeshDict b/multiple-perpendicular-flaps/fluid-openfoam/constant/dynamicMeshDict index 2d8f04445..a4c6fd577 100644 --- a/multiple-perpendicular-flaps/fluid-openfoam/constant/dynamicMeshDict +++ b/multiple-perpendicular-flaps/fluid-openfoam/constant/dynamicMeshDict @@ -3,21 +3,16 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object dynamicMeshDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +dynamicFvMesh dynamicMotionSolverFvMesh; -dynamicFvMesh dynamicMotionSolverFvMesh; +motionSolverLibs ("libfvMotionSolvers.so"); -motionSolverLibs ("libfvMotionSolvers.so"); - -solver displacementLaplacian; +solver displacementLaplacian; displacementLaplacianCoeffs { - diffusivity quadratic inverseDistance (flap1); diffusivity quadratic inverseDistance (flap2); - } diff --git a/multiple-perpendicular-flaps/fluid-openfoam/constant/transportProperties b/multiple-perpendicular-flaps/fluid-openfoam/constant/transportProperties index bc81706ca..60d9ff9a3 100644 --- a/multiple-perpendicular-flaps/fluid-openfoam/constant/transportProperties +++ b/multiple-perpendicular-flaps/fluid-openfoam/constant/transportProperties @@ -3,13 +3,9 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object transportProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // transportModel Newtonian; nu nu [ 0 2 -1 0 0 0 0 ] 1e-03; - -// ************************************************************************* // diff --git a/multiple-perpendicular-flaps/fluid-openfoam/constant/turbulenceProperties b/multiple-perpendicular-flaps/fluid-openfoam/constant/turbulenceProperties index a74ee048f..592f6d52d 100644 --- a/multiple-perpendicular-flaps/fluid-openfoam/constant/turbulenceProperties +++ b/multiple-perpendicular-flaps/fluid-openfoam/constant/turbulenceProperties @@ -3,11 +3,7 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object turbulenceProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // simulationType laminar; - -// ************************************************************************* // diff --git a/multiple-perpendicular-flaps/fluid-openfoam/system/blockMeshDict b/multiple-perpendicular-flaps/fluid-openfoam/system/blockMeshDict index c58e95294..ac238c421 100644 --- a/multiple-perpendicular-flaps/fluid-openfoam/system/blockMeshDict +++ b/multiple-perpendicular-flaps/fluid-openfoam/system/blockMeshDict @@ -5,7 +5,6 @@ FoamFile class dictionary; object blockMeshDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // scale 1.; @@ -21,6 +20,7 @@ z1 1.; z2 4.; w 0; + vertices ( ($x0 $z0 $w ) // 0 @@ -62,8 +62,6 @@ vertices ($x3 $z2 1 ) // 33 ($x4 $z2 1 ) // 34 ($x5 $z2 1 ) // 35 - - ); // Grading @@ -108,12 +106,6 @@ blocks hex ( 9 10 16 15 27 28 34 33 ) ($h2 $v2 1) simpleGrading (1 1.2 1) - - -); - -edges -( ); boundary @@ -210,5 +202,3 @@ boundary ); } ); - -// ************************************************************************* // diff --git a/multiple-perpendicular-flaps/fluid-openfoam/system/controlDict b/multiple-perpendicular-flaps/fluid-openfoam/system/controlDict index 19433cd34..2b316a90a 100644 --- a/multiple-perpendicular-flaps/fluid-openfoam/system/controlDict +++ b/multiple-perpendicular-flaps/fluid-openfoam/system/controlDict @@ -3,14 +3,10 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object controlDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// Note: With OpenFOAM v1806 and OpenFOAM 6, the DyM solvers -// were marked deprecated and merged into their respective standard solvers. -application pimpleFoam; // OpenFOAM v1806, OpenFOAM 6, or newer +application pimpleFoam; // latest OpenFOAM // application pimpleDyMFoam; // OpenFOAM v1712, OpenFOAM 5.x, or older startFrom startTime; diff --git a/multiple-perpendicular-flaps/fluid-openfoam/system/decomposeParDict b/multiple-perpendicular-flaps/fluid-openfoam/system/decomposeParDict index 32d1262d7..493cdb633 100644 --- a/multiple-perpendicular-flaps/fluid-openfoam/system/decomposeParDict +++ b/multiple-perpendicular-flaps/fluid-openfoam/system/decomposeParDict @@ -1,8 +1,8 @@ FoamFile { - version 2.0; - class dictionary; - object decomposeParDict; - format ascii; + version 2.0; + class dictionary; + object decomposeParDict; + format ascii; } numberOfSubdomains 4; diff --git a/multiple-perpendicular-flaps/fluid-openfoam/system/fvSchemes b/multiple-perpendicular-flaps/fluid-openfoam/system/fvSchemes index 812dea539..80c096192 100644 --- a/multiple-perpendicular-flaps/fluid-openfoam/system/fvSchemes +++ b/multiple-perpendicular-flaps/fluid-openfoam/system/fvSchemes @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSchemes; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { @@ -39,6 +37,3 @@ snGradSchemes { default corrected; } - - -// ************************************************************************* // diff --git a/multiple-perpendicular-flaps/fluid-openfoam/system/fvSolution b/multiple-perpendicular-flaps/fluid-openfoam/system/fvSolution index 134915d5f..064d7f372 100644 --- a/multiple-perpendicular-flaps/fluid-openfoam/system/fvSolution +++ b/multiple-perpendicular-flaps/fluid-openfoam/system/fvSolution @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSolution; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { @@ -75,7 +73,3 @@ potentialFlow { nNonOrthogonalCorrectors 10; } - - - -// ************************************************************************* // diff --git a/multiple-perpendicular-flaps/fluid-openfoam/system/preciceDict b/multiple-perpendicular-flaps/fluid-openfoam/system/preciceDict index f53de6925..d38366ad1 100644 --- a/multiple-perpendicular-flaps/fluid-openfoam/system/preciceDict +++ b/multiple-perpendicular-flaps/fluid-openfoam/system/preciceDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object preciceDict; } diff --git a/partitioned-heat-conduction/openfoam-dirichlet/0.orig/T b/partitioned-heat-conduction/openfoam-dirichlet/0.orig/T index 7c90452f2..fed3ddbc4 100644 --- a/partitioned-heat-conduction/openfoam-dirichlet/0.orig/T +++ b/partitioned-heat-conduction/openfoam-dirichlet/0.orig/T @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class volScalarField; - location "0"; object T; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 0 0 1 0 0 0]; @@ -35,5 +33,3 @@ boundaryField type empty; } } - -// ************************************************************************* // diff --git a/partitioned-heat-conduction/openfoam-dirichlet/constant/transportProperties b/partitioned-heat-conduction/openfoam-dirichlet/constant/transportProperties index 40dc0a36b..3ce99aead 100644 --- a/partitioned-heat-conduction/openfoam-dirichlet/constant/transportProperties +++ b/partitioned-heat-conduction/openfoam-dirichlet/constant/transportProperties @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object transportProperties; } diff --git a/partitioned-heat-conduction/openfoam-dirichlet/system/blockMeshDict b/partitioned-heat-conduction/openfoam-dirichlet/system/blockMeshDict index 51380417f..33357badb 100644 --- a/partitioned-heat-conduction/openfoam-dirichlet/system/blockMeshDict +++ b/partitioned-heat-conduction/openfoam-dirichlet/system/blockMeshDict @@ -25,10 +25,6 @@ blocks hex (0 1 2 3 4 5 6 7) (100 100 1) simpleGrading (1 1 1) ); -edges -( -); - boundary ( @@ -52,7 +48,3 @@ boundary ); } ); - -mergePatchPairs -( -); diff --git a/partitioned-heat-conduction/openfoam-dirichlet/system/controlDict b/partitioned-heat-conduction/openfoam-dirichlet/system/controlDict index aa247e117..31a7ba62d 100644 --- a/partitioned-heat-conduction/openfoam-dirichlet/system/controlDict +++ b/partitioned-heat-conduction/openfoam-dirichlet/system/controlDict @@ -3,12 +3,11 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object controlDict; } // Make sure you build the solver located -// in ./openfoam-solver before running +// in ../../openfoam-solver/ before running // the case application heatTransfer; diff --git a/partitioned-heat-conduction/openfoam-dirichlet/system/fvSchemes b/partitioned-heat-conduction/openfoam-dirichlet/system/fvSchemes index 528752472..6719e4491 100644 --- a/partitioned-heat-conduction/openfoam-dirichlet/system/fvSchemes +++ b/partitioned-heat-conduction/openfoam-dirichlet/system/fvSchemes @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSchemes; } diff --git a/partitioned-heat-conduction/openfoam-dirichlet/system/fvSolution b/partitioned-heat-conduction/openfoam-dirichlet/system/fvSolution index 86a2ab7f1..30a932586 100644 --- a/partitioned-heat-conduction/openfoam-dirichlet/system/fvSolution +++ b/partitioned-heat-conduction/openfoam-dirichlet/system/fvSolution @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSolution; } diff --git a/partitioned-heat-conduction/openfoam-dirichlet/system/preciceDict b/partitioned-heat-conduction/openfoam-dirichlet/system/preciceDict index 741f699d5..8ef48a201 100644 --- a/partitioned-heat-conduction/openfoam-dirichlet/system/preciceDict +++ b/partitioned-heat-conduction/openfoam-dirichlet/system/preciceDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object preciceDict; } diff --git a/partitioned-heat-conduction/openfoam-neumann/0.orig/T b/partitioned-heat-conduction/openfoam-neumann/0.orig/T index e39cfae55..01f8fc1af 100644 --- a/partitioned-heat-conduction/openfoam-neumann/0.orig/T +++ b/partitioned-heat-conduction/openfoam-neumann/0.orig/T @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class volScalarField; - location "0"; object T; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 0 0 1 0 0 0]; @@ -35,6 +33,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/partitioned-heat-conduction/openfoam-neumann/constant/transportProperties b/partitioned-heat-conduction/openfoam-neumann/constant/transportProperties index 93b06319d..3ce99aead 100644 --- a/partitioned-heat-conduction/openfoam-neumann/constant/transportProperties +++ b/partitioned-heat-conduction/openfoam-neumann/constant/transportProperties @@ -3,9 +3,7 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object transportProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // DT DT [ 0 2 -1 0 0 0 0 ] 1; diff --git a/partitioned-heat-conduction/openfoam-neumann/system/blockMeshDict b/partitioned-heat-conduction/openfoam-neumann/system/blockMeshDict index 84f36aef8..972d11103 100644 --- a/partitioned-heat-conduction/openfoam-neumann/system/blockMeshDict +++ b/partitioned-heat-conduction/openfoam-neumann/system/blockMeshDict @@ -28,10 +28,6 @@ blocks hex (0 1 2 3 4 5 6 7) (100 100 1) simpleGrading (1 1 1) ); -edges -( -); - boundary ( @@ -55,7 +51,3 @@ boundary ); } ); - -mergePatchPairs -( -); diff --git a/partitioned-heat-conduction/openfoam-neumann/system/controlDict b/partitioned-heat-conduction/openfoam-neumann/system/controlDict index aa247e117..31a7ba62d 100644 --- a/partitioned-heat-conduction/openfoam-neumann/system/controlDict +++ b/partitioned-heat-conduction/openfoam-neumann/system/controlDict @@ -3,12 +3,11 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object controlDict; } // Make sure you build the solver located -// in ./openfoam-solver before running +// in ../../openfoam-solver/ before running // the case application heatTransfer; diff --git a/partitioned-heat-conduction/openfoam-neumann/system/fvSchemes b/partitioned-heat-conduction/openfoam-neumann/system/fvSchemes index f8dfa6f00..113863ee9 100644 --- a/partitioned-heat-conduction/openfoam-neumann/system/fvSchemes +++ b/partitioned-heat-conduction/openfoam-neumann/system/fvSchemes @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSchemes; } diff --git a/partitioned-heat-conduction/openfoam-neumann/system/fvSolution b/partitioned-heat-conduction/openfoam-neumann/system/fvSolution index f75d26f20..7da9a801a 100644 --- a/partitioned-heat-conduction/openfoam-neumann/system/fvSolution +++ b/partitioned-heat-conduction/openfoam-neumann/system/fvSolution @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSolution; } diff --git a/partitioned-heat-conduction/openfoam-neumann/system/preciceDict b/partitioned-heat-conduction/openfoam-neumann/system/preciceDict index 77696c290..269196a05 100644 --- a/partitioned-heat-conduction/openfoam-neumann/system/preciceDict +++ b/partitioned-heat-conduction/openfoam-neumann/system/preciceDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object preciceDict; } diff --git a/partitioned-pipe/fluid1-openfoam-pimplefoam/0/U b/partitioned-pipe/fluid1-openfoam-pimplefoam/0/U index fd165fe4e..6e6f17645 100644 --- a/partitioned-pipe/fluid1-openfoam-pimplefoam/0/U +++ b/partitioned-pipe/fluid1-openfoam-pimplefoam/0/U @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class volVectorField; - location "0"; object U; } diff --git a/partitioned-pipe/fluid1-openfoam-pimplefoam/constant/transportProperties b/partitioned-pipe/fluid1-openfoam-pimplefoam/constant/transportProperties index c055a4bfa..f2445cbda 100644 --- a/partitioned-pipe/fluid1-openfoam-pimplefoam/constant/transportProperties +++ b/partitioned-pipe/fluid1-openfoam-pimplefoam/constant/transportProperties @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object transportProperties; } diff --git a/partitioned-pipe/fluid1-openfoam-pimplefoam/constant/turbulenceProperties b/partitioned-pipe/fluid1-openfoam-pimplefoam/constant/turbulenceProperties index 2c55a8b28..592f6d52d 100644 --- a/partitioned-pipe/fluid1-openfoam-pimplefoam/constant/turbulenceProperties +++ b/partitioned-pipe/fluid1-openfoam-pimplefoam/constant/turbulenceProperties @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object turbulenceProperties; } diff --git a/partitioned-pipe/fluid1-openfoam-pimplefoam/system/blockMeshDict b/partitioned-pipe/fluid1-openfoam-pimplefoam/system/blockMeshDict index a2b080b83..2513a3ba1 100644 --- a/partitioned-pipe/fluid1-openfoam-pimplefoam/system/blockMeshDict +++ b/partitioned-pipe/fluid1-openfoam-pimplefoam/system/blockMeshDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant/polyMesh"; object blockMeshDict; } diff --git a/partitioned-pipe/fluid1-openfoam-pimplefoam/system/controlDict b/partitioned-pipe/fluid1-openfoam-pimplefoam/system/controlDict index 839905b56..83323d140 100644 --- a/partitioned-pipe/fluid1-openfoam-pimplefoam/system/controlDict +++ b/partitioned-pipe/fluid1-openfoam-pimplefoam/system/controlDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object controlDict; } diff --git a/partitioned-pipe/fluid1-openfoam-pimplefoam/system/decomposeParDict b/partitioned-pipe/fluid1-openfoam-pimplefoam/system/decomposeParDict index ad99cf6c5..9a1361c29 100644 --- a/partitioned-pipe/fluid1-openfoam-pimplefoam/system/decomposeParDict +++ b/partitioned-pipe/fluid1-openfoam-pimplefoam/system/decomposeParDict @@ -1,8 +1,8 @@ FoamFile { - version 2.0; - class dictionary; - object decomposeParDict; - format ascii; + version 2.0; + class dictionary; + object decomposeParDict; + format ascii; } numberOfSubdomains 2; diff --git a/partitioned-pipe/fluid1-openfoam-pimplefoam/system/fvSchemes b/partitioned-pipe/fluid1-openfoam-pimplefoam/system/fvSchemes index a22010ae4..80c096192 100644 --- a/partitioned-pipe/fluid1-openfoam-pimplefoam/system/fvSchemes +++ b/partitioned-pipe/fluid1-openfoam-pimplefoam/system/fvSchemes @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSchemes; } diff --git a/partitioned-pipe/fluid1-openfoam-pimplefoam/system/preciceDict b/partitioned-pipe/fluid1-openfoam-pimplefoam/system/preciceDict index b496662d1..2e0095445 100644 --- a/partitioned-pipe/fluid1-openfoam-pimplefoam/system/preciceDict +++ b/partitioned-pipe/fluid1-openfoam-pimplefoam/system/preciceDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object preciceDict; } @@ -31,4 +30,4 @@ interfaces PressureGradient ); }; -}; \ No newline at end of file +}; diff --git a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/0/U b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/0/U index fd165fe4e..6e6f17645 100644 --- a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/0/U +++ b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/0/U @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class volVectorField; - location "0"; object U; } diff --git a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/constant/thermodynamicProperties b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/constant/thermodynamicProperties index 6bc1693b3..88e5d6353 100644 --- a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/constant/thermodynamicProperties +++ b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/constant/thermodynamicProperties @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object thermodynamicProperties; } diff --git a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/constant/transportProperties b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/constant/transportProperties index 0f39f4183..cd90b42ab 100644 --- a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/constant/transportProperties +++ b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/constant/transportProperties @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object transportProperties; } diff --git a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/constant/turbulenceProperties b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/constant/turbulenceProperties index 2c55a8b28..592f6d52d 100644 --- a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/constant/turbulenceProperties +++ b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/constant/turbulenceProperties @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object turbulenceProperties; } diff --git a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/blockMeshDict b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/blockMeshDict index a2b080b83..2513a3ba1 100644 --- a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/blockMeshDict +++ b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/blockMeshDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant/polyMesh"; object blockMeshDict; } diff --git a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/controlDict b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/controlDict index 482f4ef28..f1926eb39 100644 --- a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/controlDict +++ b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/controlDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object controlDict; } diff --git a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/fvSchemes b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/fvSchemes index edf56a6dc..6061be838 100644 --- a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/fvSchemes +++ b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/fvSchemes @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSchemes; } diff --git a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/fvSolution b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/fvSolution index 506c2ecf8..f846b32aa 100644 --- a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/fvSolution +++ b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/fvSolution @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSolution; } diff --git a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/preciceDict b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/preciceDict index b496662d1..2e0095445 100644 --- a/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/preciceDict +++ b/partitioned-pipe/fluid1-openfoam-sonicliquidfoam/system/preciceDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object preciceDict; } @@ -31,4 +30,4 @@ interfaces PressureGradient ); }; -}; \ No newline at end of file +}; diff --git a/partitioned-pipe/fluid2-openfoam-pimplefoam/0/U b/partitioned-pipe/fluid2-openfoam-pimplefoam/0/U index 94afa03ee..b3dbea82c 100644 --- a/partitioned-pipe/fluid2-openfoam-pimplefoam/0/U +++ b/partitioned-pipe/fluid2-openfoam-pimplefoam/0/U @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class volVectorField; - location "0"; object U; } diff --git a/partitioned-pipe/fluid2-openfoam-pimplefoam/constant/transportProperties b/partitioned-pipe/fluid2-openfoam-pimplefoam/constant/transportProperties index c055a4bfa..f2445cbda 100644 --- a/partitioned-pipe/fluid2-openfoam-pimplefoam/constant/transportProperties +++ b/partitioned-pipe/fluid2-openfoam-pimplefoam/constant/transportProperties @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object transportProperties; } diff --git a/partitioned-pipe/fluid2-openfoam-pimplefoam/constant/turbulenceProperties b/partitioned-pipe/fluid2-openfoam-pimplefoam/constant/turbulenceProperties index 2c55a8b28..592f6d52d 100644 --- a/partitioned-pipe/fluid2-openfoam-pimplefoam/constant/turbulenceProperties +++ b/partitioned-pipe/fluid2-openfoam-pimplefoam/constant/turbulenceProperties @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object turbulenceProperties; } diff --git a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/0/U b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/0/U index 94afa03ee..b3dbea82c 100644 --- a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/0/U +++ b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/0/U @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class volVectorField; - location "0"; object U; } diff --git a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/constant/thermodynamicProperties b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/constant/thermodynamicProperties index aa3c63f53..a8f8fd1f6 100644 --- a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/constant/thermodynamicProperties +++ b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/constant/thermodynamicProperties @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object thermodynamicProperties; } diff --git a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/constant/transportProperties b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/constant/transportProperties index 0f39f4183..cd90b42ab 100644 --- a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/constant/transportProperties +++ b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/constant/transportProperties @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object transportProperties; } diff --git a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/constant/turbulenceProperties b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/constant/turbulenceProperties index 2c55a8b28..592f6d52d 100644 --- a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/constant/turbulenceProperties +++ b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/constant/turbulenceProperties @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object turbulenceProperties; } diff --git a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/blockMeshDict b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/blockMeshDict index 56363d94b..f5f246fa0 100644 --- a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/blockMeshDict +++ b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/blockMeshDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant/polyMesh"; object blockMeshDict; } diff --git a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/controlDict b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/controlDict index 482f4ef28..f1926eb39 100644 --- a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/controlDict +++ b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/controlDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object controlDict; } diff --git a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/decomposeParDict b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/decomposeParDict index ad99cf6c5..9a1361c29 100644 --- a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/decomposeParDict +++ b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/decomposeParDict @@ -1,8 +1,8 @@ FoamFile { - version 2.0; - class dictionary; - object decomposeParDict; - format ascii; + version 2.0; + class dictionary; + object decomposeParDict; + format ascii; } numberOfSubdomains 2; diff --git a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/fvSchemes b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/fvSchemes index edf56a6dc..6061be838 100644 --- a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/fvSchemes +++ b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/fvSchemes @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSchemes; } diff --git a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/fvSolution b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/fvSolution index 506c2ecf8..f846b32aa 100644 --- a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/fvSolution +++ b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/fvSolution @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSolution; } diff --git a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/preciceDict b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/preciceDict index f17b23d93..593f7facb 100644 --- a/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/preciceDict +++ b/partitioned-pipe/fluid2-openfoam-sonicliquidfoam/system/preciceDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object preciceDict; } @@ -31,4 +30,4 @@ interfaces Pressure ); }; -}; \ No newline at end of file +}; diff --git a/perpendicular-flap/fluid-openfoam/0/U b/perpendicular-flap/fluid-openfoam/0/U index 9bfbc4ea3..5ad191331 100644 --- a/perpendicular-flap/fluid-openfoam/0/U +++ b/perpendicular-flap/fluid-openfoam/0/U @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class volVectorField; - location "0"; object U; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; @@ -41,6 +39,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/perpendicular-flap/fluid-openfoam/0/p b/perpendicular-flap/fluid-openfoam/0/p index a558fafcf..9ab45570b 100644 --- a/perpendicular-flap/fluid-openfoam/0/p +++ b/perpendicular-flap/fluid-openfoam/0/p @@ -5,7 +5,6 @@ FoamFile class volScalarField; object p; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -2 0 0 0 0]; @@ -44,5 +43,3 @@ boundaryField type empty; } } - -// ************************************************************************* // diff --git a/perpendicular-flap/fluid-openfoam/0/phi b/perpendicular-flap/fluid-openfoam/0/phi index 06c61d9c4..9221e0315 100644 --- a/perpendicular-flap/fluid-openfoam/0/phi +++ b/perpendicular-flap/fluid-openfoam/0/phi @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class surfaceScalarField; - location "0"; object phi; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 3 -1 0 0 0 0]; @@ -44,6 +42,3 @@ boundaryField value nonuniform 0; } } - - -// ************************************************************************* // diff --git a/perpendicular-flap/fluid-openfoam/0/pointDisplacement b/perpendicular-flap/fluid-openfoam/0/pointDisplacement index c107f3b65..4ac8684e8 100644 --- a/perpendicular-flap/fluid-openfoam/0/pointDisplacement +++ b/perpendicular-flap/fluid-openfoam/0/pointDisplacement @@ -5,7 +5,6 @@ FoamFile class pointVectorField; object pointDisplacement; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 0 0 0 0 0]; @@ -46,5 +45,3 @@ boundaryField type empty; } } - -// ************************************************************************* // diff --git a/perpendicular-flap/fluid-openfoam/constant/dynamicMeshDict b/perpendicular-flap/fluid-openfoam/constant/dynamicMeshDict index d323bc059..9f376bcbc 100644 --- a/perpendicular-flap/fluid-openfoam/constant/dynamicMeshDict +++ b/perpendicular-flap/fluid-openfoam/constant/dynamicMeshDict @@ -3,12 +3,9 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object dynamicMeshDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - dynamicFvMesh dynamicMotionSolverFvMesh; motionSolverLibs ("libfvMotionSolvers.so"); @@ -16,7 +13,5 @@ motionSolverLibs ("libfvMotionSolvers.so"); solver displacementLaplacian; displacementLaplacianCoeffs { - diffusivity quadratic inverseDistance (flap); - -} \ No newline at end of file +} diff --git a/perpendicular-flap/fluid-openfoam/constant/transportProperties b/perpendicular-flap/fluid-openfoam/constant/transportProperties index a323db90a..5383adaad 100644 --- a/perpendicular-flap/fluid-openfoam/constant/transportProperties +++ b/perpendicular-flap/fluid-openfoam/constant/transportProperties @@ -3,13 +3,9 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object transportProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // transportModel Newtonian; nu nu [ 0 2 -1 0 0 0 0 ] 1; - -// ************************************************************************* // diff --git a/perpendicular-flap/fluid-openfoam/constant/turbulenceProperties b/perpendicular-flap/fluid-openfoam/constant/turbulenceProperties index a74ee048f..592f6d52d 100644 --- a/perpendicular-flap/fluid-openfoam/constant/turbulenceProperties +++ b/perpendicular-flap/fluid-openfoam/constant/turbulenceProperties @@ -3,11 +3,7 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object turbulenceProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // simulationType laminar; - -// ************************************************************************* // diff --git a/perpendicular-flap/fluid-openfoam/system/blockMeshDict b/perpendicular-flap/fluid-openfoam/system/blockMeshDict index 4a4116cc3..875f42294 100644 --- a/perpendicular-flap/fluid-openfoam/system/blockMeshDict +++ b/perpendicular-flap/fluid-openfoam/system/blockMeshDict @@ -5,7 +5,6 @@ FoamFile class dictionary; object blockMeshDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // x0 -3.; x1 -0.05; @@ -77,10 +76,6 @@ blocks simpleGrading (2 2 1) ); -edges -( -); - boundary ( inlet @@ -148,5 +143,3 @@ boundary ); } ); - -// ************************************************************************* // diff --git a/perpendicular-flap/fluid-openfoam/system/controlDict b/perpendicular-flap/fluid-openfoam/system/controlDict index 19433cd34..2b316a90a 100644 --- a/perpendicular-flap/fluid-openfoam/system/controlDict +++ b/perpendicular-flap/fluid-openfoam/system/controlDict @@ -3,14 +3,10 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object controlDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// Note: With OpenFOAM v1806 and OpenFOAM 6, the DyM solvers -// were marked deprecated and merged into their respective standard solvers. -application pimpleFoam; // OpenFOAM v1806, OpenFOAM 6, or newer +application pimpleFoam; // latest OpenFOAM // application pimpleDyMFoam; // OpenFOAM v1712, OpenFOAM 5.x, or older startFrom startTime; diff --git a/perpendicular-flap/fluid-openfoam/system/decomposeParDict b/perpendicular-flap/fluid-openfoam/system/decomposeParDict index 32d1262d7..31d721d1d 100644 --- a/perpendicular-flap/fluid-openfoam/system/decomposeParDict +++ b/perpendicular-flap/fluid-openfoam/system/decomposeParDict @@ -1,8 +1,8 @@ FoamFile { - version 2.0; - class dictionary; - object decomposeParDict; - format ascii; + version 2.0; + class dictionary; + object decomposeParDict; + format ascii; } numberOfSubdomains 4; diff --git a/perpendicular-flap/fluid-openfoam/system/fvSchemes b/perpendicular-flap/fluid-openfoam/system/fvSchemes index 812dea539..80c096192 100644 --- a/perpendicular-flap/fluid-openfoam/system/fvSchemes +++ b/perpendicular-flap/fluid-openfoam/system/fvSchemes @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSchemes; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { @@ -39,6 +37,3 @@ snGradSchemes { default corrected; } - - -// ************************************************************************* // diff --git a/perpendicular-flap/fluid-openfoam/system/fvSolution b/perpendicular-flap/fluid-openfoam/system/fvSolution index 134915d5f..064d7f372 100644 --- a/perpendicular-flap/fluid-openfoam/system/fvSolution +++ b/perpendicular-flap/fluid-openfoam/system/fvSolution @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSolution; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { @@ -75,7 +73,3 @@ potentialFlow { nNonOrthogonalCorrectors 10; } - - - -// ************************************************************************* // diff --git a/perpendicular-flap/fluid-openfoam/system/preciceDict b/perpendicular-flap/fluid-openfoam/system/preciceDict index 92d739318..1196109c3 100644 --- a/perpendicular-flap/fluid-openfoam/system/preciceDict +++ b/perpendicular-flap/fluid-openfoam/system/preciceDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object preciceDict; } diff --git a/quickstart/fluid-openfoam/0/U b/quickstart/fluid-openfoam/0/U index 69dfcf932..ebf7eb904 100644 --- a/quickstart/fluid-openfoam/0/U +++ b/quickstart/fluid-openfoam/0/U @@ -5,7 +5,6 @@ FoamFile class volVectorField; object U; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; @@ -32,8 +31,8 @@ boundaryField inlet { - type fixedValue; - value uniform (1 0 0); + type fixedValue; + value uniform (1 0 0); } outlet @@ -50,5 +49,3 @@ boundaryField type empty; } } - -// ************************************************************************* // diff --git a/quickstart/fluid-openfoam/0/p b/quickstart/fluid-openfoam/0/p index 90e9358f4..9bf453010 100644 --- a/quickstart/fluid-openfoam/0/p +++ b/quickstart/fluid-openfoam/0/p @@ -5,7 +5,6 @@ FoamFile class volScalarField; object p; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -2 0 0 0 0]; @@ -48,5 +47,3 @@ boundaryField type empty; } } - -// ************************************************************************* // diff --git a/quickstart/fluid-openfoam/0/pointDisplacement b/quickstart/fluid-openfoam/0/pointDisplacement index e12eaa933..2589eba98 100644 --- a/quickstart/fluid-openfoam/0/pointDisplacement +++ b/quickstart/fluid-openfoam/0/pointDisplacement @@ -5,7 +5,6 @@ FoamFile class pointVectorField; object pointDisplacement; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 0 0 0 0 0]; @@ -49,5 +48,3 @@ boundaryField type empty; } } - -// ************************************************************************* // diff --git a/quickstart/fluid-openfoam/constant/dynamicMeshDict b/quickstart/fluid-openfoam/constant/dynamicMeshDict index d323bc059..ea033c8ce 100644 --- a/quickstart/fluid-openfoam/constant/dynamicMeshDict +++ b/quickstart/fluid-openfoam/constant/dynamicMeshDict @@ -3,11 +3,9 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object dynamicMeshDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dynamicFvMesh dynamicMotionSolverFvMesh; @@ -16,7 +14,5 @@ motionSolverLibs ("libfvMotionSolvers.so"); solver displacementLaplacian; displacementLaplacianCoeffs { - diffusivity quadratic inverseDistance (flap); - -} \ No newline at end of file +} diff --git a/quickstart/fluid-openfoam/constant/transportProperties b/quickstart/fluid-openfoam/constant/transportProperties index 870a0bb1c..374372283 100644 --- a/quickstart/fluid-openfoam/constant/transportProperties +++ b/quickstart/fluid-openfoam/constant/transportProperties @@ -1,12 +1,10 @@ FoamFile { - version 2.0; - format ascii; - class dictionary; - location constant; - object transportProperties; + version 2.0; + format ascii; + class dictionary; + object transportProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // transportModel Newtonian; diff --git a/quickstart/fluid-openfoam/constant/turbulenceProperties b/quickstart/fluid-openfoam/constant/turbulenceProperties index f906d4153..246999591 100644 --- a/quickstart/fluid-openfoam/constant/turbulenceProperties +++ b/quickstart/fluid-openfoam/constant/turbulenceProperties @@ -3,9 +3,7 @@ FoamFile version 2.0; format ascii; class dictionary; - location constant; object turbulenceProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // simulationType laminar; diff --git a/quickstart/fluid-openfoam/system/blockMeshDict b/quickstart/fluid-openfoam/system/blockMeshDict index c8a955624..a57ae0086 100644 --- a/quickstart/fluid-openfoam/system/blockMeshDict +++ b/quickstart/fluid-openfoam/system/blockMeshDict @@ -5,7 +5,6 @@ FoamFile class dictionary; object blockMeshDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // scale 1; @@ -195,5 +194,3 @@ boundary ); } ); - -// ************************************************************************* // diff --git a/quickstart/fluid-openfoam/system/controlDict b/quickstart/fluid-openfoam/system/controlDict index 8a241d19b..f3d163f74 100644 --- a/quickstart/fluid-openfoam/system/controlDict +++ b/quickstart/fluid-openfoam/system/controlDict @@ -3,15 +3,11 @@ FoamFile version 2.0; format ascii; class dictionary; - location system; object controlDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// Note: With OpenFOAM v1806 and OpenFOAM 6, the DyM solvers -// were marked deprecated and merged into their respective standard solvers. -application pimpleFoam; // OpenFOAM v1806, OpenFOAM 6, or newer -// application pimpleDyMFoam; // OpenFOAM v1712, OpenFOAM 5.x, or older +application pimpleFoam; // latest OpenFOAM +// application pimpleDyMFoam; // OpenFOAM v1712, OpenFOAM 5.x, or older startFrom startTime; diff --git a/quickstart/fluid-openfoam/system/decomposeParDict b/quickstart/fluid-openfoam/system/decomposeParDict index dee82bfd0..4a61fe0df 100644 --- a/quickstart/fluid-openfoam/system/decomposeParDict +++ b/quickstart/fluid-openfoam/system/decomposeParDict @@ -1,25 +1,24 @@ FoamFile { - version 2.0; - format ascii; - class dictionary; - location system; - object decomposeParDict; + version 2.0; + format ascii; + class dictionary; + location system; + object decomposeParDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - numberOfSubdomains 2; - - method hierarchical; - hierarchicalCoeffs - { - n (2 1 1); - delta 0.001; - order xyz; - } - - distributed false; - roots - ( - ); +numberOfSubdomains 2; + +method hierarchical; +hierarchicalCoeffs +{ + n (2 1 1); + delta 0.001; + order xyz; +} + +distributed false; +roots +( +); diff --git a/quickstart/fluid-openfoam/system/fvSchemes b/quickstart/fluid-openfoam/system/fvSchemes index c784ff608..2035cd05c 100644 --- a/quickstart/fluid-openfoam/system/fvSchemes +++ b/quickstart/fluid-openfoam/system/fvSchemes @@ -6,36 +6,35 @@ FoamFile location "system"; object fvSchemes; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - ddtSchemes - { - default backward; - } +ddtSchemes +{ + default backward; +} - gradSchemes - { - default cellLimited Gauss linear 1; - } +gradSchemes +{ + default cellLimited Gauss linear 1; +} - divSchemes - { - default none; - div(phi,U) Gauss linearUpwind grad(U); - div((nuEff*dev2(T(grad(U))))) Gauss linear; - } +divSchemes +{ + default none; + div(phi,U) Gauss linearUpwind grad(U); + div((nuEff*dev2(T(grad(U))))) Gauss linear; +} - interpolationSchemes - { - default linear; - } +interpolationSchemes +{ + default linear; +} - laplacianSchemes - { - default Gauss linear corrected; - } +laplacianSchemes +{ + default Gauss linear corrected; +} - snGradSchemes - { - default corrected; - } +snGradSchemes +{ + default corrected; +} diff --git a/quickstart/fluid-openfoam/system/fvSolution b/quickstart/fluid-openfoam/system/fvSolution index 5592bdf82..813288c04 100644 --- a/quickstart/fluid-openfoam/system/fvSolution +++ b/quickstart/fluid-openfoam/system/fvSolution @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSolution; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { @@ -80,6 +78,3 @@ potentialFlow { nNonOrthogonalCorrectors 1; } - - -// ************************************************************************* // diff --git a/turek-hron-fsi3/fluid-openfoam/0/U b/turek-hron-fsi3/fluid-openfoam/0/U index c194d2abe..298a0809e 100644 --- a/turek-hron-fsi3/fluid-openfoam/0/U +++ b/turek-hron-fsi3/fluid-openfoam/0/U @@ -5,7 +5,6 @@ FoamFile class volVectorField; object U; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; @@ -58,5 +57,3 @@ boundaryField type empty; } } - -// ************************************************************************* // diff --git a/turek-hron-fsi3/fluid-openfoam/0/p b/turek-hron-fsi3/fluid-openfoam/0/p index 52e0fdef3..2ea7217ec 100644 --- a/turek-hron-fsi3/fluid-openfoam/0/p +++ b/turek-hron-fsi3/fluid-openfoam/0/p @@ -5,7 +5,6 @@ FoamFile class volScalarField; object p; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -2 0 0 0 0]; @@ -53,5 +52,3 @@ boundaryField type empty; } } - -// ************************************************************************* // diff --git a/turek-hron-fsi3/fluid-openfoam/0/pointDisplacement b/turek-hron-fsi3/fluid-openfoam/0/pointDisplacement index f4644920d..ed27a7b33 100644 --- a/turek-hron-fsi3/fluid-openfoam/0/pointDisplacement +++ b/turek-hron-fsi3/fluid-openfoam/0/pointDisplacement @@ -5,7 +5,6 @@ FoamFile class pointVectorField; object pointDisplacement; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 0 0 0 0 0]; @@ -54,5 +53,3 @@ boundaryField type empty; } } - -// ************************************************************************* // diff --git a/turek-hron-fsi3/fluid-openfoam/0/vorticity b/turek-hron-fsi3/fluid-openfoam/0/vorticity index fac7fdf61..38b07dc09 100644 --- a/turek-hron-fsi3/fluid-openfoam/0/vorticity +++ b/turek-hron-fsi3/fluid-openfoam/0/vorticity @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class volVectorField; - location "0"; object vorticity; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 0 -1 0 0 0 0]; @@ -59,6 +57,3 @@ boundaryField type empty; } } - - -// ************************************************************************* // diff --git a/turek-hron-fsi3/fluid-openfoam/constant/dynamicMeshDict b/turek-hron-fsi3/fluid-openfoam/constant/dynamicMeshDict index d323bc059..4c29a8391 100644 --- a/turek-hron-fsi3/fluid-openfoam/constant/dynamicMeshDict +++ b/turek-hron-fsi3/fluid-openfoam/constant/dynamicMeshDict @@ -3,20 +3,15 @@ FoamFile version 2.0; format ascii; class dictionary; - location "constant"; object dynamicMeshDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -dynamicFvMesh dynamicMotionSolverFvMesh; +dynamicFvMesh dynamicMotionSolverFvMesh; motionSolverLibs ("libfvMotionSolvers.so"); -solver displacementLaplacian; +solver displacementLaplacian; displacementLaplacianCoeffs { - diffusivity quadratic inverseDistance (flap); - -} \ No newline at end of file +} diff --git a/turek-hron-fsi3/fluid-openfoam/constant/transportProperties b/turek-hron-fsi3/fluid-openfoam/constant/transportProperties index 870a0bb1c..ff8f5e907 100644 --- a/turek-hron-fsi3/fluid-openfoam/constant/transportProperties +++ b/turek-hron-fsi3/fluid-openfoam/constant/transportProperties @@ -3,12 +3,11 @@ FoamFile version 2.0; format ascii; class dictionary; - location constant; object transportProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - transportModel Newtonian; +transportModel Newtonian; - nu nu [0 2 -1 0 0 0 0 ] 0.001; - pRef pRef [1 -1 -2 0 0 0 0 ] 0.0; +nu nu [0 2 -1 0 0 0 0 ] 0.001; + +pRef pRef [1 -1 -2 0 0 0 0 ] 0.0; diff --git a/turek-hron-fsi3/fluid-openfoam/constant/turbulenceProperties b/turek-hron-fsi3/fluid-openfoam/constant/turbulenceProperties index f906d4153..246999591 100644 --- a/turek-hron-fsi3/fluid-openfoam/constant/turbulenceProperties +++ b/turek-hron-fsi3/fluid-openfoam/constant/turbulenceProperties @@ -3,9 +3,7 @@ FoamFile version 2.0; format ascii; class dictionary; - location constant; object turbulenceProperties; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // simulationType laminar; diff --git a/turek-hron-fsi3/fluid-openfoam/system/blockMeshDict b/turek-hron-fsi3/fluid-openfoam/system/blockMeshDict index c97b97f4f..a51763df9 100644 --- a/turek-hron-fsi3/fluid-openfoam/system/blockMeshDict +++ b/turek-hron-fsi3/fluid-openfoam/system/blockMeshDict @@ -5,7 +5,6 @@ FoamFile class dictionary; object blockMeshDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // f -0.1; // z-front b 0.1; // z-back @@ -334,10 +333,3 @@ boundary ); } ); - -mergePatchPairs -( -); - - -// ************************************************************************* // diff --git a/turek-hron-fsi3/fluid-openfoam/system/blockMeshDict_double_refined b/turek-hron-fsi3/fluid-openfoam/system/blockMeshDict_double_refined index 95769ff3e..1050699d4 100644 --- a/turek-hron-fsi3/fluid-openfoam/system/blockMeshDict_double_refined +++ b/turek-hron-fsi3/fluid-openfoam/system/blockMeshDict_double_refined @@ -5,7 +5,6 @@ FoamFile class dictionary; object blockMeshDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Geometry parameters f -0.1; // z-front @@ -335,10 +334,3 @@ boundary ); } ); - -mergePatchPairs -( -); - - -// ************************************************************************* // diff --git a/turek-hron-fsi3/fluid-openfoam/system/blockMeshDict_refined b/turek-hron-fsi3/fluid-openfoam/system/blockMeshDict_refined index 984148a8e..af1315588 100644 --- a/turek-hron-fsi3/fluid-openfoam/system/blockMeshDict_refined +++ b/turek-hron-fsi3/fluid-openfoam/system/blockMeshDict_refined @@ -5,7 +5,6 @@ FoamFile class dictionary; object blockMeshDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Geometry parameters f -0.1; // z-front @@ -335,10 +334,3 @@ boundary ); } ); - -mergePatchPairs -( -); - - -// ************************************************************************* // diff --git a/turek-hron-fsi3/fluid-openfoam/system/controlDict b/turek-hron-fsi3/fluid-openfoam/system/controlDict index 9ee3e3816..8be725212 100644 --- a/turek-hron-fsi3/fluid-openfoam/system/controlDict +++ b/turek-hron-fsi3/fluid-openfoam/system/controlDict @@ -3,15 +3,11 @@ FoamFile version 2.0; format ascii; class dictionary; - location system; object controlDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -// Note: With OpenFOAM v1806 and OpenFOAM 6, the DyM solvers -// were marked deprecated and merged into their respective standard solvers. -application pimpleFoam; // OpenFOAM v1806, OpenFOAM 6, or newer -// application pimpleDyMFoam; // OpenFOAM v1712, OpenFOAM 5.x, or older +application pimpleFoam; // latest OpenFOAM +// application pimpleDyMFoam; // OpenFOAM v1712, OpenFOAM 5.x, or older libs ( "libgroovyBC.so" ) ; diff --git a/turek-hron-fsi3/fluid-openfoam/system/decomposeParDict b/turek-hron-fsi3/fluid-openfoam/system/decomposeParDict index 59d2ad529..a9e847699 100644 --- a/turek-hron-fsi3/fluid-openfoam/system/decomposeParDict +++ b/turek-hron-fsi3/fluid-openfoam/system/decomposeParDict @@ -1,25 +1,23 @@ FoamFile { - version 2.0; - format ascii; - class dictionary; - location system; - object decomposeParDict; + version 2.0; + format ascii; + class dictionary; + object decomposeParDict; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - numberOfSubdomains 25; - - method hierarchical; - hierarchicalCoeffs - { - n (5 5 1); - delta 0.001; - order xyz; - } - - distributed false; - roots - ( - ); +numberOfSubdomains 25; + +method hierarchical; +hierarchicalCoeffs +{ + n (5 5 1); + delta 0.001; + order xyz; +} + +distributed false; +roots +( +); diff --git a/turek-hron-fsi3/fluid-openfoam/system/fvSchemes b/turek-hron-fsi3/fluid-openfoam/system/fvSchemes index d95144988..dac95a86b 100644 --- a/turek-hron-fsi3/fluid-openfoam/system/fvSchemes +++ b/turek-hron-fsi3/fluid-openfoam/system/fvSchemes @@ -3,39 +3,37 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSchemes; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - ddtSchemes - { - default backward; - } +ddtSchemes +{ + default backward; +} - gradSchemes - { - default cellLimited Gauss linear 1; - } +gradSchemes +{ + default cellLimited Gauss linear 1; +} - divSchemes - { - default none; - div(phi,U) Gauss linearUpwind grad(U); - div((nuEff*dev2(T(grad(U))))) Gauss linear; - } +divSchemes +{ + default none; + div(phi,U) Gauss linearUpwind grad(U); + div((nuEff*dev2(T(grad(U))))) Gauss linear; +} - interpolationSchemes - { - default linear; - } +interpolationSchemes +{ + default linear; +} - laplacianSchemes - { - default Gauss linear corrected; - } +laplacianSchemes +{ + default Gauss linear corrected; +} - snGradSchemes - { - default corrected; - } +snGradSchemes +{ + default corrected; +} diff --git a/turek-hron-fsi3/fluid-openfoam/system/fvSolution b/turek-hron-fsi3/fluid-openfoam/system/fvSolution index 143b71db3..2e9545709 100644 --- a/turek-hron-fsi3/fluid-openfoam/system/fvSolution +++ b/turek-hron-fsi3/fluid-openfoam/system/fvSolution @@ -3,10 +3,8 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object fvSolution; } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { @@ -106,6 +104,3 @@ potentialFlow { nNonOrthogonalCorrectors 1; } - - -// ************************************************************************* // diff --git a/turek-hron-fsi3/fluid-openfoam/system/preciceDict b/turek-hron-fsi3/fluid-openfoam/system/preciceDict index 2b2f761ed..872566d38 100644 --- a/turek-hron-fsi3/fluid-openfoam/system/preciceDict +++ b/turek-hron-fsi3/fluid-openfoam/system/preciceDict @@ -3,7 +3,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object preciceDict; } From 29f27ec94c31aa3843638bab4426757b43dc24cd Mon Sep 17 00:00:00 2001 From: Ishaan Desai Date: Mon, 7 Feb 2022 16:28:47 +0100 Subject: [PATCH 52/55] Add FEniCS as a solid participant for elastic-tube-3d (#222) * Initial case setup * Defining correct cylinder mesh * Rectifying autopep8 violation * Changing conditions to filter boudary nodes * Removing debugging statements * Correct fixed boundary filtering condition Co-authored-by: Benjamin Rodenberg * Simplifying fixed boundary filter condition * Port CalculiX configuration * Updating README and adding watchpoint in config xml * Reverting to DisplacementDelta data exchange and testing new implementation in FEniCS * Add script for plotting watchpoints. * Plot correct data and all three dimensions. * Minor corrections * Adding displacement plot to README * Markdown stuff and renaming output folder * Correct image name Co-authored-by: Benjamin Rodenberg --- elastic-tube-3d/README.md | 8 +- .../images/tutorials-elastic-tube-3d-plot.png | Bin 0 -> 85433 bytes elastic-tube-3d/plot-all-displacements.sh | 16 ++ elastic-tube-3d/precice-config.xml | 1 + elastic-tube-3d/solid-fenics/clean.sh | 6 + .../precice-adapter-config-fsi-s.json | 9 + elastic-tube-3d/solid-fenics/run.sh | 4 + elastic-tube-3d/solid-fenics/solid.py | 226 ++++++++++++++++++ 8 files changed, 269 insertions(+), 1 deletion(-) create mode 100644 elastic-tube-3d/images/tutorials-elastic-tube-3d-plot.png create mode 100755 elastic-tube-3d/plot-all-displacements.sh create mode 100755 elastic-tube-3d/solid-fenics/clean.sh create mode 100644 elastic-tube-3d/solid-fenics/precice-adapter-config-fsi-s.json create mode 100755 elastic-tube-3d/solid-fenics/run.sh create mode 100644 elastic-tube-3d/solid-fenics/solid.py diff --git a/elastic-tube-3d/README.md b/elastic-tube-3d/README.md index f471fef3d..0497decbf 100644 --- a/elastic-tube-3d/README.md +++ b/elastic-tube-3d/README.md @@ -1,7 +1,7 @@ --- title: Elastic tube 3D permalink: tutorials-elastic-tube-3d.html -keywords: FSI, OpenFOAM, CalculiX, nearest-projection, IMVJ +keywords: FSI, OpenFOAM, CalculiX, FEniCS, nearest-projection, IMVJ summary: Tutorial for an FSI simulation of a three-dimensional expanding tube scenario --- @@ -25,6 +25,8 @@ Solid participant: * CalculiX. For more information, have a look at the [CalculiX adapter documentation](https://www.precice.org/adapter-calculix-overview.html). +* FEniCS. The structural model is currently limited to linear elasticity. Currently 3D functionality is experimental in the FEniCS adapter and more details can be found [here](https://github.com/precice/fenics-adapter/pull/133) For more information, have a look at the [FeniCS adapter documentation](https://www.precice.org/adapter-fenics.html). + ## Running the simulation You can start the simulation by running the script `./run.sh` located in each participant directory. OpenFOAM can be executed in parallel using `run.sh -parallel`. The default setting uses 4 MPI ranks. @@ -35,6 +37,10 @@ You can visualize the results using paraView or `cgx`(for native CalculiX resul ![result tube](images/tutorials-elastic-tube-3d-tube-result.png) +You can also plot the displacement of the midpoint of the tube by running `sh plot-displacement.sh `. The displacement plot for each solver combination looks like: + +![plot tube](images/tutorials-elastic-tube-3d-plot.png) + {% disclaimer %} This offering is not approved or endorsed by OpenCFD Limited, producer and distributor of the OpenFOAM software via www.openfoam.com, and owner of the OPENFOAM® and OpenCFD® trade marks. {% enddisclaimer %} diff --git a/elastic-tube-3d/images/tutorials-elastic-tube-3d-plot.png b/elastic-tube-3d/images/tutorials-elastic-tube-3d-plot.png new file mode 100644 index 0000000000000000000000000000000000000000..3eae44a0f7a5bd445300e7d25ca37200c4156f6e GIT binary patch literal 85433 zcmdSBbySt@)-Q}jiIjjeA`;R{DXEKYkQ5N4LAo1Mx$s9`yQ=U24_BAW1 z-fuYhezm}_Jr{RFL&B-wMy{hdrysXI&+*P}J+hg$inWRLv?|rO3KxQe^omZ*kNe_Z zNUZix4Dl}h>4#w}a_QoyO^^To`K=n4_TJv!krA>pQha=B78ZdzWZ$o0@(H=QtTZ$R zLh9o=xlUUKH*N&SFWYup^>CP0_&Qcdqe*woZSckkXt4q4~aqmHd7URu;h zFP2~ZqQhobTwH8uXh;ar!NUf;n)~ziSLinrnDn=xv z@35YJ5gaDJhpXJwd*qSAh)!s~Pc?>)Rk(m-T61P% zB0eceD6w;Sd09e2!cWN&X=Y|-cXyYa*sLo_JVho3f%-KmiIot8JBHt3bvQ*f4t-2f zT-?8~kYlvx^%azLB}z)la)&i@W8)fDjM`kZn=}~gjqd8$aucT~M{x1h*4EQ+52bw@ zA7kOQ_m{moUteCYP$J6rad8$VCX$Jrc=-4Nhx3UjSmfg~r>Cdz=BSj{uV2TgMIaE4 zoTQyo113`p%9$VU>mrv%g@=cyq|la5&$dM?D=Sx?CSlCyA|X9qD?zGILBD?eKE~Gi zdWqx4o$%(K&d$!B9*q)9$}0Q5?B{SD`*TEW1|OrM3=9pms@?f`c#g)-PWQ$<&VqB` zPs78)?z6KW&qQjeGX93|vQSZlfByV)tm$BDuGn~i*O4Z`(NIAUQhYueB`+Zp0Jq8A<%Woqi zx!BoxEyurqVl#w~Kub-HPfl)bXy`Cmhei{g79T$`J$+YC0S~=?c(@`pb-q6E)|mSd z6Jq{{_jL{C;=DYosfJ)%?#iA4vr>7?s%lk}RJS{odr*)lUG}ALpDzr9bLS;zZq6*9 z?|$NZ7B5jJr$>m?{Cr%k&wMULA3i9ntCM)NmD zUAJOMkIY_IUnYMlBZFDh-`!pNg4OTs)s$M@$0z|u?Q1gYX?Gl%WEHLi479W?dSdZ^ zZ>MICR99DLU}CC->vYXaO+}?t)YKeZDjLS&k3A0F8zK@${hE?;)1ytVtgzDoKFTUb~e z)6S4B6C<&Ti1|Y=LH+^rGNpUhN-V($SpWK0df6 z_;`4JtCtaC!ot@mx0eSB#KURANYJpb1Z?N!Y;C^<2j7U1u`o5YwX~dHUKT>lQ)R^T zP0Y$_t6rL&HQPc@dOoO;#QI1+^r2G%@bci#v}uOsV%3i8}n*zkGbgs4Ods)ov?BOiaADHnzs_ zL>psjgOm;y`}p=$LnuWkw)5^XQH%`5!t*Og4XEeE+8^G=8)0m2PIHTsgJXwVE3v3( zH;hUY8?m=Kaqiph)XeIR|1IE zIDYr_ggpO85dZpgqaG^M9j|YNg<}IM zXh_&DtWsE`w1hs-o;{nHo4ZNP!NCzq&WBsk3&)i3)-BO^Imd=2+0PH3xc+Kt>gehD z{Lt!7>E*~)GYbpaGaY`X&AS_)5b-~wI2fp?;9dk9hAPtcHaDl0lÐ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 + diff --git a/elastic-tube-3d/solid-fenics/clean.sh b/elastic-tube-3d/solid-fenics/clean.sh new file mode 100755 index 000000000..3a8b4619d --- /dev/null +++ b/elastic-tube-3d/solid-fenics/clean.sh @@ -0,0 +1,6 @@ +#!/bin/sh +set -e -u + +. ../../tools/cleaning-tools.sh + +clean_fenics . diff --git a/elastic-tube-3d/solid-fenics/precice-adapter-config-fsi-s.json b/elastic-tube-3d/solid-fenics/precice-adapter-config-fsi-s.json new file mode 100644 index 000000000..9acb11985 --- /dev/null +++ b/elastic-tube-3d/solid-fenics/precice-adapter-config-fsi-s.json @@ -0,0 +1,9 @@ +{ + "participant_name": "Solid", + "config_file_name": "../precice-config.xml", + "interface": { + "coupling_mesh_name": "Solid-Mesh", + "write_data_name": "DisplacementDelta", + "read_data_name": "Force" + } +} diff --git a/elastic-tube-3d/solid-fenics/run.sh b/elastic-tube-3d/solid-fenics/run.sh new file mode 100755 index 000000000..15315c67d --- /dev/null +++ b/elastic-tube-3d/solid-fenics/run.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -e -u + +python3 solid.py diff --git a/elastic-tube-3d/solid-fenics/solid.py b/elastic-tube-3d/solid-fenics/solid.py new file mode 100644 index 000000000..3fed84945 --- /dev/null +++ b/elastic-tube-3d/solid-fenics/solid.py @@ -0,0 +1,226 @@ +# Import required libs +from fenics import Constant, Function, AutoSubDomain, VectorFunctionSpace, interpolate, \ + TrialFunction, TestFunction, Point, Expression, DirichletBC, nabla_grad, \ + Identity, inner, dx, ds, sym, grad, lhs, rhs, dot, File, solve, assemble_system +from mshr import Cylinder, generate_mesh +from ufl import nabla_div +import numpy as np +from fenicsprecice import Adapter +import math + + +# define the two kinds of boundary: clamped and coupling Neumann Boundary +def clamped_boundary(x, on_boundary): + """ + Filter nodes at both ends of tube as they are fixed + """ + tol = 1E-14 + return on_boundary and (((abs(x[2]) - 0.0) < tol) or ((L - abs(x[2])) < tol)) + + +def neumann_boundary(x, on_boundary): + """ + Filter nodes which lie on the inner surface of the tube and excluding end nodes + """ + tol = 1E-14 + return on_boundary and ((math.sqrt(x[0]**2 + x[1]**2) - R) < tol) and ((L - x[2]) > tol) and ((x[2] - 0.0) > tol) + + +# Geometry and material properties +dim = 3 # number of dimensions +R = 0.005 +L = 0.05 +rho = 3000 +E = 4000000 +nu = 0.3 + +mu = Constant(E / (2.0 * (1.0 + nu))) + +lambda_ = Constant(E * nu / ((1.0 + nu) * (1.0 - 2.0 * nu))) + +# create Mesh +outer_tube = Cylinder(Point(0, 0, L), Point(0, 0, 0), R + 0.001, R + 0.001) +inner_tube = Cylinder(Point(0, 0, L), Point(0, 0, 0), R, R) +mesh = generate_mesh(outer_tube - inner_tube, 20) + +# create Function Space +V = VectorFunctionSpace(mesh, 'P', 2) + +# Trial and Test Functions +du = TrialFunction(V) +v = TestFunction(V) + +u_np1 = Function(V) +saved_u_old = Function(V) +u_delta = Function(V) + +# function known from previous timestep +u_n = Function(V) +v_n = Function(V) +a_n = Function(V) + +coupling_boundary = AutoSubDomain(neumann_boundary) +fixed_boundary = AutoSubDomain(clamped_boundary) + +precice = Adapter(adapter_config_filename="precice-adapter-config-fsi-s.json") + +# Initialize the coupling interface +precice_dt = precice.initialize(coupling_boundary, read_function_space=V, write_object=V, fixed_boundary=fixed_boundary) + +fenics_dt = precice_dt # if fenics_dt == precice_dt, no subcycling is applied +dt = Constant(np.min([precice_dt, fenics_dt])) + +# clamp the tube on both sides +bc = DirichletBC(V, Constant((0, 0, 0)), fixed_boundary) + +# alpha method parameters +alpha_m = Constant(0) +alpha_f = Constant(0) +gamma = Constant(0.5 + alpha_f - alpha_m) +beta = Constant((gamma + 0.5) ** 2 / 4.) + + +# Define strain +def epsilon(u): + return 0.5 * (nabla_grad(u) + nabla_grad(u).T) + + +# Define Stress tensor +def sigma(u): + return lambda_ * nabla_div(u) * Identity(dim) + 2 * mu * epsilon(u) + + +# Define Mass form +def m(u, v): + return rho * inner(u, v) * dx + + +# Elastic stiffness form +def k(u, v): + return inner(sigma(u), sym(grad(v))) * dx + + +# External Work +def Wext(u_): + return dot(u_, p) * ds + + +# Functions for updating system state + +# Update acceleration +def update_a(u, u_old, v_old, a_old, ufl=True): + if ufl: + dt_ = dt + beta_ = beta + else: + dt_ = float(dt) + beta_ = float(beta) + + return ((u - u_old - dt_ * v_old) / beta / dt_ ** 2 + - (1 - 2 * beta_) / 2 / beta_ * a_old) + + +# Update velocity +def update_v(a, u_old, v_old, a_old, ufl=True): + if ufl: + dt_ = dt + gamma_ = gamma + else: + dt_ = float(dt) + gamma_ = float(gamma) + + return v_old + dt_ * ((1 - gamma_) * a_old + gamma_ * a) + + +def update_fields(u, u_old, v_old, a_old): + """Update all fields at the end of a timestep.""" + + u_vec, u0_vec = u.vector(), u_old.vector() + v0_vec, a0_vec = v_old.vector(), a_old.vector() + + # call update functions + a_vec = update_a(u_vec, u0_vec, v0_vec, a0_vec, ufl=False) + v_vec = update_v(a_vec, u0_vec, v0_vec, a0_vec, ufl=False) + + # assign u->u_old + v_old.vector()[:], a_old.vector()[:] = v_vec, a_vec + u_old.vector()[:] = u.vector() + + +def avg(x_old, x_new, alpha): + return alpha * x_old + (1 - alpha) * x_new + + +a_np1 = update_a(du, u_n, v_n, a_n, ufl=True) +v_np1 = update_v(a_np1, u_n, v_n, a_n, ufl=True) + +res = m(avg(a_n, a_np1, alpha_m), v) + k(avg(u_n, du, alpha_f), v) + +a_form = lhs(res) +L_form = rhs(res) + +# parameters for Time-Stepping +t = 0.0 +n = 0 +E_ext = 0 + +displacement_out = File("output/u_fsi.pvd") + +u_n.rename("Displacement", "") +u_np1.rename("Displacement", "") +displacement_out << u_n + +while precice.is_coupling_ongoing(): + + if precice.is_action_required(precice.action_write_iteration_checkpoint()): # write checkpoint + precice.store_checkpoint(u_n, t, n) + + # read data from preCICE and get a new coupling expression + read_data = precice.read_data() + + # Update the point sources on the coupling boundary with the new read data + forces_x, forces_y, forces_z = precice.get_point_sources(read_data) + + A, b = assemble_system(a_form, L_form, bc) + + b_forces = b.copy() # b is the same for every iteration, only forces change + + for ps in forces_x: + ps.apply(b_forces) + for ps in forces_y: + ps.apply(b_forces) + for ps in forces_z: + ps.apply(b_forces) + + assert (b is not b_forces) + solve(A, u_np1.vector(), b_forces) + + dt = Constant(np.min([precice_dt, fenics_dt])) + + # Write relative displacements to preCICE + u_delta.vector()[:] = u_np1.vector()[:] - u_n.vector()[:] + precice.write_data(u_delta) + + # Call to advance coupling, also returns the optimum time step value + precice_dt = precice.advance(dt(0)) + + # Either revert to old step if timestep has not converged or move to next timestep + if precice.is_action_required(precice.action_read_iteration_checkpoint()): # roll back to checkpoint + u_cp, t_cp, n_cp = precice.retrieve_checkpoint() + u_n.assign(u_cp) + t = t_cp + n = n_cp + else: + u_n.assign(u_np1) + t += float(dt) + n += 1 + + if precice.is_time_window_complete(): + update_fields(u_np1, saved_u_old, v_n, a_n) + if n % 10 == 0: + displacement_out << (u_n, t) + +# Plot tip displacement evolution +displacement_out << u_n + +precice.finalize() From e64c020e02f3d3fb37166b020e41200d7249d8fa Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Tue, 8 Feb 2022 17:28:08 +0100 Subject: [PATCH 53/55] Add DUNE in the list of perpendicular-flap case solvers --- perpendicular-flap/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/perpendicular-flap/README.md b/perpendicular-flap/README.md index 0084a9fc1..41da352e3 100644 --- a/perpendicular-flap/README.md +++ b/perpendicular-flap/README.md @@ -35,6 +35,8 @@ Solid participant: * deal.II. This tutorial works only with `Model = linear` since the deal.II codes were developed with read data `Stress` instead of `Force` as applied here (example given in Turek-Hron-FSI) in the first place. The `./run.sh` script takes the compiled executable `elasticity` as input argument (`run.sh -e=/path/to/elasticity`) and is required in case the executable is not discoverable at runtime (e.g. has been added to the system `PATH`). For more information, have a look at the [deal.II adapter documentation](https://www.precice.org/adapter-dealii-overview.html). +* DUNE. For more information, have a look at the [experimental DUNE adapter](https://github.com/precice/dune-adapter) and send us your feedback. + ## Running the Simulation All listed solvers can be used in order to run the simulation. OpenFOAM can be executed in parallel using `run.sh -parallel`. The default setting uses 4 MPI ranks. Open two separate terminals and start the desired fluid and solid participant by calling the respective run script `run.sh` located in the participant directory. For example: From 7e19540b62fac9773eeecbae8a0007b3dde15eb1 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Tue, 8 Feb 2022 23:21:40 +0100 Subject: [PATCH 54/55] Quickstart: Bump OpenFOAM version to v2112 --- quickstart/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/quickstart/README.md b/quickstart/README.md index ee8d898b8..7bbba725b 100644 --- a/quickstart/README.md +++ b/quickstart/README.md @@ -32,10 +32,10 @@ To get a feeling what preCICE does, watch a [short presentation](https://www.you ```bash # Add the signing key, add the repository, update (check this): wget -q -O - https://dl.openfoam.com/add-debian-repo.sh | sudo bash - # Install OpenFOAM v2106: - sudo apt install openfoam2106-dev + # Install OpenFOAM v2112: + sudo apt install openfoam2112-dev # Enable OpenFOAM by default in your system and apply now: - echo "source /usr/lib/openfoam/openfoam2106/etc/bashrc" >> ~/.bashrc + echo "source /usr/lib/openfoam/openfoam2112/etc/bashrc" >> ~/.bashrc source ~/.bashrc ``` From 6a2349426c8c98f44a5f2ba8239cf6a97a113e9c Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Wed, 9 Feb 2022 12:56:21 +0100 Subject: [PATCH 55/55] Updated changelog for v202202.0 --- CHANGELOG.md | 26 ++++++++++++++++++++++++++ changelog-entries/219.md | 1 - changelog-entries/223.md | 1 - changelog-entries/225.md | 1 - changelog-entries/232.md | 1 - changelog-entries/234.md | 1 - 6 files changed, 26 insertions(+), 5 deletions(-) delete mode 100644 changelog-entries/219.md delete mode 100644 changelog-entries/223.md delete mode 100644 changelog-entries/225.md delete mode 100644 changelog-entries/232.md delete mode 100644 changelog-entries/234.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 2048fa189..ce28660e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,32 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] +## [v202202.0] 2022-02-09 + +### Added + +- Added new volume-coupled-diffusion tutorial with FEniCS [#219](https://github.com/precice/tutorials/pull/219). +- Added OpenFOAM case to partiitoned-heat [#223](https://github.com/precice/tutorials/pull/223). +- Added DUNE case to perpendicular-flap [#239](https://github.com/precice/tutorials/pull/239). +- Added FEniCS case to elastic-tube-3d [#223](https://github.com/precice/tutorials/pull/223). +- Added this changelog, describing also changes in previous releases [#225](https://github.com/precice/tutorials/pull/225). + +### Changed + +- Changed C3D8 elements to C3D8I elements in perpendicular-flap solid-calculix to improve the results [#250](https://github.com/precice/tutorials/pull/250). +- Ported the `visualize.py` script of the partitioned-elastic-beam to Python 3 [#247](https://github.com/precice/tutorials/pull/247). +- Reduced the writing frequency of the partitioned-pipe OpenFOAM cases [#257](https://github.com/precice/tutorials/pull/257). +- Renamed the output directories of all FEniCS cases for consistency [#256](https://github.com/precice/tutorials/pull/257). +- Removed unnecessary (wrong) read statment in `elastic-tube-1d` [#232](https://github.com/precice/tutorials/pull/232). +- Removed unnecessary (relic) OpenFOAM parameter `nMoles` from flow-over-heated-plate cases with OpenFOAM [#234](https://github.com/precice/tutorials/pull/234). +- Removed unnecessary (relic) OpenFOAM parameter `RAS` from the `turbulenceProperties` files of all OpenFOAM cases (we model a laminar flow everywhere and this was confusing) [#258](https://github.com/precice/tutorials/pull/258). +- Removed unnecessary (relic) OpenFOAM files `RASProperties` and `couplingProperties` from elastic-tube-3d [#258](https://github.com/precice/tutorials/pull/258). +- Removed unnecessary (relic) OpenFOAM file `radiationProperties` from heat-exchanger [#258](https://github.com/precice/tutorials/pull/258). +- Removed duplicate default settings from the `fvSchemes` OpenFOAM file of the heat-exchanger [#258](https://github.com/precice/tutorials/pull/258). +- Removed unnecessary (relic) fields and inaccurate copyright notices from the headers of several OpenFOAM files [#258](https://github.com/precice/tutorials/pull/258). +- Adjusted the formatting in several OpenFOAM files [#258](https://github.com/precice/tutorials/pull/258). +- Changed the versioning scheme from `..` to `.`. + ## [v202104.1.1] 2021-05-02 ### Changed diff --git a/changelog-entries/219.md b/changelog-entries/219.md deleted file mode 100644 index 99bd821ab..000000000 --- a/changelog-entries/219.md +++ /dev/null @@ -1 +0,0 @@ -- Added new volume coupled diffusion tutorial with FEniCS [#219](https://github.com/precice/tutorials/pull/219) diff --git a/changelog-entries/223.md b/changelog-entries/223.md deleted file mode 100644 index 637cc7982..000000000 --- a/changelog-entries/223.md +++ /dev/null @@ -1 +0,0 @@ -- Added OpenFOAM solver as well as the participants (Dirichlet and Neumann) to our partiitoned-heat tutorial [#223](https://github.com/precice/tutorials/pull/223) diff --git a/changelog-entries/225.md b/changelog-entries/225.md deleted file mode 100644 index 8295bb83c..000000000 --- a/changelog-entries/225.md +++ /dev/null @@ -1 +0,0 @@ -- Added a change log for this project as a file named `CHANGELOG.md` [#225](https://github.com/precice/tutorials/pull/225) diff --git a/changelog-entries/232.md b/changelog-entries/232.md deleted file mode 100644 index 232f4a92c..000000000 --- a/changelog-entries/232.md +++ /dev/null @@ -1 +0,0 @@ -- Removed unnecessary read statment in `elastic-tube-1d` [#232](https://github.com/precice/tutorials/pull/232). diff --git a/changelog-entries/234.md b/changelog-entries/234.md deleted file mode 100644 index 4b4157f67..000000000 --- a/changelog-entries/234.md +++ /dev/null @@ -1 +0,0 @@ -* Remove unnecessary parameter `nMoles` from flow-over-heated-plate cases with OpenFOAM #234

kOIhfW@7T2KNaVq#9f%!K(uCe_?==vsnpH^9Z@g84sH)%p4P)P#f| z1ua8EB$SG(s$%cixww3Nd_b?PfDt3`f7FZ3As|_!0>rX^aInhtU=s*1?shY!1LTw|oXj_Uwdz$Ftzt#4=`7jP$~ zd>)`hI9tOM)R?a|YC*{3+PBSg|H7*n}D3*>BR6>(C{=_RM>UHw4 z5m30Mw0cKJL$J?9s#_ba@}PDJc|%P)H`u6J|2uX{HE+OE)LU>V1N}q)T-6cDG zgb_qkeCW6J#V{3cnt z^$Lev#^gU^tsJk}1M=x52a0VqM}4o@p1sJ_6)8{zA*Ke<5j7sNt1xH=lux7Dos6Zq z9R>zG++p)RevE|hNsbcgAXt?K7GTMYy zejc|88Xv%C_*=?YbNKa7eWw3+M0Q(*;VeFOU7HK7y`gMUIOz3XE>OI>%1&PMIFK+ zFdfMEHVg;t2V!dGgWvr3nXf_s8&nnI;i6-RAZ|Q{UyK5g5vUamTS**9)}`- zTFX0B0Zd11YA_wAqlq^{`rr=F+j2*@@mr1~x$j(WJfE$_%o9uLZVtX+`~M+9s`K{* zDI~zBvmm1aNbO&k{y_+fwaP~UPHp9#=m%lRZ{8qsjNOmM)A4BX%v(GXqyAVCI0&$P zpgN9$-~kg*j;q=boW5ZG<$Z4*A)NX)X92@V-5p|<)4$L2pbb}!L;N&DAA|2(J%{zE z$9;)}A($me;%p~b|IOz+nq7T0Yf6re`_MT+CPUB%nu&mo@|i~KxFIAS)sJ1@agd2 zphPS+j@m1NFW!6E-g`Jc+8`2u8)pVt)o0%A@28iSrQYYNGP=5w?kx|ndA)^9?SG91 zuf03o9kRfJED1{9*Yl|hP|Vm?J>X_zBi#5JY{Ak20dUJf1csp`#C&iM9`8gM*qL<4 zwj@y5YZ6Y9B`e6wZ)|P3!05b^5`H^9Orn4kF=4TdXRS^jak#spZru!OI7(ii=8f&+ zh2pAjUU!wA9yTRvuA<vK zNFpdOq&)UNp(B9I?3y78;}g-*B;JS`R*=rV^tHKE8Uif016yhOoki6FGUYbde%k&{ zie%q$9uS!S_`~0A`hlRmAcRoigH0)M;KK4xpFZH=phn*~+I8QbKuHLJ*d(~e?(M0N zyG%Lr^{&H)X0%F~C_wUFPUf}vn|Tu0^!R9hSbSZPx~_!6mf@oseAEY@LsUe*KJ zGBmtM=I1{oSuxa0t!E$<1o4>WVul?_c)G~k>lPT5$Efw$aKqBEU>wdsx-dFsa|?=# zp?vuJ`9V~4XKxRpaP_nwQl6#(9GZTu0y-!trB&`HgYX;_cw7b)|8sf#yPJl_XE1y~ zNqPMERY-^oM7Lmg9bp6x02T2N=-TU`q`oK>0BqinZW|8SOf=-+d#VSPIPuFE+4lVK#v_YhG->Iy#mW``gMx`4I7 zDuBSrc}NsexOxhp`SB`z7=_F&JX2!4S{oj!(~u8T7Y6-cN)SRqFcf2KVv?hprvu6* zG4a{Qei+Q)2W6O!4sa(t1cHf^^Bh;~r-LyI$yNv&`uO_7Ko5*rx4{EZVEUDcOdUE% zj0`mP$pLf^<$K@+r?7D^?|V>JI&Qp~D?tPNYzZnF#0KFj=k&DPm)^|6>}FI{_@iKhA@osv^)( z&LguSWIVfTV`nue6sBWUCmr#ESK8!Xy^a<5(SyaBA6V_-UCmYoQV%@&1{~~+v^2;e z2c8vqK{WRoGV| zb8?=yU_?B$ly$DIC00Iu4+Sf$`&Ii;W98}IgOf86;QIdD&2U6Xch{NfrWY6o0J(03vHu~%!NWd>FE<%7AhA9BFpMlQ+x;nJg#=eHe zMi^Ftacp`9hQ_)&SgWJMLvRWwRJcktm`_7|!6x$RfRonS)5Ffe0TlonLE&+1h{M`D)U7$xFo{eBiNb_dp*??w$>#prshXOvA>FkWiX4kn2JxB_O1x0 zEiB?ux6Gp-jUg-hr0mxHR85sy@Ng!*O%GaFH`$fHw6O2%<9Aly98-|8Zx=`17?&Rj z``t6J^(F0Sk7l=4#NOtXsH98)y?3*?F8jS8dVl$^ca5GB3gc$HG*GEpRE~_uC6xV? zEz_y;o|rl(_?Z=lu1|oBpTB476{pZ(a77QF3SN#m7q4n(d_{{D(%ldAwZFXo9(g^4 zof*+S^f2_gIJ1h7bqzueU!`s_P}e0=w`qtJej z*P!ymv%cZ1SyEDpoR&}j^S7{oZ$-y1vaPC2=Z2jI?DCRppL*uI22>=89ld62UkQ!k z_lPZur}K1-dtzv-NOC=c-YBFRO1_s=*N&{A;ps2;^A9n7Frb( zye3l>j$1{CJ41cX`NH2P(T0Y{Cf(%_7gu{?;KD*M-bStnr-LU%%i=g;u%iw@|B!)KwDM0f{etdrx1gFOI4m{Z6-2PW$bB`!e(A)bXnkmH4OwN2jM^ zW9*j^uQYJ2Z_&I{=CEuTnO1} zDpKUm9kg|2imFr(cj%bLxo)EQ3#oyz5FYtOj_!s*8!u!)7p1s*o&YWpAJSG!0-Ci0_JRzKQQ3t4c()0AV-12j#X44~)B#KnY~3 zo|u*1Ty{$14W+_2HirSv5PyGp-*mU9YUF6&46!XPo*Usf1kxQGHE2mN|Dgu8yjMa7 z+!Ging!4*8K5jlz)(cP6Ik^vkq8&lX>fJz!s+*(|_bu*mhKVJq@h^ga0Kch_<@VLT zUI!)_jb>URP~(ZiCdGr7hs>%!J!sQIxL;Di(KYWH`!rkkATR!G2wzEGdr-<$T4Z#; zOgg`~cyDiyHmpNW>qD`3^Rfl!=T4%$`$unVNPJkBnKG^RY8n{Oe3IG?CM@8~5V@n0UTkP+ z2*bBnwYl)zi1XB$>Q&J@VMYU|zOQ(iI*qXJN_QYbQv-+tU75zDB6W3T1^VP9=vfec@#@IeZzUxogOA^lp~70DUmi2pnTwB0M#VI5CH}O-a=2g;+$r=eU?_WI|g!XW1}JXFoRc%rUrslJT#LE z@uFM6Ck1B*8f5zm)+i0ukvqpH6?3vCntCitx*M%>>O&QJ1mX9ch6%H(Q+^xso3zmm z!i`VtG$NvPZxo}+c(63;hnKzrPsmUV&ISSoQ7k-k;Q}}MofwPB4CeCzTu>Nc1Q|FA zzx%NxV14)%n35S9a)DF|+~>t9(ei^anX;ZjbuRcYYik~WjM{z^^SWA8-TPuA7xabz zTRRx(uZ2+~^Z^(zEF{$5-_PF90a-yWIW@JYMP10ty`z={W}%>@R0swg*hnwI^GtsZ zAu@>G)v_4M|p*(;&p_qEia#v=)g?I94Y z4`fR6q{UFlcpWV_r<>V{v+8qFtxVSjTPG~9UVgp%ECT|aH;CDrntvHQ$#v4A9c;*S z{hm?6hV zIXWR!=_q!z+FZCRcf6Q2D^f>!EJk@nMMXbJ`Dpj&YS;4e^6tAGk$-!G7ym zMw}7X>1pwBj=;KC3XurR5qy7r_EU0gagiG$ePEH$T=`wG4Z`o3-FHBS*a+}c(nCFw zZ&>v|bU+Zf9lU2cLNLnyND>Za}~v6ble4 zVSEtu4hSp)dtanFFF30s8T=oc^?baJkKBVGqYEK3gDDhDQcD=dIWaXiubNp<@_u@d zW-%`TrNeRk1%#w7GV<_{7nxtbNOq6i+mB8r$b(kGimK;2F>iZepGyX?M`5}5K?Y}G z$pM(%d)QA8)@$QbngH-rP9k+rNt0D!RAc+eqK|gr{0lXjR#`>9S;iJe9?oX)BqN%_xDkX#&dPPCNXj7?IQc?k072Wm$-m=JSsMIFKIR}O)>F^dqO*#J; zXKxi(_4<7a1EQb^0xA*$0us{Qh#)N>Dc#bgbceJO(j_3$Ez;c~-Cfd+wDg&{fAN3M zdC$$+pM9|}+{?ATF`qfc9AiwiB7Jye3YBv!$XQv3fR8w|wz$~vM&q$;q5aNWG(=Gf z4+uQAHsA)y)@-F@lbh_54UxX$=ue|)KhDcSfEXW<;Kz=TJ_E^3Jzuzr1mZz%s~A~C zz0Rz`Qra3fKB+tMH;M83+dNiDPxWb7CMa5W$JaK=+cj|q+z$hP!OZk@gJyp$NGaU< z!exzrPg}+?o2$bPYEvD^6(DR1`sY@IB4F)rVLZ;flU`c-hBUOClgE8-$%^&r*Tf7N zreNIu4c0zM`H7VHUgoj+-oE-6**>IhEZNpOR;>8Q;`fVj0)(J9sRWJ=dUG$0?AS0M zKop3%9tW@gDwnv%p6x9yEsc#IAd)PeV<*`cY=dkp+u!l-NOGM`6tXomRem=w4&18u zyn&hwX#o)P2mhFOgfyiLUV&qXb5C^P2oNjw{rg(g4*li0=%}dW>B;B~Wl{@|UGpSG z9hgh`GL_he&CT`n?mv1&8QlpNrKGwUm?Ruf*8#=>^Z~h#gKIX2*9JfQAixqFd9Qwl zo}b}@xg)6Vop~IRgNN>eVh_}72daqI6XOr;%B5zp%Cw-Utp&xmB`p=zShb@ym>Szd z$%Y9+2zk;kPvAd6`v}K23|8P?LDvq@*Ui%OB_lt-gkh}A%88FLUc3S|pWUW1NCn*a zY>hY5>!L61E_F>*VZ>3OS#t@Prqv4*Xj}@(nD6g?34($7R@Io<5dyk7YOQ$`gBE?L z7$8Kl=+0q+Hpe29y(9}xSHizpe77=qUH)K_EY8h+l{&-qz3n4-n0dpy53XU>WvmeC z;npMvFh*moKH|wUx%8l-b{SnH=;pZj8zE#3%pSOPh&OIQq)D!F;kV38BRE2!%gPQ| zTC+LbU1%GA?W{sO0^+6$bqlB!K<7BZ*MRdblW59vs$5pFzB`G3w!1qoJ$)IbSg6S` zjx3=LgE!3lb-^rNk-xW?YAa~TD*(uhweT-0BNqhe9e+PDY)k=jlNkgEz~u@JwWK2j z^`b&eb|uhadw+KIy6GVJrGJ^+wFI=!0K=Qx+E7qX+FDv5lERAf3sgYxJKsI4;}<~> z3x3Sr1v>ji@7r+QU7quEab4dMP*|9&zvc)KB1I?UJ^=g)OeKsFLHFR`l~n+;7M8c| zp8=@poX-(eG50*O;5p5|?7@jg;znt?p7IMS*Sa`De8;sF3lc~7PFx;6iiUJjmy@Mv z=quOtK%Wj;(294z8o|v95>0dhc9)}Z!)y(x6!4mAfM5_XCL|a@xu0>~sexfnwIWk{ z#77mSkc;yfBm1bd#CdT6Ty*ufWMc+dg7Cz(}KL|Ue9j=mqT5BW|xIP8^3BDP~ zN&3!biVNYC2IdmtY9PR74F+N0CkC(xg71Sn#3eNGRYxo6;)c>d59Cx=e-R=*`SZu+ z>f#sx>0s@J762|d2 z)yK6ovjlwDKmXL#!@x4d{opniKKh5$+wXn=zPVf|Ll`Zzf zN?`4XH6IuRW3_+pB>z@a;C=DMDBMM5SwYtpH^J!{)$%i(n;c)Pi0|pi9ZT)riTj1# zD_4vZvgVm+oIk9S`$RNF;4`a0hILBiZy}wdBe#Y4sZTnqy98^cC{s7rEI(H44eLY^ zA8X&w!xlyj+S7er5V<_ssrI~hI^FsB`T4p4iaM&1*E{zS0aF-auJRyH3H(!?dW4@u z_te^%y&gMbXEpHBu+?3fE%5%tY~tqLc+AK#&ONrwU(==0jmq7R9wZny7J1lK6#OTW zd4z6mWaAq(*7>Ok=G-&uDrmvsw|1Y=?x$imxeYs5isv`~$WB`${}%n&G3Gv9N6;^Q zfj*>S#GAgg<*N5rdbjmOTh3J9D~0%uRnVm7S{P(v2M8t0Kn4a|8H~C#ZDAH3XfK@4U52P=CbbQLcZ17lDphvo3uKVn z#HZi!05Hg{pi0Z?9dD)-=|o9|9VyV=g5l%cJ8kAzjY^wXR%1C6lWg`;lNk^{`)N*F zQc!O#pll)6eS~`WBp=={I*rO=_%txGloS=o)4AG!<_>BO0K<}^_l1JbIrbNO-0oBP zN2$_Qs?%miQ=ydijryu_F+M|0Hev4SFyDBLg;fYJ7Em2bv9CcoG{i#j*kY{EY|Ka zm6<<&xGIBdghJ}#37&>qB=Sv`Ux0B5WCb}KFw%oW zYUd*}Zy6`2)2a`a6r~1sC2#&B#zfBd-y|vIEnVJ_UCfQrlxjnv(`)2 zums_;gUbL(CSa_SGgpBFJSAlTveW<;312^WFk-{(5r78h>L^}zaG~+)kF$(miz5V^Nhi@GL1_D%fd9GCg z@nV0DQ9-s&WPS8p>6=V~^GXllVFeuX0D=`Ra-C-KvY=SxeT2DrSQ2T&zqJ5}BoVQ( z0Xi}3Ti-xKopbL^2?*eRxSrVo;}k3TMn>iZX=pxh6GxjWsV#b^t%YnAXe6vo2S(im z8ye3{pD$ZbfD88Mt#t_RN@P?N*wkfgZ-d_zUa+(@<1_6GC>_^f;ExZZpkx6v1#yso z=^#Yr1T+-H8a%a2KZlozYfVdUgskl%Ffe-J0EoVho#(mZ^3Mr^lu)nAqKFZVfGfYCx|^})OaM#Z<)c&GqmF5>oM8}B#KQZ8Mm>XpsQ$M)V z9UTj?DDeUCaG;WOOHbj*kF>tk8hJEo;)nk3diW1dDsVg?y4BU42ja#JLN!5W`eXMQ zbF3L~d4Q21LHCVe1Pm>4aWhZ3oRC zI^1o74%8hQ)@w-uEp1@8!RXM?U3iZ62cBXZ!%HeIE)E=v+=U(1)|Bn?FqzJek&=`k zwx%jPvt2_Y?Jg=K0k1mwK!Sn2r{zDKzJ~`|2`5DG`&B= zOxMTfrjKAOho$Do1q$&_-DykV#$?#*DofRa-~A~V{{Mw|>+W`&W1g5!qo$J3je<1U zNImctGP3$$Ut+u3hK6x=vs2NJ?5FzY?vGGQ3Jby88{WAD(vhGL$Q|#4u*^qvst@q- zCu*GS!TUVt0e}&5>i~wp(F=ySha^HNF@ZLR&YD`&*>)Zl0!$DQ?C}*OR1`R$Ky^|8 zDtZFYbwO~%V_aNLt3|PHum2mOi^b-7on)aEa(hB%f38g2+6xKkcd!(7BoU8YF1-6| zmK(!4qd-OU{}FJPl$lCG;bg98MR*s3O0gC6>vBRmds5}bK;Z}r89{6-PEn6$#FgbFK9v^ zJqhQ}wMUf88vYPpHp(&3!*|h$zniT0U8&W+8`+ZUjhk5HsiPo+c86PC4<2iEuslOm zhvzcaaUODd;eu5|69xi;?k!e)so|V#8W=i5&cetPvq2Xwoz{R7yfu?Q^k0FV_uad9 zFpGxG0Des{TjY5^-we5!L71n%7L+S0?i-$_YP!w*e?gmExL7Kn_Ui~u2z>x<>N*Or z?`1W}JBA>NwU`wGTS2e}-vCCgFuJu&H9f}r;Phi;3t_tH@Q^A+)SKb+e;_>4G-!AU zxvWxQA4a6a;ohEV`8yp5xmZSoa%ubST{*OBMn+UYA`sR){awe)$r4M6eYdPD=5~0V znVA^H14_dcP`6M}Qko{_j8DKBhhH5v)3v$V-Hby(&}mR~6G^~J9;7#34KZw{IO)6W zt_x8mF7dUo;yVQLEh8=+Qnf*DFs=mxo{O6s#@Cs?Wr>h>RI&m3pbJr{V(UW)Cj2X+ z{0*MVM*%`ot?D53hkgunJnZp&5Jd)jIGMM?MKjE;ffolFx8!sVo?w<($>FN=OJeD- zOt=%pH!KGi5N9KIf`|f;wVnX7uYjzqZH)9%uTK0Z4Y+2XVuL3pG(Ydwi`axdl= zIt{}ru2y9!+`@~1z(Xqy+f^A|32M3B%vM&=mo4@nzpa{U@)rW&CSoNbqz^)h| z6u+i^?C18u8s`ljDzdi*5*YUBAa!gse8Sl#^{qg!%e^? zHvCayBxgsLE$GR5V*aT+Ujqk?7?#sWLuG=MRvu4A;8^TLDx5yfI1<Gz7D*djn+fhZnmxk3jt56R5J~;BEHd4wjpj};$gJa9P{*O)LT_iN zQtCosltY?-zEbtYJd~Z{t$JmW>C;AfO1IoU+H8Z(4?>Q3*#3S50xo7O_M}Y`!JyBY zrQSzORmYvi6}O9I?3Q@Hih!b6af1rvj3aZSu46L|hDd@wq{L>#zjQ+19nnOzP29zP zjTqGAGd6v^NQP(>kx~a7qq;HruA&pcbM93N2jok|q5QO>7n3iT?x@x;>>dyzZU5^k zh+a6Ii#SyYo*O?=JIv&~JX$NM5&a>VX>Qc@8EX_oOf!(MCh z*J%>MIX!=`!Gn~qH^Fv$ih*eVIi>%}b$&3>?WM8A$1`6NmkrY2diU*q@N=oKF;Jt# zVH;z$6AK&wqc44;rT=4o=A^*u zTQc@AnKd<6S8SA=f9LwwX*xoq2jQEl4x+US@b%%hvr2g;C)}%$uPpqc{9rhWCbGb) zV%WO!aL`g)yZF(*T%lNYeOi@8VEoniJf%bN-8f`uXaqD9cMF1U0ahY~xNf`DI!)9u zg#k=^-*qzI?~%v!=VOKsA|;L87ktAh+OKG^7M-)){I!&WHZ;VxOUO_|9Bkr+8q9Xdm!Gr@l)L(RBUb}wwy zulcihrDH)0=0Gz+KG)IrOV z)j3;aqZgmaamle$dSluwv#5aR#trnqJ>A4M!{7|uvTegx+G9p2|J0~IN}35~XE(OP zW^goUFY|ZOhz=+?%dvdRgE9vmFN=hRnHnHKBO;PmK=sK-}zHg)kv{gI^KgyQG)`{$U7wxnR6RImd@E+0dgo%XN-rg zy@@gb_!KPiR{WF`X}Z()!L8-C{7QQdUiK|{^ZWxGHPT)b9dcCW>};ux;oPau7%J)JD&DfgOYacGd@{6CWg%Llj88BdVZ0AXj`NWA z4P)XoIb$&N)RI9(`KpI27&0ry@W5ZiJ{+z#c5&U zz}FdnrBn3lzJ8WvuPWu5t>4yn9dUjLu5tJA^ScKjVk9I2XYyaKx3Jy)q8tp9QAI)F zG#OcP8Qz@8ek!Vw_~Fq|5sOlSEy1-S;j$|?UJJY+Btnja7fu0x?9v?c{nISs6T)`e z-bGsw+oBJf7bT#P%%nrC)O9i>NEQBxUWRjDOG6`X=~_Vz;o5+a^%!x1VR~6-!a;f1osnf(%D<@j?BVFE2%=>QYv&&@SRz~=5+tXN=){@guAwnQ za*L#zl9e+u@S;MNDtLInb^&4%GBDDz zy(?<52Im5FjYPmK;NV0hCeCOVNK!z8x-$F@kV6B(4uVlXK)K)@=7h$WGpy+sRV3_g zX$FM?3{KqkyE#%sf;zgp!Sc`DS!4~d*Nmq=_W!Q&1`pmZDRnk;bhM1vNR+dfe?^=2 z6fgW%mNu#1-L%N)d{6z+mA6`!TKd}onR~51Nc|a}mDTg`l3!KWO5}bXoZU6O4b^I! z@y6%)_?(m7zf2d5(WK(7AKvj<_X7qVQVQ&#&+ti z@=wS!-HKG|+-lavLdAf`gpl5W^I`NwG}!4!>P!}qS_yn|>;a~yY^y5R<4W(YVKxE#4 zeJ}<8%MhIzx{iTFhB+2Yz0$*?%oP<6V1Rf%Kf}YzItA}4KHxYA$noxjXN0XzAL7d( zlplL7sf|6Gc!>CVE|kunxT~aI;7ljyg5N%aW6Y99&>1Ui{Mt+6ZhU-fd1eN)wSpWn<@ouvo|??RUI!E0HTMcAyHNQYH2$#Z<9KaQ6y*f! zTYX!Fiw?Z+M`H1>oxWG8#IC1aX}{iqnT2*>V|aAWN~Sz^NfNQPo3#{ zB}L04Eo2mw5Ih!<5^{KyNJw-bM*#v$A+iWe&M=jmC^OL4Ppg1TTtHtKeuIDJ07}BR z2SSqI&%@G;E5MtQ6h#SZxQL{ZD`@{ZPA{F6BNqje-?cd7+`XT`*OL8UcZ65$B<}(1)gA@gGc^BM_sQ9 zKs?bvT&(-|A^pYb_nZLeXz2)=870p|x1M6JL9`fT*hA`X9ax({pI*$H;|a>muVq&@ zuyx0{);y!))xIH72(0uNU8LtL{kl!GJ*2`q`+>TxCsBBx4#cmbJ4`k&(AN3$6SzMu zs~MfQm9QA}yP%<8ma~sHz6#!q7OiH=y`y$Z*pI2J?!A?CnVY~!58-b<)|0m3zHMQi zzyHe(UEHk}UZp2p!)wQk6D4OelUY(k%aGOmY}+S_4)ALFdmXQL1}_HRN<0k%@B}%W zG(cc;a+WvDK%BpHJbNCf=Ruuqw08i*J;((p2gUy2pnOds=oVm#cP%xuQ~|FRlmTQU zM6U)T_b$e3^Q}!ab+T@EcVz`%x7Vf(SJO$$kClDqD<@tzyiTF$?hnCb^Qv2{{49i* zyXES;^BcLTYC;+x12FdkNxk1Pj|0APhxL3wp0-9BfyD;!DJY^LJrOEowrdgO1;d21 ze+nj$3$Wm4H5D5K0DZd-a!ar6Iq$nDSLO-%SdE{@XW01$`AH0+UiT9;nCssg1TZxA z*0q#AYD>tf;|eiRM|Xl!#tJ6vKyHC%fNkuP&e;D3J1S+@ZetpnFlW~NKD|IBZJGR0%K7~ zP66F`PTWB)NVj-+CV_3I488x0i7%v$<@DcecEA@h-(;!d4XK~0Hyf5K30sab^GVm| z6E_QACB!aso0oG5)kYG|4ZRXblVK{z=&@M!j6Uv(<~?JvGVt1hm!w>Yr@TiuJMC5x zLl%?^;->GAhAN*m1Z%lK`~wmph~D;9k83f$|JK3$EAC5|g*9(*m-W zZsqf*B7WUSH<&8XSW1+i%C6>q#9vyERv2miF54&lj|7Zc>skUvBBi^m+#VTyd+~;b zQDseE*>QN1Rdz6XqBzOgFRholGabQ;^{F;R>@}*?BZ^*R8W(V2n0^nv?%#h$RA~I= ziflZBR1PoMhe8u8UA)|8Kk@Lt)vCoSs!y~?Z!+){aMYxk3~!o#tdkNRFd2!vY_nNa zRk*uN`-+ft)bXE5q4%3sCEkKa;mQHqF$1TTP8b49;vd~s_}1FpI}xETQLB{~KP>R` z>440m*~K5~3B|XD{?XF(UAmFuuC;vKuqa+#sO&IS!bl1X+-EBrRE)3J4m#5PLW8-M zT@p&~CZ2|#G~{LX;jbDaMdu$391x`!B=){em3zu7E2p*7XDViB*6x5{c6LTy$-ET3 z-y*H{!1kLG+Cv5|DM{qI{cW*v zGto{O5qoTCRI4ttoXBu;tL>l94LNb8yYOCqdgvKidFP%D93p_sPETBtrBw;m*6j-) z%;*e|Q;7(mIq)X_iP+_?p6mSJ6TaV;);G-du`6-E)+5+Uq*55Q} zhZ;-|-(nk=zbZ=|aF5bu{_>cI!Qm=hcyu7he4tAQw{g3czT&Ww zv#gdoz?)-=|{i_Z&2X_KM#m?p7UEuD;cg*44r2jKEo2o$hXYKEhW& zI@L4XCC6aujMTJJpNc#dlOE|WQgRkqu0uclyp#8tY`gJ;%oH1hS|Rv6Ut!PW{gX!F z8iMD_O1jDhw!Z=zH=7$paTHFWwQa&0MB#K;BNyw#3p&=haEWH=^3oBsP+G}+7}?)6 zuxp}tDPyRm(IWEp_XZgNr1X6sn6hFGJQWOfS9jlT{$^9cIy@C4d(yGhyK`l|5kWXj zYujx2y45}O_spuaMgaD&H~6Z-&~EpDvUZ7Enb0Oe&3+j9wQrQ3A@WP2$(z^wfkzKr zl`7BVY_1=jV$G66Lz7RLG%+5ptG~Pw->qALFa86ECb=vQ1f<4M@cgVO^ZTTfVHMjo zNPO|c(U#c<8?7%>sO))7=|Ru<;xFs3*f+OE2ct|RMDArzPI66jw#G6>&SnDun-QJ|l7N zb}`B|?F6&I|Kj}CgcOAbLVF=$ui(sWNF$&_;T3WDQydVUPq8&w)kmC3a*T5oQM zweL#&Cs+8v!{YS;ZsjSMf))fckrJ*`Ta$ZMgd?t=Gl*#h9 zyE!%wAL{%aE!01$o@*Df>Ix<&w9#1sX@S~VFj@FSl^h0w6f=3auQOxMQdya`O+-$T z$p^|lqQ86=BWm;~VJ{8i1%{oZ?P+I~kcLwX6x<3OqOM#M;~?enL=lnlKM8)i#nacE z$&*H#+JE@F*0>b0;OVT0a}~RWrY@7f0g>5XHpqH4k#TpqM5CTP8;EpUj{M3ObWm)E z?JvwwZV6wLso~4k7E<`k4FnJA)CU2VE-L5hF3)V6)wy$z(Yb|cgen##wtNLf-W-%3 zce^@VIQZvH0=a368Y9~GR1V87@tFyzW&3n!jTV6pw!XQA&&547&QbE% zz~1E1-(t6_qU$D`_QK}f?|06Xv9)@L&Da~=)pFGN(WS17M#a{nzy||5`B;CiCO!r!P*iE?yMRuZkV6 ziNhuo5oY}lEmtg>Cxq)}@tSzKcuV%^4eKf~qLU1n9Btj3GX3vt@e{55o}Jr?C5&kW z>ud^To_H94%XvNL&xnuWYbbu4cQ?&@JtQ8ienR)cUKguUrZTZcdzs+M(D1$A&g1F? zF2Jg%LY4#n#aFt77Ll2kQ+RN%Fef;P4Xi@No|x*b%)aoWzh~O%$Q)piLW=Rfm+kcT zi&To#6luh%VbA!F;u@oM_{_87oP)^PaIi?ad%{v~gkzh%mZCT5Y?mbpX=7zVFSM27h7is+ zQ1x#u!0KpoelEJomxg>B>NH!nw2au2if3E0=K8NqDZl8lyit9a0t0tdc6-Q6fP9lu zzZ*bI?Jsmb72P8?b8+!8mrz^f*RHg;yt6hdt8?dWg4;87OtbtpR78hpdK`)wob*R% z!sZTn&nL!@-H%@uVfKAEo<{c}Y>QO=~<=qK2knnDnyn14`ZUG|}d&>$|?8 zTD$F_5Cz*$c12ExWmLeCkcz}5u(lby8Gt2%bb56n_f0|Uf{fv;mX#&_7M7>AN2^GV z00OX7;3RIjl!b_sf0og%QWW=ipz4V@@@jsn^Ru!0r?_!0wMUB|)m2BUXed+9MW9va zH#()?9zJouX_TOlI-yL4GuGcdr5qJ}xAbPDCK=X<7_w#ahf!U`*A#_mMP^1_Vw6cO zh+fs>>{6Oyp2>d#<4y#Y-9~n3MSv;BVj9@2=DIxfZ(}8q+OZg!4~>KAAn7sxXl>#t zVUVsu(-U;vu2l$z0wPU~*9?dPP#$by+{TTPK0Ox8`G@gb=WQc(n+`VQaC3i8*^#xu z8A4=1`-<|`q>p~XS5{ftj>rxPtOB9>EX?;CX}SdXgHb&{;Hw$an#R59WgUDa)I%%5 z5=lkc>MGPMR*7>qBw9jCg-0S>SebhH7ym^exH-9T z19`9W6Bu0Co2rh(JW%hk&{P*>N|jL|+?sdD|N163=Fw1PLwC-$mV$N%@mXNwGwK>f z|HS@Vuzv!q_^|hBxfN8ut5i?nt>kRPwEOnNa6de!pygZ`@rJ#xly>|8_woQ9IcY{z zr7$8RX5ma%3m%(~dPRmK&BwIlp4wMCi5G?U+}`6Qk4QObsjEK*FBT-pLT=h`bIul& zgZx1$m8o0*+{~>m+0@TcbykZjqQ*4NB1=;06<^OhFmi<8?Z1%VZ15YN4+W^_k85nV z{uqxURoQZRSKV#jkFC8hsiqBWdjmfJv$ro$YU5PH51rsTdjt$1H<6M1j4UrMh6}X# zHQGjQU*nP&lydZo!LKK0Te_TP>z_$s+-^}+4OlhsS=^B6#Hgi5FsD$`eU(4dv-Wda z=jHHaF2DzaGwAhWDQviU0Lw*187F-%>qM?YOs`E2HjhCay_cs3I zDqYhg>mh6^xaWz zXu^6{XR*Pd$#AV-mB?!MyqzK}uyTJ}5)v@&e1y*AeJgFGo_Ptct0mjEtb$Yp0<8Pz zhRL<3xDWk_>8_X)&SrT%Z!|6D|T zf#9d!>8G)Tol7(`yD^pTgAt>Gtt59pDtS4-YyCFtg#dZJ??GPz=?u46LM+CA2xoZO zVq8=0+U{tWh0XTIIQ;?(DO@h<-Uycof9L*L#XmC<0I zamTJhv?jJ}3@`hV!O9U>%f|m_?nav2_#a1CAlHLmZrr^_eYm;!0gTkf$1mFG)dbt( zKC2x+mh_{?`A8q_KXO#|O}3cW2E{|?*?fn4b<;TWn6J*aVd90C1wW)8@<|8A`Pgg2 zUfYkdAczN>IuW-`I|M7%#c*R?w;8@!n$*G4m*kCwoxY!$obHkpNSBi2T%KLN!RW$? zDnzWWH+QcuF_cTU88j&t_xViV;PmovXs7+D-XFrdJ0=;nbu>VgL4pb~wXEQ;U5Een zsS}IskpX^bn}l<7S+f$wn%Pr(UoQuVHb>rk``2Zb4`#XOhJ)u$#on#S_^$o{V+&D^ z&a9l(&wboABM(zRS3|nI;6R#_$#{7c{ZDVB)+PHSI#_&qbacekdUY)Lc9yur-7Sau zARB#e&Qd1~9N=t(0$GEeiN3;j%uX8LHnZ^Jh@FYlOAUXm+VUybKX>0$qt5irn-O60 zuJ=hn;=sr(>eD8~YbpONVXEk$+Jjkov-m5F7$Lz^m*)K+Li~5y)W7fE|CAAzQ$RJ+lE|o_3 zD2w3n>oe8j!r;;5VD}Mv%(vN4ljH2CXGy)djnrVZj6j68t+pqZV5`O7YS2!kwblP`?Pu+H%yc)e zR)wQIl4z^vMfY;~pPpF^o1>0ISwe!Z+jt`&E=9n){>h&5x?=}4el2%Sl0sReemW%z z7*F1y4-!1hrBtia0TMy3_Pi?oOA?Bz+F<fNM49nW9Q-_z}2xTI|q zHNz+WY@U#i_vKEckwj>wH{})M3(Hr0hZ+L&%*BG4a1u;6)|gH?W2Hf!XlF*>j@PU-2c#Z@A=ZK`^ePWZ;X?f?8O&S zPGB)rpe{Ml6C#zZTIkP!Vh$FPD~N|wbhWXz9<=1W)%ZU#o_xYW>^!9@QTp4!FDvbR z`v_8Zlc&e0p75+A7*o4J{6R?y`Y~T0A12(p*a1V?!ilQ9WtElJVWyDT10qAv(K&!J zGknXxWgbXrSa=GuJxD`D$76>4(G2toTw?agKUzW_fAPJ-l0(|wa0Z9;mrs{tqf^qe zSjnkKIzh@@DOEkbAF+QuC)G_gKH!qx(~m^$iyW|jo=dzqm!K#QlQeGTY-!P)#D1`8 zF5nBfxm|+o2Go^ch=f=XTZjDr_mS9E2jryLY{_c0LUF4>sL7yL*Sqq<1k1qw?k>rNrTEfz#ldI;dM6%SYDVd^iVeCV%wLiasPw761I$YcrFKFLq;l_|*d` z$yVrn5^l8^72W-YYkuof3pYr3?d*;~p^PaA<_8!tfd&=0>e1x`(A^;;BO6)VzI(R| zLR9uNazNte0^UhbHR=}riMOl;qdR-8E!l(zsumK|wLqS3Y(&F%1KYxUDDES4lCyL^VLGgoI zsa5{Y^XJ=Ahud;wU_BMEyyA|Dj&57n9U^A4H@@sz*kv_rfMBGXMu@61SLeBvW^?0P z`xlMTNB)f7v~V~UIUasGQ_iG#xFt0Ev>1VIZm3a|uWQCXf~R1S&B#-l={BI;H<7c? zekd0iNG&wp`qlOQP0M;Y3z;5QS1SD(Lr-_r zih=O{-P4W&%OO`>?W4pdH9e&fgN%_^EgLU&4<0J>;Eh;)g+wu!&7iY`0tT-@dT4G(RV2a0;~bU~&iTvMpgsKWV!^@wJnkbkRSMwVTvU1DGUe zsud$MNfxO->)7W!#mcXYRV-$D*xFq+VoTuQhX>Cov*s4bJ)qz6#O)l$tyd4q(>i~R? z2Kyme4svfaE3AYMVW%ow2J_9a!t$GFpxoI1aAwfwqw&gFsB4EPe@FS!ha^JvDgHWQ z-N22$VmImHOX=dndcBtYzq2VY#=+L`xTq)tbMpkS%7un9!O9c}GRkt| zi08k~(E;yV9Q-K=nota%iI0zGP%F*l>j!55N_(C=VM6sv)!eUZ@r6CDrQ^AXi6F^| zDjQQB2f~Y`8~jC0y?zfGzs{e4q$^jgo5=IXw^YVzAm`-vbUfN zzzq(DB}SlW-e1Xf%g@e+c#WTMRHe$Tc_7{Z>Fwsu&g`-b!IMTbNnWDf)lqBk@%Z+q zLg)p<_IiKPECJ!lzNVLkQ}27dH?E%v*(M0v5@l;v#+YDm&|rOj7Rgwme4v<_cK?&r zj?~Xh(>CIeorq~2FypBn28w{7TUeOH`;W^d%nVIo*TKRQNy(YWw~*Z=v^O%O4rus3 zD)PjaocX!AcM!Lq&@3(q!a|WNrQ6r#imbb)qHKg$lIt-OU&qgkUCoPSWlGuSd7-XE zZ-X}!0~el``lA|S^R^YvNTT7NTv-g~p%&gPeGf1>M~D~2H`JZPT>G5RxtvrG#=T#g z{2%UB#8O(XQ%ehXA2Al0oOol{@A-Jp$hr;PxMaKeLd~9r{K~aUZE8|?$?K(j74qxd z^|T#-)$S)wB5WG4OmM7F55xvwxUxQjd|{hM4}rIl4)9J_m{ls zJMdAM=B17aFM=vbb7(6oxp`Oij`286&Ag%^t;p_3rLGNVcwt-D?K^k&j*cvNi<28ryDu#-n$QG7GzfxTUhGZVs-as-0)=;SE=sW;Cb;;i!Eyd0`@ z8->C0br3#yG5_2gs=)lkBrgkMl+{Ig~a#-S=UH|sS>8JkXJHWUdj9(A;GvFZ!|kC!zb5%siV` zzAnVJ@SqC@qkqPHHr22Xb0HMX8eEENhdvPgv$OM(`z)Vqnl6T4c-`EYEk>)ZM+R0B zZ9AUWnm&of@w7tgN}ummk(BXiaHcIBqv*%$Wx{qpj@=O%CDoENJM-K@e)YlW)ibTy z3&hcn(wD_3lfL}|y~L_5-!-+bWoB*$>v5%emJ7&UhPxKq5J#r-vSS0c?O63`{F8lg|gkb7iQ&hwk;# ztp3Scef@vmTFe0#btNwHg^s}KiC1&XRLr=<8)`7=5phzy`_vQedc_gv5Pm@E30orD;+3e!7QSoN;v~d0*aDH1!qs%_uE~4GVJxam26o zHRkGQCnY7=$!uE*Ea{<`AMFee-hbV4?oxBCv9Neu8j{w3nKV|J*zfP}4+*Y!kdY1{ zG~x&7yr7+1Zl23$kJz>aCEVYgcPgDvZfXD@K7=*bc01$>m z4`6|#LqlZ&4ucU3)+C*OV^s#KEK^6qGp0<7zEYwr#&RhR-^p ziTlcqo%Ts#!N8R*`v0pVf3SE2^i4NRPnZ&1P~6EL~M1=x9WC+RfaZYanl#|B%b>Q zU{W+kd~0;t4jRDcU^#K_38sxh8*h#kGO&M9d`l@XTP$q=Hp7DPhdZG!ycfP640v_I z$}j6Aa~LF7FN%3@%3C=oCVe*>m6fc@lX9P&ZDw=S zAVR{s{q222=9U1nc}b@C88XhFrEKbub3AcUUihH4P=&PV74ghJV&F3o4ZeeA7_A=G z^5Z1YY{gmUy`n@_xT<0b6zbyIQOYeXT70$vodDjPf@(ezy%9 zy$BA{iII86Am7n>dA2zugAzp+nGq39A}PZDo>czvPYUU)%NOqjQ?Cqns+&@>2l(B3 zwgxGGz8&B}6!hzJE_rfCSyom6lgCu0zojJqQr%ur;Q`iWB`eJsLMTSEPgEcFK&RyT zLB++FSz-Ypla8k>o-QE7q~Ks#sWsfLS#jHOp4qQmNeV4E$VwvGEf;33;*l60eUgTq z6`8I6O@a&IMc9@wQw>$=BLVV6!z&X$L5x6kbbDgd5(I1n8B7xdgwL!T)tuoYZ+NKJ%4#xa)zk{MOk6LsdlG1+#?~U=Jr>BZ zEgIM%+TTD)`6eGS%?bL{ajt0tKjw@#+gPco(u5fs`b`f9MfpTDA>@;^o*4mGkD(r0 zZlh4uPo~Kd<&Ej*b%YqoOotC2H_R9}Z3!&Is}fS@Nw7vz6I$2X4N>BXa+>WioLCwc z(hY5xj9=4^j9H~CF(j02!;$f<&Nkn_~>$eT*Ngj*qfkxB18g!jrd% zsfZq!>xgerneT?-eBiv`3479=VY_1B+;G0BWv6*;^y=x_s|CZgG~9@F>zt zD}F(fJZhpw& zV9-}NV(5H!>z;*K@zj!#A8rkE=t+0Ab#g0j^hltIj(qh-k#n6N^JeY(wj>g}z|hFq zl6~1j`f0^DgZ>%*rzgvrOti!4Hwg+bO^|oSNYw$# zm)00^X$v1?^8C*fpC!Gm46~tr8u*z}pz-eQ`%eRrjX!u}A^gD0L(A6Hxcp!~fksyl zD!V4n&oiI3&`+pg8!Jnvwe^vF7Qf-*W=ecJe)`LH-zePSjYDFW-whh})5A`;N*K7C zS0CPN{YJVSei5&@mdQS^A0}<;7~fmKS9;W*h;BU)K8P3pQS;=ki$r*6UG;@`_LEI8T5Hd@5B)B};bL3k{CGzWYlOMmapWF7BCm!< z7^BW~SU;0-a=Osua#&YZBy*ks!4^Y?&I)O9iUnz4U2ox)y}YOV=bbg;tNCG#)3*4a zsWkHDR3>JEK`Y2-WG>91K?XD{ylL^c0ot*`%8_1{{6kKd#1 zYhb?r!u)^n^p!zzb-}iSdvJGmw*-Q_ySqCCcL|o@4#5fT5?m)Z1b26LcYEi1b?>d3 znwlTfp{mc`y?d`-y;crXi^_{_;;cWQ(gU!7TLCdR#;*l4Hhf^e!5D|uk%EHiK()vSlvF+N)5tPNBEQJdKMj8ilF%7a?I!|~vYq7Q>f{Xi z2D6oz;h4e5C;I?vYut()&sSUwpYdB`q?Kg#+clGw$dHtFSt2Y5IO=c|MMT16^YLij zlW~<)MMIBEmu#hSH>CbMzp^A&*XyEBU47jPFVx{w14Vj{Cz!te4~MQozDqlap%wG2 z__hkVY~NgJ9S|V#LSA@gyMS{p_~hqX%QQOH?bG@nUS3@7+tCj8Y{x^Axx%3QsLiz5 zz;_?N{_cOC#ctptPkZ5IdmiaBtj-Ga0M07niDM`7q0*+M3#SzC8lvUez2zT}E0w{Q z`z|ILIjod`+V1bT*#>LmL2W8{me69L?F9&!-G013fB~L4puC*h`UdD!e=0RO3;D!O zkYPMJ@_rZTrJdkH7DP1@V(ObH&zh*%I%!H7tuO6vyxV6>EUH*JZ?X#lDX)@65_%1P zy;q=KILChwndg1DB~2js1o}I4R+du~<&{zhr8!*LvJS53t81TaZJ%{+na(CDi<;#4 zWax4IruC8-?nSb%lhaxjh~%d*mc7o9^Jd8~qvtAO{jS-UJyZ`I;MB7g z&i7vbrP!;cyXUv4vHh#@S{b+E{Eg6e054?oKy?pts$LYm9)InwGJt_<)S=ZgmqMb( zt8D*1?K8(EdIP}XQQllpr_oO-OwTH|(2HmP++ZpRe!E`*7}J1!OLh$_3(Kcko3rmg z=zK~OFSMp^V1{q=TDq}TqR0wD9Hy6yk)N3tuNQyL`og}ZXQ)t^$v$pmpnV&5Kz zzXHk8FgKaqOn3%^rx{cU|02H8EX`tm%gfm&1L4WXl}Ikc{Ob7;QIHQ+3%}Jddv$z` z*;U{^?Otw{U2CYQWAJKrv*q{+}Ybo=_8nO0jh+q2SKeTy4X5H82WMu z99f)WHi=PnF)xpIzyEzWGAzC|qX!aW)z)~B^rM*G@iq@A>a7nF)Z9LG{kPQpgk1k_ z0ytow9jET10`lb;A()LbBQAUcXrBUtlt&Ir*fN|! zP1aRPNO3!yF9Gu^@^%L&bZ+#yq<23Vx=J$1DLaPWP^tow%FGvLg*i_zhYelM#q_!7Z;wsu3lT@OHxC!jbh_ z1lC6lN?)arL}bej-$eF#RqX>E7H6ntN@vH@3d07S&E1amTJ>^~e$wO8%!zk$Q8Bg4 z>bngQ*OXYgElAmj(Vdptm^J{)8e02quPO3BaVLb!4Ziso%6_SIhArr9^LAZzSQ@MW z2%_$%8U_>-Z@41;M-+zFbDenzzQOz9+?@_gH<>UGRv_cbd68++>1=7f?7|sonl)p1 zd9v9Sw~=FCIQb{@i<6|bwKX9@G6&fBRHA>C$BDeI&E^U|$>gHe(Sm97f(A;nBM7jv zaxiMKKOSo_=|l@N;TZH;t0qtmFt6k=j5ruUz>j7h?bzjEpzD_b<#+|kmR2-e#1*dk7+(mY`FaVDNZ)M>4_1c z%z^FNT(VApd2~YJ-OBUx0QEOs&-p2F>91bAV;6ufj{iZnXV=SlJJ2Se{TZu~s@2Ek z4vG(7?2y5(dQ01zBJbsTiL7Bl{L-~FP_u25Q({i|43Yc{EceCsN(#WpSQSuSz z6v%ZtU$N5$y^=~+{~DSWdI?MuA=uTx<6JO#JHJH)#wz7<)3J+d(!Kk1_{{$kTOq;E zz_}Wf`AMz8!Y7bH-U^>+LbZlKS;K$}kr(gAAVQtw#voH7%7I8vU9O+^?@5|PI5H*= zL#7S0|E{1l0Tgap{Pu3QZur^j7|l*K^K6PdU&&R#9nyzm25bFiA^vY{P6A@$vzw<5 zL)MW$mN!O3%pUCmlTD3Ke0|onz_UExag8-FdE)Z6gB=vjo{X)oGAK2`>z)z9kcG+5 zwg+|LN70Vc)GO+JV!(GMwc3lQSG9T)5mP^MNy$K9rVl z3H&#5jy(n}X)C9s^mfh2|G#nYS?(e69PV6#*mC zl+!~pbA--@(UO13b>S;IZwh18NP#pCGg2ZVAI;<+EBI;i!O$tC^-Py@0%3Kza~nS2 zJxwI|DB8fn<=LF$dE90!?;1p3^*2fmZo1lV?-HEQ)lKVtE^$qxSNDH}uU`)5_@C#Zr%8h31l%;izcUu3=d)j~~a%$Ns*K$ShVWe@R-dkE zsV>rZL{$*TP}Av!Lr>zd9Up4(1{(_5KY(t`-*h6we?bUm9G13DPP%S|#gSnr7k{$2 z42R#^EMTIh({Aazx7joaVLE}m9?MS(lGdA%4GXlFu}VUOMV7(T0X5cVHSiO7dBvzW z7#(DDQ|5H)>W)%k<*}fK3s3Ig(CC^@y7`HPvUc}nSnrLk|9(NLYwbL_R7?H6{%Ch( z!Oh`S3Vu32&QA;d;dHZtNQau`eKivJS+&n z)lT0kX2GE-1n`;#B@{TlQRr!^0Hv9nVw>H?#?@H)l&3r06s(I~5efQl)y%q(pb+-Q zi{jw+G-7SRP9r)-mEngZ@Ox{V)5$@+>A{=Z*Tww?zO70g6vx7Xf&na85a5dp3pn-J92!JujaK)Yw2xy?g+RH?y`@j?F1AHEsh`+=ytk8P zSGq>uSq7U9>d*_OAzQP)1{pIwo*1S02_08O-G*;%j1gU))Ez%~V!^FcYg&n`|I_p} zslBiMy_xhTkH0lq&rj5U{6U{WAtpMfBP99@Cx*r?z`cy`rJ3b zR(ZC~UzQsUL=0@!+{543&PX;`@LFK6y*>%XQt$|IHSCq05-KG<|4eo<8lyzxXdCh* z9B5-hdAm9N{_)K0hrn+}~1G%ygz zggm3Rjex{(GqlJzB2PdE7oh900Ol9(uTNT*?^ChArZj;w#e0x29(m>$DN=WNPK?z% z>!6+gcA}mS+)BKVNcox`rxvg$O<&;36$~|LSpXOG<;(RL0jN34lPjC|_2yXnC4nO+ z-Ey;~M|z$VgfETLt6jMI^wT2zFlKCabKSOax4oTEELd20=Cu^hUDyJQUv`)zJ=b(T zUZ1q*dN=mXg#lm8-oo;-I%nIsWDn6;9>Pc*Ez$kfT62#t>DkG$-RMyzZr3rLXh3~42n>S6gN5U#+Aa^? z?rO?hob#4vCwG^UzPE-lx z*xgii@N;sdlv12Os86W$^*#?hjBDhBf=)Q{i*J9X*KKcFoW4fP5yWu$j_MHGi~aot z?P!hskn7LViqc!1K_jV?dgt}k$^jT6kr~{NG;fER zOEiW7JjASTLk2wne6cq$Z9vWVN&TJ6*SMnin=OfS8E`C&@Z;LbqaITjQkO0wb>4s% ztY)8z!d9Y|r#pCP4ms~iS{tKSbmh7{C)X^G!8WFD00j&%kSd-y;O~^c>X(SZi6LAN zyuNXtL>~8lwH8osoz!|@y6}@T^HC?{A;oaGji2%HXYxcaI%5sA)GyJr1z%+~$3@>0 zBo3nqj6k(eVoH7ZY~*3XF|M!bqy4oclrj6Xhv_?CNJwer*(HATJ-#SKQ7bM~pCWPw zPRJOm;j9)@d^s=EE_TsKKdt%w9dKJVwjJY5LApaX18?eXSEb9<`6JI4r7;bNB=u=| z-uk+Wy?1d~G5%VjfOIF45-)PBKtyOnfoK7zbyIHb(RMi04;DvEX&HL&0oucW(n8?% zFs+7$L4)-a(6tB1W`=%O{qyWKA)7Ni?0C|RFT^!Z$2q@SAz)9euy|`xJbW_dPj;eC z6jy~l(=VfCt^7^bFOAE(5*&WuRE5$J87sHq{mQl*l1=RZhP_YxaowJn<&I68`l-Fh z;nW62_sDI`^I!HTxoSyUOn7$Q%<|eOgU4#~@g-2Q7D_@pSng*Dnre*Wb~1KqaI(AL z=L?$NHFNzDRkaQEm{JfZ@o(Lr9;!02tw)%3CPGj7(@zp=^>`zSeilnckgwi<^o^%&bCa3zdN)pB|l|B1^6BO zaOQ-SYBE4Myzhy`6vPPDV%eR0l9wpVP6F?kf;~-#>1B^ z3P#`CCfXAh5~*_B^Gy*Uv zU9>2OHA9%ltg4$I9L};T=&QUPB9;VYZUfKmaHEB})4sk&Z!DvztN2|lz(3dSD0B!7 zqu@UZ)S4r}*xE`bB=y?-4j65hD?Bp}g@PNPzoF9F`S;?SYx7!t%WWB9Mp??=;YXd-2-PK0 zNmU>s78JY83S+tUQg>MAT3qk$R&+uI4WFnHm;nU#>DW* zI`7037CV%c^C6T3V%UE@%uH!jpJDLH-fsIBau<;QPVoc7ev7kXjE#HUdmC;1h&|U# zc9)k)@kv>Ko;W2W`LJHB^5zx5tYW`6c$-i14XDKSOLMH4(l5;fYwY{$#J@fLv`PDp z;qZF&Z{+ynUh6egYbT8*p{H%MAk@|TkZvlr@L{ZYoHoWNi@P|f2vF}3H29-^TS=Af z7+%WihF-Hz6a`-ihzq#=Ib2VlersZV@a`jcnQDWCPv})9)hFmi z{_Bwv13ZLu!UbU50Z=#w3mGq&ETa?WObrBEL~KxbgZs4sFk)&M0Sz`#LFwe`Kd{1{ zVezIJz4nccRAc;MPQdQxGjb28(*5xd*~^i?5G#qxOv|DhaewlcC-$g6BqTYnkNA7F z68Ffz3ni;+@L;OKSBOt=sJ;0C9-()?6dENG4j=l{E*!+x#1csEd8{^-Q9Kvx z=%A~2#>E`@Vkhv4KfY@6sTlHcgb@TG8$7q`5h2{;{6Cunee zr0vK#9?iuj(}98tXKXz34&NgINXJACDb^mqG4Ep*zJB9l|7%#j2`Tw^C z{>?S_m=4~oG}|@Zw21~VDpMfMLUu@%c%*1I=&~=hA{mmipG_}N{bK!qX&2kUStO-* z-mF1RMud~{r?dQUf7kH8=7&wjZ1z`g7Znv1fJ>z4Y1?14a6-&wtz4p*tyyEZ#)lKm z1uT}E;JQ+HUu=^fOs5p3+8Kn3c9IzC`n6}a0G@7mdvbN0Yt;LDO~co|DiQ}&AaXIt-hQ+m3VEj*oX(s%RhvNkj=+vuJE@|8qD zIj*g}NbI?aj*F{hXxIgqRHlvm=Lx*tDOP&!k?BnRa|$p*9?vG^ZZkPedpbh|8=#}c z%fnXTOFH*Lk}%H_aCOC{^-(fp8?Ceeb%TJJsNFz)fT&eq_ zjI;3agL$>?c77d`Gq~xMtk!?kK<)YOxYH;3019Ok*w9Ig0#Fb@MHGCyodMYI8X772 zr3sW$0L=bz1|%WICERTQFP+`F!b8SIHB`Yi$=%(^`{_$p%v*&o;T%Ht+llf8QiSq( zQ9DP^x1)#J&t+xlbRZkl=Z~(rye|XCpG}{q8TR;5F zyj6Oh@=#xk64WNr(pBz2}lXw$J!g_f{6I09PbMap)Cx7#xvjiht&%%L$8- z_VKnuvA8N)!`pNkXlfqZItPairU+E?8xnTy>@icl-5Q&8z!lwZj>uuXoku0ib?Bu= zPz(6rQnY$@dvxG(KH^W+Qg?jz%T1+8Q@AMkJrNLCHu1&bCJjgPVdy`$n#=Zq zDg!?&TkyfNy!F7K7*42jtJ-Jnqh~jzC7?B^_tH0xpEb){{eVYE=n9#0wPB660<{{r5JwD(@RaO#-d^((|iZbps>hfY6~k zso=cBt~-LmAH*u>&{Dj!yzh+a(WW}rZ&c6opgfM{s|HKIdNE{H&hwAwZ@*ICJsE4v z8gFtQ;?A^POtk{#AQ4Prdkq<%+tLes!uoIFqt5YhW_T%BDlOt>yOwFK$FwDR%h;Vf zWM6?Uuasm_7x!iOfSsv~#6$IG?d{ElQ3AZ;FTO|7(X&AP5n$kF-G6wbP?f5_?H;Yy z{`kFG?0wzLElCj14J%Y2KcC_h2MgP*Id4%wRHO==H@Fd+j?|;mws7OQZ==$&Om%OQ7mCS!_?LQ z@1PsXGM3NJ%czDVf`_c{qJ7WTB*ZZ~*%$HtDR>CA_5KAc*l{~=$mUOsmA}T9Ycc#)#yUc!WCjqzEd=zj zvtDW#<&xgIQ^+I%y(XYZ3nBdH!?XJaMnuweAf0N4dC>zVQRsP*qS&v^6F^}B2_iZ*G*_bT54!*?Ma`oJvj zO-uZmbBJ9R1LM~BhaUs`!4FNiZ!Q~ojw%ONqbV=?ti<{s{xaiPEFrmvg2$pK`5=&^ z&SMvq=X&*A&8IA`c30~n4rR1)29L^#igy9fu=*I>5V z0beM?uGj0$6R{M4pWu8stYV)>ti=O<$#Gyj?Kl`FDR5Le8{wj$zyxi^KOX6&K4IDH z9UiHS$>l_2JB@`@zVqnvzl%C~3s}u8Nc?D$_mh@tEX{k;TG~^3^SWKZfBQj`3$}KT zSh%{#im8bFG=5O`|kYVOF6m&SYR>Ed+{6nN!YN~%O)(fx4Fx$2jBoeb98%K~wY zPOetxk+}hF)Oq=M0%n`|eI$Fho!A~M6iC~s2e&nON#IsZXvJ=>o^);5`TGwp#Gbf- z+$4?DN1OY+n{iq$gy^@98v_l#-zdI`<}5$#vp*Shp7VO&Ss?NEpgUiKg5|K$Q~2rgO-y{_*_FLI?vu?0MB zI*}e+7=C%K{yp|Dx$vKN*YXqW35Ilz6lH*(-(!S;-5;8MEo4YK95hT>nL$1xbb4nMYChRb{Kqh{^zlq;`Z8yqf1cJLB8~#!5FRp&^ zP>LPv?5tg9EYtFg=qQ)leY_o#_K&*tIk{RF@qB={l!rV>nq`mjSYPG0T>quq`r-Z! z$5Ev9F3KNEgb7?>G-Ae}e)MbODiCWWj#I$xOG;nG!^i^D68C5NQ=nX3zHoaJ`V+V% zeHP`D8nl`IGadt+z92v(akPSh>w7MZ8416Efn`ZT^Fv$^ zXdY->q1YHDoH`&37;j6p|DX!X9w#M1dyRbU%i$(uxalHrmr~QZ%o?7s7_>aozSF@CSxaMB*&Fx~*Z3Jk?uqM|MgOrav z!8!F;1s!Yty*tH4_np+OTAT)8W>^!yhJWoPvk7K5yFjRT;v$`E@XX?@#U}82Hw$Z( zN4R|r_Z`c9eS+u}l^{U>40?iK^jNp^&&hr!e||g>TIXb7-aZ>%)6)lGM&#_}KlsKx zvFmbvWxEf&ubMmHo z5%W5}z9wxo!vLIcP@C?ZFA1TEE0P(Gg+^N#QYW*fouAbt)Z|a#zFs(BweKl z*xEQ21aAwh3jRH_C|+maV&;GF@#*s;O)kUtqQ*G0pOcS{B;{_XdM*CaB^r>>CX9RhBKw5TdAWzAf3m7Qnh;x z8Z37$YDDzLBWy2zK6u&(ntL4#{oS<|#{(y{KUGocZ4h%6QIBj*^wbPJT)ghLRQTMr zq$^}=Xze9+wFTl;%8{YNg1(LP)aGuq*W7HjuIcXagtI?B47>vEf|?daS1;Mp#{)%m zU)(b$;3YK8c3TZ(hSU5&1?V@4M3z%whr7O%OIpXT?=Bq$BI&36LaQh<9W-hwEBv4F9~Wl?gbWW6$&yn+FhH z_+?J5{l&kqE$1y?Bd0qop160xYJIH^z)iPD(0Q)XskI)8VZN1uj-1RW2HXhf85x1; z-+ZPK0N{H$uBdqp_yBASQkis28)2(3w9pV#fCN{lNj?`lO90OuKPhG%6iR{tD~(4$ zMI*^lxEOCM6^T;D1N>0^gg|N6k+~o4F*G@lNA}fz>mJBakSV*Y69zZHB?EoHD7HgD z1ozS9bIpOh&&Ogc>A=`2F8V?tD&l#OblGe;IFF3Wrg!j2a-^qQ4a#vny^>#r)9mTH z)nEx+^Dftbu~@*^iXPHKTKhh-Ovb7}n^xu3YPrf;n#EuzGQxzcCo6;XV$a#bCwV_> z?Q03akp;Rv@XK*rWUQI!8~T(Q(+TF`C5gSZR%+gFVgvBC|L*A!*Sy$AuA!JG0l-h zB>wyAM>FRFzSQ-9AUk|zt>#bA*w*&l*i1EoAkp#Ln+#XFc^JRoc64mss>0p9^_Mw^ z;s@(|z1=U9QPBAkMXhxAChU2T}fI3+|I9K=EXkZY}QttwrBt02wbs-+E*4P@TY0d?S2ovr=v5f95`exMouS0`w>t`foQ!;~Hj&^2a14yynZrB;4PDeuceJ zx*M2T@bzif-)>-o@V`*|15G@#k!t{PFR!RD^4`PlH2eTo^77d|Ks%O_Fre7cMeC;n z7?|e6uQ(E;H0l4L2xJ8a42X$SK>3WW5Rrf@4B0cFsndZGDb8CE=PR3?B(zlj5s|>o zTp{=a;=SDXL+Jj^MMM8!frGYbT{mmSf7M8feeXeubR6&AZGt`KiPQdHrRDRjl)U$P=EgL#)+ zoKB&7PvM&icF6?0MAcXdIh~IVAkRpm&H>-YnAVesy|E0Y!$pxSRP7qwzac^Jh#cYI z#fk8QHm~RHM7~=6j!dc3oC?9!yZPPo<~y4RC9J4*jeM(=fmgaJ{Iy_@3>msr5wwAa zK>tVSl!FqT5M9bTUB}CTX5a1gO zD2$T$-%jzad+ltKA_wF3Co)-%0P!E9C^gsRjGT%M6W=UxQ%V9vYg=8(79xI-DV!A; zslG5TKL2Yp(8KF#1Xr7$S6{$rcza$Z?^_tzewDi4FX}6CNuUzxmIeF%yU6w6&=tfF zAe1uf(a0ma-A`b4+IQ3uiaxD`TfRJiwENXlaO~gVUjn|57oLpYexHSlhm8KdTI}3G zp1iuozcrWHZpaa1C#Se@CUJM+!1~NwW9ei0TF|S;rz6^+>6^zgESmP`F#aVb0T+2R zyLFpP^GfJw_BEyYdc)tjpds6lvuM>Axsp;X<(mSJ)5cM=!^4WlvkcAv@9^rem88K-mU{>q?sSea{-7o}PgD^^Qll71?N0 z4Hor2s7Np26c=f}konl+R+D&ZxCk>AITE0MPFt3%a8eNYt47n0C#**Gksxduqanu_ z8M=ygku7l^v*G*anuno%PoY5LwTZn!!!yq_fo$C(FJhyr*;8EG`O|U~?>(DS1Espk4nl`6Ne)P}k-oamG&6B>oR;*K^jm8?-MuwfB3rd! z{>2&dcsh&pFWG47bpkRDKa=>aalsE;N=|MNRM>|asWFT+iAJdgQmoI$RLT0#G-%S_oj;WfB!(vB7_7jvSEOP zo#ST#gY|jw+O0yt93Cq6w$HMpN`x3T4qPz9e~I|}XBbL_#3B^=HyYHUH!+^Rwy&9FO9M>yV(w5 z7xv7${8r!cQnQ+PTs{2O_`f!JM?4XP9I6ZS1OMO}Yb3{X*nr75vZ$V9+FC$l^0Mhv zu^YFbrsMh_^~TLa;5+Aks|}zF&`?tYGrH%usesRS=hXnAV6IX@tG1VdSs$Hb&I~Jr zIbp6I9(_t=ixE01-L{DIA$=3+f1R?f_?A_gv9&*&iO^|OE#}?SS0p-aGQmm-SW{am zFgk9s<%P12BIszETtCy$Ff=5P#33sJB=YP2iOQ&BW0Orv^R2f4m--J_%{GHjiM01l{Hiy%1%mUCvQB|v&S}jY4 z%KNV4z_s^D5Hs41EO+XOpy<-qbC`8KwJZl^h9t8VtD^aTA z=h1JK_HnZGh~(UG(N$=!)i*g>h@hrg(DsTCzLI&*vATb|w!d(8ZAbY5f&|6uQhweL zDK{_+$j7HP$@Vr~=g@jbOj9lpN1c;IodWWc?u#9rL&15nkv+4o%h?oRYiZ^PQ+02C zyLReoIeR)g)eOM={v}VCh{uu$4U%RFMVI7A?Su!B`Nk{P@C+dtg`LtT*$DiOD+p7s z6&$!?)LO`%S;Hh0BIj1cm9t?o4-v>0g8|V&YI;M1&oFiS zmJi4tVOl#N7sZvh*Cn&0&i7BX;Q_U6-%~O8O+z+h`!-b;_){%%Us(&I*2+umTaV4K1sA)rT2~V}K&Wq5-7d%9Q$@;>*=6YzF=J{xRv!=40bB6QjR#C-EaN-kx{ zP4*LF=n-^y6k>^MlZDvbSt|lSl&hOlk%IxTA7n;2<{#=FZhMFAkc-77>MSo~dQIzk zT~kr!lb2j}(w5Qm(c}?4RGgJZtZ6By64C?n@5`G}QzIl5b9{hf8aAV5*826bT@9d{ z0|q2jX!cFduWlk$(q2mI?{z>_prD*oI$5N@q_M0_CV8TzA)%i{1*mR;`cW8?X{4M~ z7={eO1i=gf5&@DfL7=lX6V5|r^QmMynoBBYOP!y&P#RvTjHr;T9}4vM4=NdgS*QhY zCs*Z@W&kH!GJwg77dQ5Tqw-O+?e@G3`IwNax)lG_b^$PYny@RKAlhc=Vm8=iq+~ zT_#&HGE