cantera/interfaces/python/Cantera/__init__.py

102 lines
2.8 KiB
Python
Executable file

"""
Cantera provides capabilities for simulating problems involving
chemical kinetics and transport processes.
"""
import types
import _cantera
from num import *
from constants import *
from exceptions import *
from gases import *
from set import set
from importFromFile import *
import os as _os
import sys as _sys
__version__ = _cantera.ct_get_version()
import warnings
warnings.warn(
"\nThis version of the Cantera Python module is deprecated and will not be\n"
"available in Cantera 2.2 or later. For details on the new module, see\n"
"http://cantera.github.io/dev-docs/sphinx/html/cython/index.html\n",
stacklevel=2)
if not os.getenv('PYTHON_CMD'):
# Setting PYTHON_CMD here avoids issues with .cti -> .xml conversions
# in cases where the python interpreter isn't in the system path.
os.environ['PYTHON_CMD'] = _sys.executable
def writeCSV(f, lst):
"""
Write list items to file *f* in
comma-separated-value format. Strings will be written as-is, and
other types of objects will be converted to strings and then
written. Each call to writeCSV writes one line of the file.
"""
for i,item in enumerate(lst):
if type(item) == types.StringType:
f.write(item)
else:
f.write(repr(item))
if i != len(lst)-1:
f.write(',')
f.write('\n')
def table(keys, values):
"""Create a map with the keys and values specified."""
x = {}
pairs = map(None, keys, values)
for p in pairs:
k, v = p
x[k] = v
return x
def getCanteraError():
"""Return the Cantera error message, if any."""
return _cantera.get_Cantera_Error()
def refCount(a):
"""Return the reference count for an object."""
return _cantera.ct_refcnt(a)
def addDirectory(dir):
"""Add a directory to search for Cantera data files."""
return _cantera.ct_addDirectory(dir)
def writeLogFile(file):
return _cantera.ct_writelogfile(file)
def reset():
"""Release all cached Cantera data. Equivalent to
starting a fresh session."""
_cantera.ct_appdelete()
def fix_docs(cls):
"""
Inherit method docstrings from parent class if none is specified on the
child. Usable as a decorator in Python >= 2.6.
"""
for name, func in vars(cls).items():
if not func.__doc__:
for parent in cls.__bases__:
parfunc = getattr(parent, name)
if parfunc and getattr(parfunc, '__doc__', None):
func.__doc__ = parfunc.__doc__
break
return cls
# workaround for case problems in CVS repository file Mixture.py. On some
# systems it appears as mixture.py, and on others as Mixture.py
try:
from Mixture import Mixture
except:
from mixture import Mixture
from num import *