Example #1
0
def showdirs():
    k = 10
    #direction=array([[1.0,1.0]])/sqrt(2)
    direction=array([[1,1]])/sqrt(2)
#    direction = array([[1,0]])
    mesh = pmm.gmshMesh('squarescatt.msh',dim=2)
    problem = psp.Problem(mesh, k, None)
    etods = prc.tracemesh(problem, {10:lambda x:direction})
    
    pom.showdirections2(problem.mesh, etods)
    pom.showmesh(problem.mesh)
Example #2
0
p=3
t=p**2
g=2
h=.1

beta=p**2*h*k
alpha=k*p**2*1./h
delta=.5

alpha=.5
beta=.5
delta=.5

entityton ={6:nfun}
problem=psp.VariableNProblem(entityton, mesh,k, bnddata)
etods = prc.tracemesh(problem, {8:lambda x:direction})


etob = [[pcb.PlaneWaves(ds, k)] if len(ds) else [] for ds in etods]
pob.vtkbasis(mesh,etob,'waveguide_rays.vtu',None)

b0=pcbv.PlaneWaveVariableN(pcb.circleDirections(10))
b=pcb.PlaneWaveFromDirectionsRule(etods)

b1=pcb.ProductBasisRule(b,pcbr.ReferenceBasisRule(pcbr.Dubiner(p)))
b2=pcbr.ReferenceBasisRule(pcbr.Dubiner(p))

origins=np.array([[0,0],[0,5],[5,1],[0,1]])
h=pcb.FourierHankelBasisRule(origins,[0])
h2=pcb.ProductBasisRule(h,pcbr.ReferenceBasisRule(pcbr.Dubiner(p)))
bh=pcb.UnionBasisRule([h2,b1])
Example #3
0
def traceproblem(k, direction=array([[1,1]])/sqrt(2)):
    problem = createproblem(k, direction)
    etods = prc.tracemesh(problem, {10:lambda x:direction})
    return problem, etods