Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Partitioned heat conduction (G+Smo participant) #604

Draft
wants to merge 4 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 37 additions & 1 deletion partitioned-heat-conduction/README.md
Original file line number Diff line number Diff line change
@@ -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.
---

Expand Down Expand Up @@ -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:
Expand Down Expand Up @@ -73,6 +75,38 @@ If you want to use Nutils or OpenFOAM, use `cd dirichlet/neumann-nutils`, respec
mpirun -n <N_PROC> 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 [email protected]:gismo/gismo.git
cd gismo
mkdir build
```
- Configure G+Smo
```
cmake .. -DGISMO_OPTIONAL="<other submodules>;gsPreCICE"
```
- Build the Example
```
make partitioned-heat-conduction -j <number of threads to use>
```
- Link the compiled executable to the gismo-executable folder within the tutorial directory
```
cd <Your preCICE tutorial folder>/partitioned-heat-conduction/gismo-executable
ln -sf <You G+Smo build folder>/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.
Expand All @@ -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`.
Expand Down
27 changes: 27 additions & 0 deletions partitioned-heat-conduction/dirichlet-gismo/clean.sh
Original file line number Diff line number Diff line change
@@ -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!"

4 changes: 4 additions & 0 deletions partitioned-heat-conduction/dirichlet-gismo/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/bash
set -e -u

../gismo-executable/gismo-executable -c ../precice-config.xml --plot -s 0
Loading
Loading