Example #1
0
def compile_expression_code(code, classnames=None, module_name=None, \
                            additional_declarations=None, mpi_comm=None):

    additional_declarations = additional_declarations or ""

    # Autodetect classnames:
    _classnames = re.findall(r"class[ ]+([\w]+).*", code)

    # Just a little assertion for safety:
    if classnames is None:
        classnames = _classnames
    else:
        assert all(a == b for (a,b) in zip(classnames, _classnames))

    # Complete the code
    code = "%s\n%s"%(math_header, code)

    # Compile the extension module
    compiled_module = compile_extension_module(\
        code, additional_declarations=additional_declarations, \
        mpi_comm=mpi_comm)

    # Get the compiled class
    expression_classes = [getattr(compiled_module, name) for name in classnames]
    return expression_classes
Example #2
0
def compile_expression_code(code, classnames=None, module_name=None, \
                            additional_declarations=None, mpi_comm=None):

    additional_declarations = additional_declarations or ""

    # Autodetect classnames:
    _classnames = re.findall(r"class[ ]+([\w]+).*", code)

    # Just a little assertion for safety:
    if classnames is None:
        classnames = _classnames
    else:
        assert all(a == b for (a,b) in zip(classnames, _classnames))

    # Complete the code
    code = "%s\n%s"%(math_header, code)

    # Compile the extension module
    compiled_module = compile_extension_module(\
        code, additional_declarations=additional_declarations, \
        mpi_comm=mpi_comm)

    # Get the compiled class
    expression_classes = [getattr(compiled_module, name) for name in classnames]
    return expression_classes
Example #3
0
def compile_subdomain_code(code, classnames = None):
    # Autodetect classnames:

    _classnames = re.findall(r"class[ ]+([\w]+).*", code)

    # Just a little assertion for safety:
    if classnames is None:
        classnames = _classnames
    else:
        assert all(a == b for (a,b) in zip(classnames, _classnames))

    # Complete the code
    code = math_header + \
"""
namespace dolfin
{
""" + code + \
"""
}
"""

    # Compile the extension module
    compiled_module = compile_extension_module(code)

    # Construct instances of the compiled subdomain classes
    subdomains = [getattr(compiled_module, name)() for name in classnames]
    return subdomains
Example #4
0
def compile_subdomain_code(code, classname, mpi_comm=None):

    # Complete the code
    code = math_header + \
"""
namespace dolfin
{
%s
}
""" % code

    # Compile the extension module
    compiled_module = compile_extension_module(code, mpi_comm=mpi_comm)

    # Get compiled class
    return getattr(compiled_module, classname)
Example #5
0
def compile_subdomain_code(code, classname):

    # Complete the code
    code = math_header + \
"""
namespace dolfin
{
%s
}
""" % code

    # Compile the extension module
    compiled_module = compile_extension_module(code)

    # Get compiled class
    return getattr(compiled_module, classname)
Example #6
0
import os.path, sys
from math import pi 


try:
  from dolfin.compilemodules.compilemodule import compile_extension_module
  
  src_dir = os.path.join(os.path.abspath(os.path.dirname(__file__)), "cpp")

  with open(os.path.join(src_dir, "OrdinatesData.h"), "r") as header:
    ordinates_ext_module = compile_extension_module(header.read(),
                                                    include_dirs=[".", src_dir],
                                                    source_directory=src_dir,
                                                    sources=["OrdinatesData.cpp"])
except IOError as e:
  print "Cannot open source files for extension module."
  print "Details: ERR#{0}: {1}".format(e.errno, e.strerror)
  sys.exit(-1)
  
quadrature = ordinates_ext_module.OrdinatesData(4, 3, "lgvalues.txt")
print
print "S{}, {}D, {} directions".format(quadrature.get_N(), quadrature.get_D(), quadrature.get_M())
print
print "----------------  XI  ---------------------"
print quadrature.get_xi()
print "---------------  ETA  ---------------------"
print quadrature.get_eta()
print "----------------  MU  ---------------------"
print quadrature.get_mu()
print "-------------- WEIGHTS  -------------------"
pw = quadrature.get_pw()
Example #7
0
File: utils.py Project: mhanus/EVC
    return rout[0]
  else:
    return rout


#
# EXTENSION MODULES
#
dolfin_version_id = "".join(dolfin_version().split('.')[0:2])

_ext_module_versions = {"12" : "PETSc_utils_12", "13" : "PETSc_utils_12", "14" : "PETSc_utils_14"}

try:
  from dolfin.compilemodules.compilemodule import compile_extension_module

  _src_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "cpp", "PETSc"))

  with open(os.path.join(_src_dir, _ext_module_versions[dolfin_version_id]+".h"), "r") as header:
    backend_ext_module = compile_extension_module(header.read(),
                                                  include_dirs=[".", _src_dir],
                                                  source_directory=_src_dir,
                                                  sources=[_ext_module_versions[dolfin_version_id]+".cpp"])

except EnvironmentError as e:
  print "Cannot open source files for PETSc extension module: {}".format(e)
  raise e
except Exception as e:
  print "Cannot initialize PETSc extension module"
  raise e

Example #8
0
__author__ = 'Milan'

import os

try:
  from dolfin.compilemodules.compilemodule import compile_extension_module

  _src_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "cpp", "PETSc"))

  with open(os.path.join(_src_dir, "PETSc_utils.h"), "r") as header:
    backend_ext_module = compile_extension_module(header.read(),
                                                  include_dirs=[".", _src_dir],
                                                  source_directory=_src_dir,
                                                  sources=["PETSc_utils.cpp"])

except EnvironmentError as e:
  print "Cannot open source files for PETSc extension module: {}".format(e)
  raise e
except Exception as e:
  print "Cannot initialize PETSc extension module"
  raise e