Skip to content

Commit 4ac47a4

Browse files
authored
Merge pull request #91 from precice/develop
Release v202404.0.0
2 parents 4996945 + 8f4fc38 commit 4ac47a4

18 files changed

+133
-145
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242

4343
- name: Run vagrant up
4444
run: |
45-
vagrant up --provider=${{ matrix.provider }}
45+
VAGRANT_DISABLE_VBOXSYMLINKCREATE=1 vagrant up --provider=${{ matrix.provider }}
4646
4747
- name: Package Vagrant box
4848
run: vagrant package --base "preCICE-VM" --output preCICE.box

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
.vagrant
2-
vagrant
2+
vagrant
3+
4+
# Editors
5+
settings.json

README.md

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ You can afterwards also see and manage the produced VM in VirtualBox.
2525
A few things you may need:
2626

2727
- The username and password are `vagrant`/`vagrant`
28-
- The keyboard layout is US English (QWERTY). You can change this in [`install-basics.sh`](./install-basics.sh) or through the keyboard setting shortcut on `~/Desktop`.
28+
- The keyboard layout is US English (QWERTY). You can change this in [`install-basics.sh`](./provisioning/install-basics.sh) or through the keyboard setting shortcut on `~/Desktop`.
2929
- Find scripts to install additional software on `~/Desktop/shared`.
3030

3131
### What else can I do?
@@ -40,25 +40,29 @@ A few things you may need:
4040

4141
## What is included?
4242

43-
This box is based on the [generic/ubuntu2004](https://github.com/lavabit/robox/tree/master/scripts/ubuntu2004) base box and installs:
43+
This box is based on the ~~[generic/ubuntu2004](https://github.com/lavabit/robox/tree/master/scripts/ubuntu2004)~~ [bento/ubuntu-20.04](https://github.com/chef/bento) base box and installs:
4444

4545
- Xubuntu-core (Xfce desktop environment) and related tools
4646
- VirtualBox guest additions
4747
- Terminator (a nice split-window terminal emulator, find it in `Applications > System`)
4848
- Git, CMake, ccmake
4949
- Editors: nano, vim, gedit
50-
- preCICE latest for the master branch
51-
- preCICE config visualizer (master)
50+
- Diff viewer: meld
51+
- preCICE latest from the master branch (built in release-with-debug-info mode)
52+
- preCICE config visualizer with its GUI (master)
5253
- preCICE Python bindings (PIP)
5354
- preCICE Julia bindings (Pkg)
54-
- OpenFOAM v2112 and the OpenFOAM-preCICE adapter (master)
55+
- preCICE Rust bindings (Cargo)
56+
- preCICE FMI Runner (PIP)
57+
- preCICE Micro Manager (PIP)
58+
- OpenFOAM v2312 and the OpenFOAM-preCICE adapter (master)
5559
- deal.II 9.3 from the official backports and the deal.II-preCICE adapter (master)
56-
- CalculiX 2.19 from source and the CalculiX-preCICE adapter (master)
60+
- CalculiX 2.20 from source and the CalculiX-preCICE adapter (master)
5761
- FEniCS latest from the FEniCS PPA and the FEniCS-preCICE adapter (PIP)
58-
- Nutils latest from PIP
59-
- SU2 6.0.0 and the SU2-preCICE adapter (master)
62+
- SU2 7.5.1 and the SU2-preCICE adapter (master)
6063
- code_aster 14.6 and the code_aster-preCICE adapter (master)
61-
- DUNE 2.8 and the experimental DUNE-preCICE adapter (master)
64+
- DUNE 2.9.1 and the experimental DUNE-preCICE adapter (main)
65+
- DuMuX 3.8 and the DuMuX-preCICE adapter (v2.0.0)
6266
- ASTE (master)
6367
- Paraview from APT
6468
- Gnuplot
@@ -117,6 +121,11 @@ vagrant box remove test-box
117121
If you require a more responsive experience, lower overhead, or exotic features such as GPU pass through, then the `libvirt` vagrant box is for you.
118122
This allows you to run the vagrant box via libvirt and QEMU as a Kernerl Virtual Machine (KVM).
119123

124+
> Note
125+
> The libvirt variant does not work with the `bento/ubuntu-20.04` base image, but also the VirtualBox variant does not at the moment work with the `generic/ubuntu2004` image.
126+
> Change the base image in the beginning of the Vagrantfile if you need this feature.
127+
> See https://github.com/precice/vm/issues/83 for details.
128+
120129
To use this box, first install the vagrant plugin `vagrant-libvirt` following the [official installation instructions](https://github.com/vagrant-libvirt/vagrant-libvirt#installation).
121130
Then you follow the normal usage instructions above, but you need to tell vagrant to use the `libvirt` box by passing one additional option:
122131
```

Vagrantfile

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
Vagrant.configure("2") do |config|
55
# The generic/ images support virtualbox as well as libvirt and hyperv.
66
# This allows us to create performance oriented images for Linux (libvirt) and Windows (hyperv).
7-
config.vm.box = "generic/ubuntu2004"
7+
# However, it does not build: https://github.com/precice/vm/issues/83
8+
# config.vm.box = "generic/ubuntu2004"
9+
config.vm.box = "bento/ubuntu-20.04"
810

911
# We don't want the box to automatically update every time it starts.
1012
# We can instead handle updates internally, without destroying the machine.
@@ -46,11 +48,11 @@ Vagrant.configure("2") do |config|
4648
# Install solvers, adapters, and related tools
4749
config.vm.provision "shell", path: "provisioning/install-config-visualizer.sh", privileged: false
4850
config.vm.provision "shell", path: "provisioning/install-openfoam.sh", privileged: false
49-
config.vm.provision "file", source: "provisioning/prebuilt/swak4Foam/swak4Foam.tar.gz", destination: "~/OpenFOAM/vagrant-v2206/platforms/linux64GccDPInt32Opt/swak4Foam.tar.gz"
5051
config.vm.provision "shell", path: "provisioning/install-dealii.sh", privileged: false
5152
config.vm.provision "shell", path: "provisioning/install-calculix.sh", privileged: false
5253
config.vm.provision "shell", path: "provisioning/install-fenics.sh", privileged: false
53-
config.vm.provision "shell", path: "provisioning/install-nutils.sh", privileged: false
54+
config.vm.provision "shell", path: "provisioning/install-fmiprecice.sh", privileged: false
55+
config.vm.provision "shell", path: "provisioning/install-micro-manager.sh", privileged: false
5456
config.vm.provision "shell", path: "provisioning/install-su2.sh", privileged: false
5557
config.vm.provision "shell", path: "provisioning/install-code_aster.sh", privileged: false
5658
config.vm.provision "shell", path: "provisioning/install-dune.sh", privileged: false

provisioning/.alias

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
# preCICE config visualizer
22
function preciceToPNG(){
3-
cat "${1:-precice-config.xml}" | precice-config-visualizer | dot -Tpng > precice-config.png
3+
precice-config-visualizer -o precice-config.png "${1:-precice-config.xml}"
44
}
55

66
function preciceToPDF(){
7-
cat "${1:-precice-config.xml}" | precice-config-visualizer | dot -Tpdf > precice-config.pdf
7+
precice-config-visualizer -o precice-config.pdf "${1:-precice-config.xml}"
88
}
99

1010
function preciceToSVG(){
11-
cat "${1:-precice-config.xml}" | precice-config-visualizer | dot -Tsvg > precice-config.svg
11+
precice-config-visualizer -o precice-config.svg "${1:-precice-config.xml}"
1212
}

provisioning/install-basics.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ sudo apt-get upgrade -qy
1212
# Install the Xfce desktop environment and basic applications
1313
sudo apt-get install -y xubuntu-core^
1414
sudo apt-get install -y thunar xfce4-terminal terminator bash-completion tree atril firefox firefox-locale-en baobab catfish
15+
sudo apt-get install -y python3-dev pipx python-is-python3 python3-venv
1516

1617
# Setup auto-login for the graphical session
1718
# Disabled due to https://github.com/precice/vm/issues/40
Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
11
#!/usr/bin/env bash
22
set -ex
33

4-
# Get the config-visualizer from GitHub
5-
if [ ! -d "config-visualizer/" ]; then
6-
git clone --depth=1 --branch master https://github.com/precice/config-visualizer.git
7-
fi
8-
pip3 install --user -e config-visualizer
4+
# Install CLI dependencies
5+
sudo apt-get install -y graphviz
6+
# Install GUI depedencies
7+
sudo apt-get install -y build-essential pkg-config python3-dev libcairo2-dev libgirepository1.0-dev gir1.2-gtk-3.0
8+
9+
# Get the config-visualizer from PIP
10+
PRECICE_CONFIG_VISUALIZER_VERSION=1.1.3
11+
PRECICE_CONFIG_VISUALIZER_GUI_VERSION=0.1.0
12+
pipx install --force precice-config-visualizer==${PRECICE_CONFIG_VISUALIZER_VERSION}
13+
pipx install --force precice-config-visualizer-gui==${PRECICE_CONFIG_VISUALIZER_GUI_VERSION}
914

1015
# Add the config-visualizer to PATH
11-
echo "export PATH=\"\${HOME}/config-visualizer/bin:\${PATH}\"" >>~/.bashrc
16+
# shellcheck disable=SC2016
17+
echo 'export PATH="${HOME}/.local/bin:${PATH}"' >> ~/.bashrc
1218

13-
# By default, there is no `python` executable, there is only `python3`,
14-
# which causes issues to the config-visualizer
15-
sudo apt-get install -y python-is-python3
19+
# Add the GUI in the apps menu
20+
mkdir -p ~/.local/share/applications ~/.local/share/icons
1621

17-
# Install graphviz, which provides dot, an almost required package to make this useful
18-
sudo apt-get install -y graphviz
22+
CV_LOC_SHARE=~/.local/pipx/venvs/precice-config-visualizer-gui==${PRECICE_CONFIG_VISUALIZER_GUI_VERSION}/share
23+
cp $CV_LOC_SHARE/applications/org.precice.config_visualizer.desktop ~/.local/share/applications/
24+
cp $CV_LOC_SHARE/icons/hicolor/scalable/apps/org.precice.config_visualizer.svg ~/.local/share/icons/

provisioning/install-devel.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ set -ex
33

44
sudo apt-get install -y build-essential git cmake cmake-curses-gui
55

6+
# For the Rust bindings of preCICE, installed by the elastic-tube-1d tutorial
7+
sudo apt-get install -y cargo
8+
69
sudo apt-get install -y nano vim gedit
710

11+
sudo apt-get install -y meld
12+
813
sudo apt-get install -y ipython3

provisioning/install-dune.sh

Lines changed: 40 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,89 @@
11
#!/usr/bin/env bash
22
set -ex
33

4-
# Make a folder to collect all DUNE-related code (-p to allow re-provisioning)
5-
mkdir -p dune && cd dune
4+
# Make a folder to collect all DUNE-related code
5+
mkdir -p dune-dumux && cd dune-dumux
66

7-
# Get required DUNE modules
7+
# Modules used by DUNE and DuMux
8+
# While the installdumux.py script clones these as well,
9+
# we explicitly clone them to control the versions.
810
if [ ! -d "dune-common/" ]; then
9-
git clone --branch v2.8.0 --depth=1 https://gitlab.dune-project.org/core/dune-common.git
11+
git clone --depth 1 --branch v2.9.1 https://gitlab.dune-project.org/core/dune-common.git
1012
fi
1113

1214
if [ ! -d "dune-istl/" ]; then
13-
git clone --branch v2.8.0 --depth=1 https://gitlab.dune-project.org/core/dune-istl.git
15+
git clone --depth 1 --branch v2.9.1 https://gitlab.dune-project.org/core/dune-istl.git
1416
fi
1517

1618
if [ ! -d "dune-localfunctions/" ]; then
17-
git clone --branch v2.8.0 --depth=1 https://gitlab.dune-project.org/core/dune-localfunctions.git
19+
git clone --depth 1 --branch v2.9.1 https://gitlab.dune-project.org/core/dune-localfunctions.git
1820
fi
1921

2022
if [ ! -d "dune-grid/" ]; then
21-
git clone --branch v2.8.0 --depth=1 https://gitlab.dune-project.org/core/dune-grid.git
23+
git clone --depth 1 --branch v2.9.1 https://gitlab.dune-project.org/core/dune-grid.git
2224
fi
2325

2426
if [ ! -d "dune-geometry/" ]; then
25-
git clone --branch v2.8.0 --depth=1 https://gitlab.dune-project.org/core/dune-geometry.git
27+
git clone --depth 1 --branch v2.9.1 https://gitlab.dune-project.org/core/dune-geometry.git
2628
fi
2729

28-
if [ ! -d "dune-functions/" ]; then
29-
git clone --branch v2.8.0 --depth=1 https://gitlab.dune-project.org/staging/dune-functions.git
30+
if [ ! -d "dune-foamgrid/" ]; then
31+
# The missing v in the tag in this module originates from the project itself
32+
git clone --depth 1 --branch 2.9.1 https://gitlab.dune-project.org/extensions/dune-foamgrid.git
3033
fi
3134

32-
if [ ! -d "dune-uggrid/" ]; then
33-
git clone --branch v2.8.0 --depth=1 https://gitlab.dune-project.org/staging/dune-uggrid.git
35+
if [ ! -d "dune-functions/" ]; then
36+
git clone --depth 1 --branch v2.9.1 https://gitlab.dune-project.org/staging/dune-functions.git
3437
fi
3538

3639
if [ ! -d "dune-typetree/" ]; then
37-
git clone --branch v2.8.0 --depth=1 https://gitlab.dune-project.org/staging/dune-typetree.git
40+
git clone --depth 1 --branch v2.9.1 https://gitlab.dune-project.org/staging/dune-typetree.git
3841
fi
3942

40-
if [ ! -d "dune-foamgrid/" ]; then
41-
git clone --branch releases/2.8 --depth=1 https://gitlab.dune-project.org/extensions/dune-foamgrid.git
43+
if [ ! -d "dune-uggrid/" ]; then
44+
git clone --depth 1 --branch v2.9.1 https://gitlab.dune-project.org/staging/dune-uggrid.git
4245
fi
4346

44-
# Get the dune-elastodynamics module (solid solver)
47+
# Get the dune-elastodynamics module (solid solver for the plain dune adapter)
4548
if [ ! -d "dune-elastodynamics/" ]; then
46-
git clone --branch master --depth=1 https://github.com/maxfirmbach/dune-elastodynamics.git
49+
git clone --depth 1 --branch master https://github.com/maxfirmbach/dune-elastodynamics.git
4750
fi
4851
(
4952
cd dune-elastodynamics
5053
git pull
5154
)
5255

53-
# Get the DUNE-preCICE adapter
56+
# Get the plain DUNE-preCICE adapter
5457
if [ ! -d "dune-adapter/" ]; then
55-
git clone --branch main --depth=1 https://github.com/precice/dune-adapter.git
58+
git clone --depth 1 --branch main https://github.com/precice/dune-adapter.git
5659
fi
5760
(
5861
cd dune-adapter/dune-precice
5962
git pull
6063
)
6164

62-
# Build all the DUNE and DUNE-preCICE related modules
63-
DUNE_CONTROL_PATH=~/dune ./dune-common/bin/dunecontrol all
65+
./dune-common/bin/dunecontrol all
6466

65-
# Set the DUNE_CONTROL_PATH (DUNE recursively finds modules in this directory)
66-
echo "export DUNE_CONTROL_PATH=\"\${HOME}/dune\"" >> ~/.bashrc
67+
# Get DuMux and the DuMux-preCICE adapter
68+
if [ ! -d "dumux/" ]; then
69+
git clone --depth 1 --branch releases/3.8 https://git.iws.uni-stuttgart.de/dumux-repositories/dumux.git
70+
fi
6771

68-
# Copy the built example code to the tutorials
69-
cp ~/dune/dune-adapter/dune-precice-howto/build-cmake/examples/dune-perpendicular-flap ~/tutorials/perpendicular-flap/solid-dune
72+
# Build DuMux
73+
CMAKE_FLAGS="$CMAKE_FLAGS -DCMAKE_DISABLE_FIND_PACKAGE_Kokkos=TRUE" ./dune-common/bin/dunecontrol --only=dumux all
74+
75+
if [ ! -d "dumux-adapter/" ]; then
76+
git clone --depth 1 --branch v2.0.0 https://github.com/precice/dumux-adapter.git
77+
fi
7078

71-
# Install dune-fem from PIP
79+
# Build the DuMux-preCICE adapter
80+
CMAKE_FLAGS="$CMAKE_FLAGS -DCMAKE_DISABLE_FIND_PACKAGE_Kokkos=TRUE" ./dune-common/bin/dunecontrol --only=dumux-precice all
7281

73-
pip3 install --user dune-fem==2.8
82+
# Set the DUNE_CONTROL_PATH (DUNE recursively finds modules in this directory)
83+
echo "export DUNE_CONTROL_PATH=\"\${HOME}/dune-dumux\"" >> ~/.bashrc
84+
85+
# Copy the built example code to the tutorials
86+
cp ~/dune-dumux/dune-adapter/dune-precice-howto/build-cmake/examples/dune-perpendicular-flap ~/tutorials/perpendicular-flap/solid-dune
7487

7588
# We are done with DUNE, let's do back home
7689
cd ~

provisioning/install-fmiprecice.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/usr/bin/env bash
2+
set -ex
3+
4+
# Install the FMI runner from PIP
5+
pip3 install --user fmiprecice

0 commit comments

Comments
 (0)