Ejemplo n.º 1
0
def splitbasis(n, bs):
    bspl = ppd.partitionlist(n, bs)
    idx = np.cumsum([0] + [sum([b.n for b in sum(bsp,[])]) for bsp in bspl])
    eltoffsets = np.cumsum([0] + map(len, bspl[:-1]))
    return zip(bspl, zip(idx[:-1],idx[1:]), eltoffsets)
Ejemplo n.º 2
0
import collections as cs

def newdir(olddirs, d):
    for od in olddirs:
        if np.dot(od, d) > 1 - 1E-6: return False
    return True

TracePoint = cs.namedtuple('TracePoint', 'face, point, direction')

def etodcombine(etod1,etod2):
    for ds1, ds2 in zip(etod1, etod2):
        for d in ds2:
            if newdir(ds1, d): ds1.append(d)
    return etod1

@ppd.distribute(lambda n: lambda mesh, tracepoints, tracer: [((mesh, tp, tracer),{}) for tp in ppd.partitionlist(n, tracepoints)],)
class RayTracing(object):
    
    def __init__(self, mesh, tracepoints, tracer, maxref = 5, maxelts = -1):
        self.etods = [[] for _ in range(mesh.nelements)]
        self.reflections = []
        self.tracer = tracer
        for tp in tracepoints: self.trace(tp,maxref, maxelts) 
    
    def adddir(self, e, dir):
        dirs = self.etods[e]
        if newdir(dirs, dir):
            dirs.append(dir)
            return True
        return False
    
Ejemplo n.º 3
0
'''
Created on Oct 31, 2011

@author: joel
'''
import pypwdg.parallel.decorate as ppd

@ppd.parallel(lambda n: lambda somelist: [((l,),{}) for l in  ppd.partitionlist(n,somelist)])
def myexpensivefn(somelist):
    return sum([x**2 for x in somelist])

import pypwdg.parallel.main

if __name__ == "__main__":
    print myexpensivefn(range(100))