def montecarlo(self, V, interface, **kwargs): import _hybridmc as core dims = kwargs.get("Omega") bc = DirichletBC(V, 1.0, interface) coords, keys = tools.get_boundary_coords(bc) dim = len(dims) nof_nodes = len(coords) / dim D = np.array(dims, dtype=np.float_) node_coord = np.array(coords, dtype=np.float_) f = kwargs.get("f") q = kwargs.get("q") walks = kwargs.get("walks", 5000) btol = kwargs.get("btol", 1e-13) threads = kwargs.get("threads", 6) mpi_workers = kwargs.get("mpi_workers", 0) OpenCL = kwargs.get("OpenCL", False) if OpenCL and not core.opencl: print "**** WARNING **** : Module %s compiled without OpenCL supprt. Recompile with -DOPENCL_SUPPORT" % ( __name__ ) print "**** WARNING **** : Running multithread CPU version" OpenCL = False if not OpenCL: f = Expression(f) q = Expression(q) value = core.montecarlo(D, dim, node_coord, nof_nodes, f, q, walks, btol, threads, mpi_workers) est = Function(V) est.vector()[keys] = value mcbc = DirichletBC(V, est, interface) return mcbc, est
def montecarlo(ctx, dims, dim, coords, nof_nodes,f,q,walks,btol,threads,OpenCL): D = np.array(dims, dtype=np.float_) node_coord = np.array(coords, dtype=np.float_) if OpenCL and not core.opencl: print "**** WARNING **** : Module %s compiled without OpenCL supprt. Recompile with -DOPENCL_SUPPORT" %(__name__) print "**** WARNING **** : Running multithread CPU version" OpenCL = False if not OpenCL: f = Expression(f) q = Expression(q) value = core.montecarlo(D,dim,node_coord,nof_nodes,f,q,walks,btol,threads) return value