diff --git a/partitioned-heat-conduction-direct/dirichlet-gismo/clean.sh b/partitioned-heat-conduction-direct/dirichlet-gismo/clean.sh new file mode 100755 index 000000000..5249e1586 --- /dev/null +++ b/partitioned-heat-conduction-direct/dirichlet-gismo/clean.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh +set -e -u + +. ../../tools/cleaning-tools.sh + +clean_gismo . diff --git a/partitioned-heat-conduction-direct/dirichlet-gismo/run.sh b/partitioned-heat-conduction-direct/dirichlet-gismo/run.sh new file mode 100755 index 000000000..ff1992b88 --- /dev/null +++ b/partitioned-heat-conduction-direct/dirichlet-gismo/run.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e -u + +. ../../tools/log.sh +exec > >(tee --append "$LOGFILE") 2>&1 + +partitioned-heat-conduction -s 0 ../precice-config.xml --plot + +close_log diff --git a/partitioned-heat-conduction-direct/neumann-gismo/clean.sh b/partitioned-heat-conduction-direct/neumann-gismo/clean.sh new file mode 100755 index 000000000..5249e1586 --- /dev/null +++ b/partitioned-heat-conduction-direct/neumann-gismo/clean.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh +set -e -u + +. ../../tools/cleaning-tools.sh + +clean_gismo . diff --git a/partitioned-heat-conduction-direct/neumann-gismo/run.sh b/partitioned-heat-conduction-direct/neumann-gismo/run.sh new file mode 100755 index 000000000..8675e081f --- /dev/null +++ b/partitioned-heat-conduction-direct/neumann-gismo/run.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e -u + +. ../../tools/log.sh +exec > >(tee --append "$LOGFILE") 2>&1 + +partitioned-heat-conduction -s 1 ../precice-config.xml --plot + +close_log diff --git a/partitioned-heat-conduction/README.md b/partitioned-heat-conduction/README.md index 5afb3b4df..fa4195e86 100644 --- a/partitioned-heat-conduction/README.md +++ b/partitioned-heat-conduction/README.md @@ -1,7 +1,7 @@ --- title: Partitioned heat conduction permalink: tutorials-partitioned-heat-conduction.html -keywords: FEniCS, Nutils, Heat conduction +keywords: FEniCS, Nutils, G+Smo, Heat conduction summary: We solve a simple heat equation. The domain is partitioned and the coupling is established in a Dirichlet-Neumann fashion. --- @@ -37,6 +37,8 @@ You can either couple a solver with itself or different solvers with each other. * OpenFOAM. This case uses the custom [heatTransfer](https://github.com/precice/tutorials/blob/master/partitioned-heat-conduction/solver-openfoam/heatTransfer.C) solver (find it in `solver-openfoam` and build with `wmake`). Read more details in the [OpenFOAM adapter](https://precice.org/adapter-openfoam-overview.html). +* G+Smo. Inatsll [G+Smo](https://github.com/gismo/gismo). + ## Running the simulation You can find the corresponding `run.sh` script for running the case in the folders corresponding to the participant you want to use: @@ -73,6 +75,38 @@ If you want to use Nutils or OpenFOAM, use `cd dirichlet/neumann-nutils`, respec mpirun -n heat.py -d ``` +The G+Smo-based version of the tutorial offers IsoGeometric Analysis discretization method. To run the example you need to follow the following steps: + +- Download G+Smo and Create a Build Folder +``` +git clone git@github.com:gismo/gismo.git +cd gismo +mkdir build +``` + - Configure G+Smo +``` +cmake .. -DGISMO_OPTIONAL=";gsPreCICE" +``` +- Build the Example +``` +make partitioned-heat-conduction -j +``` +- Link the compiled executable to the gismo-executable folder within the tutorial directory +``` +cd /partitioned-heat-conduction/gismo-executable +ln -sf /bin/partitioned-heat-conduction ./gismo_executable` +``` +- Open two terminals and run +``` + cd dirichlet-gismo + ./run.sh +``` + +``` +cd neumann-gismo +./run.sh +``` + ### 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. @@ -85,6 +119,8 @@ For FEniCS you can visualize the content with paraview by opening the `*.pvd` fi For Nutils, please use the files `Dirichlet-*.vtk` or `Neumann-*.vtk`. Please note that these files contain the temperature as well as the reference solution. +For G+Smo, please use the file `solution.pvd` in both dirichlet-gismo and neumann-gismo directories. + ![Animation of the partitioned heat equation](images/tutorials-partitioned-heat-conduction-FEniCS-movie.gif) Visualization in paraview for `x_c = 1.5`. diff --git a/partitioned-heat-conduction/dirichlet-gismo/clean.sh b/partitioned-heat-conduction/dirichlet-gismo/clean.sh new file mode 100755 index 000000000..ad9a90c93 --- /dev/null +++ b/partitioned-heat-conduction/dirichlet-gismo/clean.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Cleaning script for partitioned-heat-conduction directory + +echo "Cleaning unnecessary files..." + +# Remove precice-profiling directory +if [ -d "precice-profiling" ]; then + rm -rf precice-profiling + echo "Deleted 'precice-profiling' folder." +fi + +# Remove precice-run directory +if [ -d "../precice-run" ]; then + rm -rf ../precice-run + echo "Deleted 'precice-run' folder." +fi + + +# Remove files ending with .pvd, .vts, .vtp, .log, and .txt +for ext in pvd vts vtp log txt; do + find . -type f -name "*.$ext" -exec rm -f {} \; + echo "Deleted all *.$ext files." +done + +echo "Cleaning completed!" + diff --git a/partitioned-heat-conduction/dirichlet-gismo/run.sh b/partitioned-heat-conduction/dirichlet-gismo/run.sh new file mode 100755 index 000000000..2612a8cd0 --- /dev/null +++ b/partitioned-heat-conduction/dirichlet-gismo/run.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -e -u + +../gismo-executable/gismo-executable -c ../precice-config.xml --plot -s 0 diff --git a/partitioned-heat-conduction/images/tutorial-partitioned-heat-conduction-gismo.gif b/partitioned-heat-conduction/images/tutorial-partitioned-heat-conduction-gismo.gif new file mode 100644 index 000000000..b6456897b Binary files /dev/null and b/partitioned-heat-conduction/images/tutorial-partitioned-heat-conduction-gismo.gif differ diff --git a/partitioned-heat-conduction/neumann-gismo/clean.sh b/partitioned-heat-conduction/neumann-gismo/clean.sh new file mode 100755 index 000000000..195480415 --- /dev/null +++ b/partitioned-heat-conduction/neumann-gismo/clean.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Cleaning script for partitioned-heat-conduction directory + +echo "Cleaning unnecessary files..." + +# Remove precice-profiling directory +if [ -d "precice-profiling" ]; then + rm -rf precice-profiling + echo "Deleted 'precice-profiling' folder." +fi + +# Remove files ending with .pvd, .vts, .vtp, .log, and .txt +for ext in pvd vts vtp log txt; do + find . -type f -name "*.$ext" -exec rm -f {} \; + echo "Deleted all *.$ext files." +done + +echo "Cleaning completed!" diff --git a/partitioned-heat-conduction/neumann-gismo/run.sh b/partitioned-heat-conduction/neumann-gismo/run.sh new file mode 100755 index 000000000..6e6bddd53 --- /dev/null +++ b/partitioned-heat-conduction/neumann-gismo/run.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -e -u + +../gismo-executable/gismo-executable -c ../precice-config.xml --plot -s 1