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
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
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
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)
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)
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()
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
__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