SOLVCON is a collection of Python-based conservation-law solvers that use the space-time Conservation Element and Solution Element (CESE) method [Chang95]. SOLVCON targets at solving problems that can be formulated as a system of first-order, linear or non-linear partial differential equations (PDEs) [Lax73]:
where is the unknown vector, , , and the Jacobian matrices, and the source term. SOLVCON is designed to be a software framework to house various solvers. The design of SOLVCON is discussed in [Chen11].
Please use the development version in the Mercurial repository:
hg clone https://bitbucket.org/solvcon/solvcon
Like many scientific packages, SOLVCON has a lot of dependencies: gcc 4.3+, SCons 2+, Python 2.7, Cython 0.16+, Numpy 1.5+, LAPACK, NetCDF 4+, SCOTCH 6.0+, Nose 1.0+, gmsh 2.5+, VTK 5.6+. Building document requires: pygraphviz 1.1+, Sphinx 1.1.2+, Sphinxcontrib issue tracker 0.11.
The hard way to install the dependencies is to build them manually, but SOLVCON has a $SCSRC/ground/ directory that provides scripts for some help:
cd $SCSRC/ground ../contrib/get make all source $SCSRC/opt/etc/scvars.sh
A directory $SCSRC/opt will be created to hold the built binaries. The last line will enable the runtime environment, and also export SCROOT=$SCSRC/opt. If we don’t even have a compatible gcc, the $SCSRC/soil/ directory can help:
cd $SCSRC/soil ../contrib/get make source $SCSRC/opt/etc/scgccvars.sh
$SCROOT/etc/scvars.sh and $SCROOT/etc/scgccvars.sh can be separately sourced. The two sets of packages reside in different directories and do not mix with each other nor system software.
With a package management system, life can be easier. On Debian jessie, the following command will install the dependencies:
sudo apt-get install build-essential gcc gfortran scons \ liblapack-pic liblapack-dev libnetcdf-dev libnetcdfc7 netcdf-bin \ libscotch-dev libscotchmetis-dev libscotch-5.1 \ python2.7 python2.7-dev cython python-numpy python-nose gmsh python-vtk \ python-pygraphviz python-sphinx python-sphinxcontrib.issuetracker \ mercurial
and on Ubuntu 12.04LTS please use:
sudo apt-get install build-essential gcc gfortran scons \ liblapack-pic liblapack-dev libnetcdf-dev libnetcdf6 netcdf-bin \ libscotch-dev libscotchmetis-dev libscotch-5.1 \ python2.7 python2.7-dev cython python-numpy python-nose gmsh python-vtk \ python-pygraphviz python-sphinx python-sphinxcontrib.issuetracker \ mercurial
On Debian 6.x (squeeze), you need also apt-get install python-profiler for the Python built-in profiler.
The binary part of SOLVCON should be built with SCons:
cd $SCSRC scons
The source tarball supports distutils and can be built alternatively:
python setup.py build_ext --inplace
SOLVCON is designed to work without explicit installation. Setting the environment variables $PATH and $PYTHONPATH is sufficient.
Tests should be run with Nose:
in the project root directory $SCSRC. Another set of tests are collected in $SCSRC/ftests/ directory, and can be run with:
Some tests in $SCSRC/ftests/ involve remote procedure call (RPC) that uses ssh, so you need to set up the public key authentication of ssh.
Copyright (c) 2008, Yung-Yu Chen <firstname.lastname@example.org>
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|[Chang95]||Sin-Chung Chang, “The Method of Space-Time Conservation Element and Solution Element – A New Approach for Solving the Navier-Stokes and Euler Equations”, Journal of Computational Physics, Volume 119, Issue 2, July 1995, Pages 295-324. doi: 10.1006/jcph.1995.1137|
|[Chen11]||Yung-Yu Chen, A Multi-Physics Software Framework on Hybrid Parallel Computing for High-Fidelity Solutions of Conservation Laws, Ph.D. Thesis, The Ohio State University, United States, Aug. 2011. (OhioLINK)|
|[Chen12]||Yung-Yu Chen, Lixiang Yang, and Sheng-Tao John Yu, “Hyperbolicity of Velocity-Stress Equations for Waves in Anisotropic Elastic Solids”, Journal of Elasticity, Volume 106, Issue 2, Feb. 2012, Page 149-164. doi: 10.1007/s10659-011-9315-8|
|[Lax73]||Peter D. Lax, “Hyperbolic Systems of Conservation Laws and the Mathematical Theory of Shock Waves”, Society for Industrial Mathematics, 1973. ISBN 0898711770.|
|[Mavriplis97]||D. J. Mavriplis, Unstructured grid techniques, Annual Review of Fluid Mechanics 29. (1997)|
|[Warming75]||R. F. Warming, Richard M. Beam, and B. J. Hyett, “Diagonalization and Simultaneous Symmetrization of the Gas-Dynamic Matrices”, Mathematics of Computation, Volume 29, Issue 132, Oct. 1975, Page 1037-1045. http://www.jstor.org/stable/2005742|
|[Yang13]||Lixiang Yang, Yung-Yu Chen, Sheng-Tao John Yu, “Viscoelasticity determined by measured wave absorption coefficient for modeling waves in soft tissues”, Wave Motion, Volume 50, Issue 2, March 2013, Page 334-346. doi: 10.1016/j.wavemoti.2012.09.002.|