Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
965b3bb
Initial progress towards solid-mfem.
j-signorelli Sep 16, 2026
cf91c76
Almost finish time operator
j-signorelli Sep 17, 2026
854060b
style
j-signorelli Sep 17, 2026
5abee0c
Finish heat operator
j-signorelli Sep 17, 2026
c513ee4
Finish implementation. Need to check, verify, add glvis, and finalize.
j-signorelli Sep 18, 2026
2ea62f4
Add missing newline
j-signorelli Sep 18, 2026
0a74a69
Simplify
j-signorelli Sep 18, 2026
c659b83
Update desc
j-signorelli Sep 18, 2026
fa80ecc
Add run and clean scripts + pvtu to gitignore
j-signorelli Sep 18, 2026
98a599d
Finalize implementation
j-signorelli Sep 18, 2026
10627de
Add MFEM to plot final interface
j-signorelli Sep 18, 2026
11fc6f4
Fix heat flux, add GLVis, but something is wrong.
j-signorelli Sep 18, 2026
c213109
use same grid as nutils. Still some bug.
j-signorelli Sep 18, 2026
5cbe4b2
include 0 in duplication check
j-signorelli Sep 18, 2026
2fff96d
Finish completed + verified implementation
j-signorelli Sep 19, 2026
854a722
Finalize.
j-signorelli Sep 19, 2026
c0c98ec
Complete (almost) all checklist requirements
j-signorelli Sep 19, 2026
18704be
Merge branch 'develop' into solid-mfem-fohp
j-signorelli Sep 19, 2026
54954dd
Set nx and ny as command line arguments
j-signorelli Sep 19, 2026
4257c69
minor doc improvement
j-signorelli Sep 20, 2026
8958c42
minor formatting improvement
j-signorelli Sep 20, 2026
a7425f7
reduce version requirement
j-signorelli Sep 21, 2026
17dbd57
Merge branch 'develop' into solid-mfem-fohp
MakisH Oct 1, 2026
a7d2015
Add MFEM to the system tests
MakisH Oct 1, 2026
19cc6dc
Add missing component to metadata.yaml
MakisH Oct 1, 2026
4020ec1
Fix ubuntu package name
MakisH Oct 1, 2026
c44e34b
Merge branch 'develop' into solid-mfem-fohp
MakisH Oct 1, 2026
4d77db0
Require 4.9 and do not require c++17
j-signorelli Oct 1, 2026
5874b43
Merge branch 'develop' into solid-mfem-fohp
MakisH Oct 2, 2026
5d6a66b
Base mfem on Ubuntu 26.04
MakisH Oct 2, 2026
ad094d8
Modify .gitignore
MakisH Oct 2, 2026
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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ out
output/
*.vtk
*.vtu
*.pvtu
*.pvd
*.series

Expand Down Expand Up @@ -125,6 +126,7 @@ pointData.csv

# FEniCS covered by .vtk
# Nutils covered by .vtk
# MFEM covered by .pvtu

# System tests
runs/
Expand Down
1 change: 1 addition & 0 deletions changelog-entries/928.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Added `flow-over-heated-plate/solid-mfem` tutorial for parallel builds of MFEM
2 changes: 2 additions & 0 deletions flow-over-heated-plate/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ Solid participant:

* Dune-Fem. For more information, have a look at the [official documentation of Dune-Fem](https://www.dune-project.org/sphinx/dune-fem/). The `run.sh` script installs the solver from [PyPI](https://pypi.org/project/dune-fem/) into a Python virtual environment. Please note that Dune-Fem uses just-in-time compilation: The first time you run the solver script, it will take some time.

* MFEM. For more information, please refer to the [official MFEM website](https://mfem.org/). Note that MFEM must be built with double precision and with MPI for this tutorial.
Comment thread
MakisH marked this conversation as resolved.

It is also possible to use CalculiX as solid solver. In that case, two coupling meshes are needed: CalculiX read/writes temperatures on nodes, but read/writes heat-fluxes on face centers. This requires some adaptation of the `precice-config.xml` file, and [a separate tutorial](tutorials-flow-over-heated-plate-two-meshes.html) has been designed for it.

## Running the Simulation
Expand Down
7 changes: 6 additions & 1 deletion flow-over-heated-plate/metadata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@ cases:
run: ./run.sh
component: fenicsx-adapter

solid-mfem:
participant: Solid
directory: ./solid-mfem
run: ./run.sh
component: mfem-adapter

solid-nutils:
participant: Solid
directory: ./solid-nutils
Expand All @@ -50,4 +56,3 @@ cases:
component: openfoam-adapter



Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ def main():
'fenics': 'Fluid-FEniCS',
'openfoam': 'Fluid-OpenFOAM',
'nutils': 'Fluid-Nutils',
'dunefem': 'Fluid-DuneFem'}
'dunefem': 'Fluid-DuneFem',
'mfem': 'Fluid-MFEM'}
styles = [':', '-', '--']
colors = ['r', 'b', 'g', 'k']

Expand Down
10 changes: 10 additions & 0 deletions flow-over-heated-plate/solid-mfem/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
cmake_minimum_required(VERSION 3.13)

project(solid-mfem LANGUAGES CXX)

find_package(MFEM 4.9 REQUIRED)
find_package(precice 3 REQUIRED)

add_executable(solid solid.cpp)
target_link_libraries(solid PRIVATE mfem precice::precice)
target_compile_features(solid PUBLIC)
11 changes: 11 additions & 0 deletions flow-over-heated-plate/solid-mfem/clean.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/usr/bin/env sh
set -e -u

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$SCRIPT_DIR"

. ../../tools/cleaning-tools.sh

rm -rvf ./ParaView/
clean_precice_logs .
clean_case_logs .
15 changes: 15 additions & 0 deletions flow-over-heated-plate/solid-mfem/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/usr/bin/env bash
set -e -u

. ../../tools/log.sh
exec > >(tee --append "$LOGFILE") 2>&1

if [ ! -d build ]; then
mkdir build
cmake -S . -B build
cmake --build build
fi

./build/solid -c ../precice-config.xml

close_log
Loading
Loading