Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
linuxbin
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Locked files
Deploy
Releases
Model registry
Analyze
Contributor analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Aerospace and Mechanical Engineering
linuxbin
Commits
3cd7609a
Commit
3cd7609a
authored
3 years ago
by
Boman Romain
Browse files
Options
Downloads
Patches
Plain Diff
update CUPyDO script
parent
43eaaf6a
Branches
crutzen
Branches containing commit
Tags
v3038
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
build_CUPyDO.sh
+459
-117
459 additions, 117 deletions
build_CUPyDO.sh
with
459 additions
and
117 deletions
build_CUPyDO.sh
+
459
−
117
View file @
3cd7609a
#!/bin/bash
# build CUPyDO and all related solvers / run ctest
#
# usage: build_CUPyDO.sh -b -j 2 : build (using 2 cores)
# build_CUPyDO.sh -b -t : build and test
# build_CUPyDO.sh -b -t -q : build and test (batch mode)
function
build_CUPyDO
()
# profile should be sourced if in batch mode
source
~/.profile
# bash: enable more errors
set
-eu
GEOGEN_VERSION
=
2.0.0
SOL2_VERSION
=
3.2.2
MODALI_VERSION
=
v2.0
NATIVESOLID_VERSION
=
romain
# v1.1
PYBEAM_VERSION
=
master
VLM_VERSION
=
v2.0
SU2_VERSION
=
fix_wrap_strong
PFEM3D_VERSION
=
v2.0.0
# WAVES_VERSION=v2.2.2 # AttributeError: module 'flow' has no attribute 'F0PsPhiInf'
WAVES_VERSION
=
v2.1.1
PFEM_VERSION
=
v1.19
METAFOR_VERSION
=
v3492
CUPYDO_VERSION
=
lacroix
# Gmsh
# https://gmsh.info/
function
get_last_Gmsh
()
{
# clone/build CUPyDO
if
[
!
-d
CUPyDO
]
;
then
git clone git@github.com:ulgltas/CUPyDO.git
if
[
!
-d
Gmsh
]
;
then
echo
"Gmsh: retrieving gmsh-git-Linux64-sdk.tgz"
wget
-q
https://gmsh.info/bin/Linux/gmsh-git-Linux64-sdk.tgz
tar
-xzf
gmsh-git-Linux64-sdk.tgz
mv
gmsh-git-Linux64-sdk Gmsh
rm
gmsh-git-Linux64-sdk.tgz
else
echo
"Gmsh: found"
fi
}
cd
CUPyDO
git pull
git checkout pfem_compatibility_update
git pull
if
[
-d
build
]
;
then
rm
-rf
build
# geoGen (for VLM)
# https://github.com/acrovato/geoGen
# full python
function
get_geoGen
()
{
if
[
!
-d
geoGen
]
;
then
echo
"geoGen: retrieving geoGen
${
GEOGEN_VERSION
}
"
wget
-q
https://github.com/acrovato/geoGen/archive/refs/tags/v
${
GEOGEN_VERSION
}
.tar.gz
tar
-xf
v
${
GEOGEN_VERSION
}
.tar.gz
mv
geoGen-
${
GEOGEN_VERSION
}
geoGen
rm
v
${
GEOGEN_VERSION
}
.tar.gz
else
echo
"geoGen: found"
fi
mkdir
build
cd
build
cmake ..
make
-j
6
make
install
cd
../..
}
function
build_waves
()
# sol2 (for PFEM3D)
# https://github.com/ThePhD/sol2
function
build_sol2
()
#
{
# clone/build waves
if
[
!
-d
waves
]
;
then
git clone git@gitlab.uliege.be:am-dept/waves.git
if
[
!
-d
sol2
]
;
then
echo
"sol2: retrieving sol2
${
SOL2_VERSION
}
"
SOL2_INSTALL_PREFIX
=
`
pwd
`
/sol2
wget
-q
https://github.com/ThePhD/sol2/archive/refs/tags/v
${
SOL2_VERSION
}
.tar.gz
tar
-xf
v
${
SOL2_VERSION
}
.tar.gz
rm
v
${
SOL2_VERSION
}
.tar.gz
echo
"sol2: building"
cd
sol2-
${
SOL2_VERSION
}
if
[
-d
build
]
;
then
rm
-rf
build
fi
mkdir
build
cd
build
cmake ..
-DCMAKE_INSTALL_PREFIX
=
${
SOL2_INSTALL_PREFIX
}
#>sol2.cmake.log
cmake
--build
.
--target
install
--
-j
${
NCORES
}
#>sol2.build.log
cd
../..
rm
-rf
sol2-
${
SOL2_VERSION
}
else
echo
"sol2: found"
fi
}
# modali: Modal integrator for fluid-structure computations
# https://github.com/ulgltas/modali
# full python - no build
cd
waves
if
[
-d
build
]
;
then
rm
-rf
build
function
build_modali
()
{
if
[
!
-d
modali
]
;
then
echo
"modali: cloning modali
${
MODALI_VERSION
}
"
git
-c
advice.detachedHead
=
false
\
clone
--quiet
\
--branch
${
MODALI_VERSION
}
\
git@github.com:ulgltas/modali.git
else
echo
"modali: already cloned"
fi
mkdir
build
cd
build
cmake
-DUSE_PY3
=
OFF
-C
../CMake/disable-trilinos.cmake ..
make
-j
6
cd
../..
}
function
build_PFEM
()
# NativeSolid (RBM?)
# https://github.com/ulgltas/NativeSolid
function
build_NativeSolid
()
{
# clone/build PFEM
if
[
!
-d
PFEM
]
;
then
git clone git@gitlab.uliege.be:am-dept/PFEM.git
if
[
!
-d
NativeSolid
]
;
then
echo
"NativeSolid: cloning NativeSolid
${
NATIVESOLID_VERSION
}
"
git
-c
advice.detachedHead
=
false
\
clone
--quiet
git@github.com:ulgltas/NativeSolid.git
\
--branch
${
NATIVESOLID_VERSION
}
else
echo
"NativeSolid: already cloned"
fi
cd
PFEM
git pull
git checkout reorganize_schemes_and_algos
git pull
if
[
-d
build
]
;
then
rm
-rf
build
# requires lapacke/cblas
# lapacke: (sudo apt install liblapacke-dev)
# cblas/blas: (sudo apt-get install libopenblas-dev)
if
[
!
-f
./NativeSolid/bin/TestCVector
]
;
then
echo
"NativeSolid: building"
cd
NativeSolid
if
[
-d
build
]
;
then
rm
-rf
build
fi
mkdir
build
cd
build
cmake
-DCMAKE_BUILD_TYPE
=
Release
-Wno-dev
..
#>NativeSolid.cmake.log
make
-j
${
NCORES
}
#>NativeSolid.make.log
cd
../..
else
echo
"NativeSolid: already built"
fi
mkdir
build
cd
build
cmake ..
make
-j
6
cd
../..
}
# pyBeam:
# https://github.com/pyBeam/pyBeam
# requires meson/ninja: sudo apt install meson
function
build_
NativeSolid
()
function
build_
pyBeam
()
{
# clone/build NativeSolid
if
[
!
-d
NativeSolid
]
;
then
git clone git@github.com:ulgltas/NativeSolid.git
if
[
!
-d
pyBeam
]
;
then
echo
"pyBeam: cloning pyBeam"
git
-c
advice.detachedHead
=
false
\
clone
--depth
1
--recursive
\
git@github.com:pyBeam/pyBeam.git
\
--branch
${
PYBEAM_VERSION
}
ver
=
$(
python3
-V
2>&1 |
sed
's/.* \([0-9]\).\([0-9]\).*/\1\2/'
)
if
[
"
$ver
"
-gt
"37"
]
;
then
# fix meson build file for python3.8
# see https://github.com/mesonbuild/meson/issues/5629
sed
-i
"s/dependency('python3')/dependency('python3-embed')/g"
\
pyBeam/meson.build
fi
else
echo
"pyBeam: already cloned"
fi
cd
NativeSolid
if
[
-d
build
]
;
then
rm
-rf
build
if
[
!
-f
pyBeam/build/bin/pyBeam.py
]
;
then
echo
"pyBeam: building"
cd
pyBeam
if
[
-d
build
]
;
then
rm
-rf
build
fi
mkdir
build
meson build
--prefix
=
$PWD
/build
ninja
-C
build
install
cd
..
else
echo
"pyBeam: already installed"
fi
mkdir
build
cd
build
cmake ..
make
-j
6
cd
../..
}
# VLM
# https://github.com/ulgltas/VLM
function
build_
modali
()
function
build_
VLM
()
{
# clone modali
if
[
!
-d
modali
]
;
then
git clone git@github.com:ulgltas/modali.git
if
[
!
-d
VLM
]
;
then
echo
"VLM: cloning VLM
${
VLM_VERSION
}
"
git
-c
advice.detachedHead
=
false
\
clone
--quiet
\
--branch
${
VLM_VERSION
}
\
git@github.com:ulgltas/VLM.git
else
echo
"VLM: already cloned"
fi
if
[
!
-f
VLM/bin/VLM
]
;
then
echo
"VLM: building"
cd
VLM
if
[
-d
build
]
;
then
rm
-rf
build
fi
mkdir
build
cd
build
cmake
-Wno-dev
-DCMAKE_BUILD_TYPE
=
Release
-DPYTHON_WRAPPER
=
ON ..
make
-j
${
NCORES
}
make
install
cd
../..
else
echo
"VLM: already built"
fi
}
# SU2
# https://github.com/ulgltas/SU2
function
build_SU2
()
{
if
[
!
-d
SU2
]
;
then
echo
"SU2: cloning SU2"
git clone
--depth
1 git@github.com:ulgltas/SU2.git
\
--branch
${
SU2_VERSION
}
else
echo
"SU2: srcs found"
fi
if
[
!
-f
SU2/build/bin/SU2_CFD
]
;
then
echo
"SU2: building"
cd
SU2
export
CXXFLAGS
=
"-O3"
python3 meson.py setup build
\
-Denable-pywrapper
=
true
\
-Denable-cgns
=
false
\
-Denable-tecio
=
false
\
-Dwith-mpi
=
disabled
\
-Denable-tests
=
false
\
-Denable-autodiff
=
true
\
--prefix
=
$PWD
/build
./ninja
-C
build
install
cd
..
else
echo
"SU2: already installed"
fi
}
# PFEM3D
# https://github.com/ImperatorS79/PFEM3D
# sudo apt install libcgal-dev liblua5.3-dev
#
# ctest runtime: needs slpp (lua parser for python)
# https://github.com/SirAnthony/slpp
# https://pypi.org/project/SLPP/
# => sudo pip3 install slpp
function
build_PFEM3D
()
{
if
[
!
-d
PFEM3D
]
;
then
echo
"PFEM3D: cloning PFEM3D
${
PFEM3D_VERSION
}
"
git
-c
advice.detachedHead
=
false
\
clone
--quiet
\
--branch
${
PFEM3D_VERSION
}
\
git@github.com:ImperatorS79/PFEM3D.git
else
echo
"PFEM3D: already cloned"
fi
if
[
!
-f
PFEM3D/build/bin/pfem
]
;
then
echo
"PFEM3D: building"
BASE
=
`
pwd
`
export
GMSH
=
${
BASE
}
/Gmsh
export
Sol2_DIR
=
${
BASE
}
/sol2/lib/cmake/sol2/
export
PATH
=
${
GMSH
}
/bin:
${
GMSH
}
/lib:
${
PATH
}
export
INCLUDE
=
${
GMSH
}
/include:
${
INCLUDE
}
export
LIB
=
${
GMSH
}
/lib:
${
LIB
}
cd
PFEM3D
if
[
-d
build
]
;
then
rm
-rf
build
fi
mkdir
build
cd
build
cmake
-Wno-dev
-DCMAKE_BUILD_TYPE
=
Release
\
-DUSE_SWIG
=
1
-DBUILD_TESTING
=
1 ..
make
-j
${
NCORES
}
cp
${
BASE
}
/Gmsh/lib/libgmsh.so bin/
cd
../..
else
echo
"PFEM3D: already built"
fi
}
# Waves
# https://gitlab.uliege.be/am-dept/waves
function
build_waves
()
{
if
[
!
-d
waves
]
;
then
echo
"waves: cloning waves
${
WAVES_VERSION
}
"
git
-c
advice.detachedHead
=
false
\
clone
--quiet
\
--branch
${
WAVES_VERSION
}
\
git@gitlab.uliege.be:am-dept/waves.git
else
echo
"waves: already cloned"
fi
if
[
!
-f
waves/build/bin/libwaves.so
]
;
then
echo
"waves: building"
cd
waves
if
[
-d
build
]
;
then
rm
-rf
build
fi
mkdir
build
cd
build
cmake
-Wno-dev
-C
../CMake/disable-trilinos.cmake ..
make
-j
${
NCORES
}
cd
../..
else
echo
"waves: already built"
fi
}
# PFEM:
# https://gitlab.uliege.be/am-dept/PFEM
function
build_PFEM
()
{
if
[
!
-d
PFEM
]
;
then
echo
"PFEM: cloning PFEM
${
PFEM_VERSION
}
"
git
-c
advice.detachedHead
=
false
\
clone
--quiet
\
--branch
${
PFEM_VERSION
}
\
git@gitlab.uliege.be:am-dept/PFEM.git
else
echo
"PFEM: already cloned"
fi
if
[
!
-f
PFEM/build/bin/libpfem.so
]
;
then
echo
"PFEM: building"
cd
PFEM
if
[
-d
build
]
;
then
rm
-rf
build
fi
mkdir
build
cd
build
cmake
-Wno-dev
..
make
-j
${
NCORES
}
cd
../..
else
echo
"PFEM: already built"
fi
}
# Metafor
function
build_Metafor
()
{
if
[
!
-d
Metafor
]
;
then
...
...
@@ -98,86 +358,168 @@ function build_Metafor()
# clone
if
[
!
-d
linuxbin
]
;
then
echo
"Metafor/linuxbin: cloning linuxbin"
git clone git@gitlab.uliege.be:am-dept/linuxbin.git
fi
else
echo
"Metafor/linuxbin: already cloned"
fi
if
[
!
-d
oo_meta
]
;
then
git clone
--depth
=
10 git@gitlab.uliege.be:am-dept/MN2L/oo_meta.git
echo
"Metafor/oo_meta: cloning oo_meta
${
METAFOR_VERSION
}
"
git
-c
advice.detachedHead
=
false
\
clone
--recursive
--depth
=
1
\
--branch
${
METAFOR_VERSION
}
\
git@gitlab.uliege.be:am-dept/MN2L/oo_meta.git
else
echo
"Metafor/oo_meta: already cloned"
fi
# build
if
[
-d
oo_metaB
]
;
then
rm
-rf
oo_metaB
if
[
!
-f
oo_metaB/bin/Metafor
]
;
then
echo
"Metafor/oo_meta: building"
if
[
-d
oo_metaB
]
;
then
rm
-rf
oo_metaB
fi
mkdir
oo_metaB
cd
oo_metaB
cmake
-Wno-dev
-C
../oo_meta/CMake/ubuntu-CUPyDO.cmake ../oo_meta
make
-j
${
NCORES
}
cd
..
else
echo
"Metafor/oo_meta: already built"
fi
mkdir
oo_metaB
cd
oo_metaB
cmake
-C
../oo_meta/CMake/ubuntu-CUPyDO.cmake ../oo_meta
make
-j
12
cd
../..
cd
..
}
function
build_
SU2
()
function
build_
CUPyDO
()
{
# clone/build SU2
if
[
!
-d
SU2.src
]
;
then
mkdir
SU2.src
if
[
!
-d
CUPyDO
]
;
then
echo
"CUPyDO: cloning CUPyDO
${
CUPYDO_VERSION
}
"
git clone
--branch
${
CUPYDO_VERSION
}
\
git@github.com:ulgltas/CUPyDO.git
else
echo
"CUPyDO: already cloned"
fi
cd
SU2.src
if
[
!
-d
SU2
]
;
then
git clone git@github.com:su2code/SU2.git
if
[
!
-f
CUPyDO/ccupydo/_CCupydo.so
]
;
then
echo
"CUPyDO: building"
cd
CUPyDO
if
[
-d
build
]
;
then
rm
-rf
build
fi
mkdir
build
cd
build
cmake
-Wno-dev
-DWITH_MPI
=
OFF ..
make
-j
${
NCORES
}
make
install
cd
../..
else
echo
"CUPyDO: already built"
fi
cd
SU2
git checkout tags/v6.2.0
unset
MKLROOT
# <= MKL should be disabled
./bootstrap
./configure
--prefix
=
`
readlink
-f
../../SU2
`
\
CXXFLAGS
=
"-O3"
\
--enable-PY_WRAPPER
make
-j
12
make
install
cd
../..
}
function
build
_VLM
()
function
do_
build
()
{
# c
lone/build VLM
if
[
!
-d
VLM
]
;
then
git clone git@github.com:ulgltas/VLM.git
# c
reate CUPyDO main folder
if
[
!
-d
CUPyDO
]
;
then
mkdir
CUPyDO
fi
cd
VLM
cd
CUPyDO
if
[
-d
build
]
;
then
rm
-rf
build
fi
mkdir
build
cd
build
cmake ..
make
-j
6
# build codes
get_last_Gmsh
get_geoGen
build_sol2
build_modali
build_NativeSolid
build_pyBeam
build_VLM
build_SU2
build_PFEM3D
build_waves
build_PFEM
build_Metafor
build_CUPyDO
make
install
# is it required?
cd
../..
# leave CUPyDO main folder
cd
..
}
function
do_tests
()
{
echo
"do_tests()..."
cd
CUPyDO
cd
CUPyDO/build
ctest
-j
${
NCORES
}
#2>&1 > ctest_stdout.txt
# output the last lines to stdout (useful for shortening mails)
#tail -n 50 ctest_stdout.txt
cd
../../..
echo
"done."
}
# create CUPyDO main folder
if
[
!
-d
CUPyDO
]
;
then
mkdir
CUPyDO
fi
cd
CUPyDO
function
usage
()
{
echo
"usage:
$0
-b -j 2 : build (using 2 cores)"
echo
"
$0
-b -t : build and test"
echo
"
$0
-b -t -q : build and test (batch mode)"
exit
1
}
# build codes
function
go_batch
()
{
CMD_TXT
=
"
$0
-j
${
NCORES
}
"
if
[
"
$DO_BUILD
"
=
true
]
;
then
CMD_TXT
=
"
$CMD_TXT
-b"
fi
if
[
"
$DO_TESTS
"
=
true
]
;
then
CMD_TXT
=
"
$CMD_TXT
-t"
fi
echo
"starting script in batch mode:"
echo
"
$CMD_TXT
"
echo
$CMD_TXT
| at now
-m
exit
0
}
NCORES
=
`
nproc
--all
`
RUNBATCH
=
false
DO_BUILD
=
false
DO_TESTS
=
false
DISPLAY_USAGE
=
true
build_CUPyDO
build_waves
build_PFEM
build_Metafor
build_SU2
build_modali
build_NativeSolid
build_VLM
# -- args
while
getopts
"j:hbtq"
option
do
case
$option
in
j
)
NCORES
=
$OPTARG
;;
h
)
usage
;;
q
)
RUNBATCH
=
true
;;
b
)
DO_BUILD
=
true
;
DISPLAY_USAGE
=
false
;;
t
)
DO_TESTS
=
true
;
DISPLAY_USAGE
=
false
;;
*
)
echo
"[getopts] Bad option:
$option
"
;
exit
1
;;
esac
done
shift
$((
$OPTIND
-
1
))
# leave CUPyDO main folder
cd
..
if
[
"
$RUNBATCH
"
=
true
]
;
then
go_batch
else
if
[
"
$DISPLAY_USAGE
"
=
true
]
;
then
usage
fi
if
[
"
$DO_BUILD
"
=
true
]
;
then
do_build
fi
if
[
"
$DO_TESTS
"
=
true
]
;
then
do_tests
fi
fi
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment