Work Description
Title: CRIMSON open source project - Flow Solver Source Code for PLOS Computational Biology Open Access Deposited
Attribute | Value |
---|---|
Methodology |
|
Description |
|
Creator | |
Depositor |
|
Contact information | |
Discipline | |
Funding agency |
|
Other Funding agency |
|
Keyword | |
Citations to related material |
|
Resource type | |
Last modified |
|
Published |
|
Language | |
DOI |
|
License |
|
To Cite this Work:
(2021). CRIMSON open source project - Flow Solver Source Code for PLOS Computational Biology [Data set], University of Michigan - Deep Blue Data. https://doi.org/10.7302/tbx5-7c07
(2021). CRIMSON open source project - Flow Solver Source Code for PLOS Computational Biology [Data set], University of Michigan - Deep Blue Data. https://doi.org/10.7302/tbx5-7c07
Relationships
Files (Count: 2; Size: 25.8 MB)
Thumbnailthumbnail-column | Title | Original Upload | Last Modified | File Size | Access | Actions |
---|---|---|---|---|---|---|
![]() |
CRIMSONFlowsolver-master.zip | 2021-01-05 | 2021-01-05 | 25.7 MB | Open Access |
|
![]() |
README.md | 2021-01-15 | 2021-01-15 | 5.1 KB | Open Access |
|
Installation Instructions
These instructions explain how to build CRIMSON Flowsolver on openSUSE Leap 15.1 (Linux). They have been tested on a completely fresh install of the OS. You will need to adjust them accordingly for other flavours of Linux.
- Install the dependencies using the system pacakge manager
sudo zypper install kernel-default-devel git scons openmpi openmpi-devel gcc-c++ gcc-fortran python-devel cblas-devel blas-devel lapack-devel cmake libboost_headers1_66_0-devel libboost_thread1_66_0-devel libboost_filesystem1_66_0-devel python2-numpy python2-scipy
- Setup paths
- Add the mpi compilers
bin
folder to your system path (in this case,export PATH=$PATH:/usr/lib64/mpi/gcc/openmpi/bin
- but this will almost certainly differ on your system if it is not opensuse Leap 15.1) and their runtime libraries to theLD_LIBRARY_PATH
(in the opensuse case:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/mpi/gcc/openmpi/lib64
- but check for your system where the mpi runtime libraries are located) - You probably want to put these exports in your
~/.bashrc
file and then open a fresh terminal in order to activate it.
- Add the mpi compilers
- Install PetSc
- Get petsc-3.2-p7 from the PetSc website. Untar it in some folder and compile it, but note that the values for the lib locations may vary on your system, and use a
PETSC_ARCH
according to your gcc version (although this is just for your own records):./configure PETSC_ARCH=gcc_7.4.1-opt --with-memalign=64 --with-debugging=0 COPTFLAGS=-O2 -fp-model precise FOPTFLAGS=-O2 -fp-model source --with-x=0 CXXOPTFLAGS=-O2 --with-blas-lib=/usr/lib64/libblas.so --with-lapack-lib=/usr/lib64/liblapack.so --with-mpi-dir=/usr/lib64/mpi/gcc/openmpi/
- After configuring is complete, follow the instructions in the console for compiling PetSc
- After compilation, follow the instructions in the console for testing PetSc. Note that the fortran compiler may issue some warnings, which the petsc test system will report as failures - but if the only actual error output are the warnings, it is most likely fine
- Get petsc-3.2-p7 from the PetSc website. Untar it in some folder and compile it, but note that the values for the lib locations may vary on your system, and use a
- Install VTK version 5.8.0
- Get vtk version 5.8.0 - it is available with CRIMSON modifications here
- Run the following configuration command, but make sure you set
/some/install/path
to be where you want vtk to be installed - and remember it for later setting up of CRIMSONcmake -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DVTK_USE_RENDERING=OFF -DCMAKE_INSTALL_PREFIX=/some/install/path -DCMAKE_CXX_FLAGS=-Wno-error=narrowing
- make && make install
- Configure CRIMSON Flowsolver
- Copy
buildoptions.py.example
from the CRIMSON root tobuildoptions.py
. - Edit
buildoptions.py
, setting the#setme
fields. Not all of these will be required, particularly if some of the libraries are in the system lib64 folder. As a minimum, you'll need to set PETSC_TOP (to point at the petsc root folder) PETSC_BUILD (to be the value you set in PETSC_ARCH during the petsc configure call), VTK_TOP (to be whatever CMAKE_INSTALL_PREFIX you set during the vtk cmake step). Be careful to note how the paths are assembled in this script: relative paths and special characters such as ~ are not supported.
- Copy
- Compile CRIMSON Flowsolver
- In the CRIMSON root, run
scons -jN test=1 debug=0
to compile using N processes - After a successful build, go into the
testbin
subfolder, and run./mytest N
, to test on N processes. Allow the test suite to finish.
- In the CRIMSON root, run
- Use the CRIMSON Flowsolver on your own simulations
- To run CRIMSON Flowsolver, use the script in the bin folder:
mysolver
. Invoke this from the directory containing your simulation files, as/path/to/mysolver N solver.inp
to run on N processes - note that solver.inp must be in your console's current working directory, flowsolver does not accept a path for solver.inp.
- To run CRIMSON Flowsolver, use the script in the bin folder:
# Running postsolver
- For Linux builds, you will first need to rename
postsolver.exe
topostsolver
in the bin/ folder. - To reduce the output timesteps into one file, and generate a pht file that can be visualized in paraview, use the multipostsolver script in the scripts/ directory.
- First, edit the line in the multipostsolver script that calls the postsolver binary, make the path to the binary match where the executable is on your machine, a full path should be used.
- e.g., the loop that calls postsolver should look something like this:
sh ... # reduce the restarts for each time step requested k=0 for ((i=$1 ;i<=$2; i+=$3)); do echo "Multipostsolver is reducing timestep: $i" let k++ /home/alex2/CRIMSONFlowsolver/bin/postsolver -sn $i -newsn $i -ph -td -bflux -wss $5 $6 $7 $8 $9 $10 $11 done ...
- e.g., the loop that calls postsolver should look something like this:
- Then run the multipostsolver script, with parameters in the form
multipostsolver start_index end_index increment folder_name
- e.g.,
multipostsolver 0 95 5 outputfolder
in your N-procs-case folder (where N is the number of processes you set for simulation) - multipostsolver will store the results in a folder named
restarts-outputfolder-0-95-5
, in the parent folder of the one you ran it in.
Remediation of Harmful Language
The University of Michigan Library aims to describe its collections in a way that respects the people and communities who create, use, and are represented in them. We encourage you to contact us anonymously if you encounter harmful or problematic language in catalog records or finding aids. More information about our policies and practices is available at Remediation of Harmful Language.