Git Product home page Git Product logo

ct2foam's Introduction

ct2foam -- Convert Cantera based thermophysical data To OpenFoam format

ct2foam enables user to generate OpenFoam dictionary entries for NASA-polynomials, Sutherland and other transport models required in thermophysicalProperties file. This python package utilises Cantera to generate such entries for all species in a given chemical mechanism or for gaseous mixtures defined by the user. With the general functions provided in this package, it is also possible to create NASA-polynomial, Sutherland and other polynomial type fits for thermophysical data based on experiments.

Furthermore, this package supports the users of DLBFoam and pyJac by introducing an automated pyjac2foam script which builds a compilation environment for pyjac routines as well as utilises ct2foam to generate consistent thermodynamics dictionaries with pyJac. See pyjac2foam module instructions below for further information.

Installation

Package relies on Cantera installation, for which the recommended installation principle is via conda. Hence, the recommended and easiest installation path is via conda as well. In particular, we recommend using the Miniconda package manager for this.

For users interested to use the pyjac2foam module, python version must be set python<=3.6. Otherwise, the latest releases can be utilised (tested up to python 3.8.8).

  • To install in conda environment:
conda create --name ct2foam_env --channel cantera cantera python=3.6 numpy scipy matplotlib
cd my/installation/path
git clone [email protected]:kahilah/ct2foam.git
cd ct2foam
conda activate ct2foam_env
pip install .
  • To install on ubuntu without conda:

  • To install in other environments:

  • Dependencies are installed automatically:

    • cantera, numpy, scipy, cvxopt, matplotlib
    • Distribution is tested with Cantera 2.5.1
    • setup.py lists the dependencies.

Run tests:

cd ct2foam
python -m unittest discover
  • Note that ct2foam/test_data/OF_reference includes C++ code requiring OpenFoam based compilation. However, this is mainly included here for development / testing purposes and standard user is not required to compile anything here.

Running ct2foam:

  • Installation generates two global executables: ct2foam and ctmix2foam which can be run as follows:

  • ct2foam --input h2o2.cti --output test_output --Tmid 1000.0 --plot

    • outputs OpenFoam compatible thermodynamical and transport dictionary entries under output directory such that NASA-polynomials have a middle temperature of 1000 K. Thermodynamical fits with error larger than user given (or here default) tolerances, will be plotted under output/Figures directory.
  • ctmix2foam --input h2o2.cti --output test_output --name air --mixture "O2:1,AR:4" --Tmid 1000.0 --plot

    • outputs data for a mixture, defines similar to standard input format in Cantera.
  • See ct2foam -h for help.

  • Can be executed as a python modules:

    • python -m ct2foam.scripts.mech2foam
    • python -m ct2foam.scripts.mix2foam
  • Outputs log.txt including all the relevant information related to the particular execution.

  • Note that if you want plots for all species, you need to provide strict tolerance values for transport_fit_quality and nasa7_fit_quality

pyjac2foam

  • pyjac2foam module provides a consistent input of thermochemical data for users utilising DLBFoam and pyJac in OpenFoam environment. In particular, pyjac2foam.sh executable generates:

    • shared libray *.so, compiled with cmake.
    • consistent species ordering between OpenFOAM and pyjac inputs.
    • consistent thermophysicalProperties, chemistsryProperties and controlDict entries for an OpenFOAM case setup.
  • Note that pyJac is not set as a requirement for this python package. To install, ensure that you have python=3.6 installed. Then,

    • conda install -c slackha pyjac (or)
    • pip install pyjac
  • Furthermore, you need cmake to use the automatic library compilation.

  • For a simple test:

cd pyjac2foam/test_data
./run_test.sh
  • How-to:

    • Generate pyjac C-files (requires pyjac):
      • python -m pyjac --lang c --last_species N2 --input my_mechanism.cti
    • Compile + generate *.foam files under the same directory where pyjac output files are located.
      • pyjac2foam -m my_mechanism.cti -i pyjac/path -c
      • Example dictionary entries with correct absolute paths are printed after execution + written into file foam/include_example.txt
  • Notes:

    • note that compilation to a shared library is now with rather standard flags --> depending on the architecture, you may want to optimise CMakeLists
    • you can use pyjac2foam for library compilation with -c / --compile flag, or copy pyjac2foam/cmake_directives directory, modify them and run ./runCmake.sh

Notes

  • See TODO.txt for development to be considered in the future.

Acknowledgements

ct2foam's People

Contributors

kahilah avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.