Exemplo n.º 1
0
                                           rmin = rmin,
                                           rmax = rmax,
                                           xmin = xmin,
                                           xmax = xmax,
                                           theta = theta,
                                           azimuthalOffsetFraction = azimuthalOffsetFraction,
                                           nNodePerh = nPerh,
                                           SPH = not asph)

if mpi.procs > 1:
    from VoronoiDistributeNodes import distributeNodes2d
    #from PeanoHilbertDistributeNodes import distributeNodes2d
else:
    from DistributeNodes import distributeNodes2d

distributeNodes2d((nodes1, generator))
output("mpi.reduce(nodes1.numInternalNodes, mpi.MIN)")
output("mpi.reduce(nodes1.numInternalNodes, mpi.MAX)")
output("mpi.reduce(nodes1.numInternalNodes, mpi.SUM)")

# Set node specific thermal energies
nodes1.specificThermalEnergy(ScalarField("tmp", nodes1, eps0))

# Set node velocities
for nodeID in xrange(nodes1.numNodes):
    vel[nodeID] = pos[nodeID].unitVector()*vr0

#-------------------------------------------------------------------------------
# Construct a DataBase to hold our node list
#-------------------------------------------------------------------------------
db = DataBase()
Exemplo n.º 2
0
    generatorInner = GenerateNodeDistribution2d(nx2,
                                                ny2,
                                                rho2,
                                                distributionType="lattice",
                                                xmin=(x1, y1),
                                                xmax=(x2, y2),
                                                nNodePerh=nPerh,
                                                rejecter=EllipticalRejecter(
                                                    a, b, False),
                                                SPH=not ASPH)
if mpi.procs > 1:
    from VoronoiDistributeNodes import distributeNodes2d
else:
    from DistributeNodes import distributeNodes2d

distributeNodes2d((outerNodes, generatorOuter), (innerNodes, generatorInner))
for nodes in nodeSet:
    print nodes.name, ":"
    output("    mpi.reduce(nodes.numInternalNodes, mpi.MIN)")
    output("    mpi.reduce(nodes.numInternalNodes, mpi.MAX)")
    output("    mpi.reduce(nodes.numInternalNodes, mpi.SUM)")
del nodes

# Set node specific thermal energies
for (nodes, gamma, rho, P) in ((outerNodes, gamma1, rho1, P1),
                               (innerNodes, gamma2, rho2, P2)):
    eps0 = P / ((gamma - 1.0) * rho)
    nodes.specificThermalEnergy(ScalarField("tmp", nodes, eps0))
del nodes

vel = outerNodes.velocity()
                                         int(0.5 * ny2 + 0.5),
                                         rho=rho1,
                                         distributionType="lattice",
                                         xmin=(0.0, 0.75),
                                         xmax=(1.0, 1.0),
                                         nNodePerh=nPerh,
                                         SPH=(not ASPH))
generator2 = CompositeNodeDistribution(generator21, generator22)

if mpi.procs > 1:
    from VoronoiDistributeNodes import distributeNodes2d
else:
    from DistributeNodes import distributeNodes2d

if numNodeLists == 2:
    distributeNodes2d((nodes1, generator1), (nodes2, generator2))
else:
    gen = CompositeNodeDistribution(generator1, generator2)
    distributeNodes2d((nodes1, gen))

# Finish initial conditions.
rhom = 0.5 * (rho1 - rho2)
vxm = 0.5 * (vx1 - vx2)
if numNodeLists == 2:
    for (nodes, vx) in ((nodes1, vx1), (nodes2, vx2)):
        pos = nodes.positions()
        vel = nodes.velocity()
        rho = nodes.massDensity()
        eps = nodes.specificThermalEnergy()
        mass = nodes.mass()
        for i in xrange(nodes.numInternalNodes):
Exemplo n.º 4
0
                                              SPH=SPH)
    generatorBottom = GenerateNodeDistribution2d(nx3,
                                                 ny3,
                                                 rho3,
                                                 distributionType="lattice",
                                                 xmin=(x1, y0),
                                                 xmax=(x2, y1),
                                                 nNodePerh=nPerh,
                                                 SPH=SPH)

    if mpi.procs > 1:
        from VoronoiDistributeNodes import distributeNodes2d
    else:
        from DistributeNodes import distributeNodes2d

    distributeNodes2d((leftNodes, generatorLeft), (topNodes, generatorTop),
                      (bottomNodes, generatorBottom))
    for nodes in nodeSet:
        print nodes.name, ":"
        output("    mpi.reduce(nodes.numInternalNodes, mpi.MIN)")
        output("    mpi.reduce(nodes.numInternalNodes, mpi.MAX)")
        output("    mpi.reduce(nodes.numInternalNodes, mpi.SUM)")
    del nodes

    # Set node specific thermal energies
    for (nodes, gamma, rho, P) in ((leftNodes, gamma1, rho1,
                                    P1), (topNodes, gamma2, rho2, P2),
                                   (bottomNodes, gamma3, rho3, P3)):
        eps0 = P / ((gamma - 1.0) * rho)
        nodes.specificThermalEnergy(ScalarField("tmp", nodes, eps0))
    del nodes
Exemplo n.º 5
0
                                   rmax=rmax1,
                                   nNodePerh=nPerh,
                                   SPH=SPH))
    gen2 = RZGenerator(
        GenerateNodeDistribution2d(n2 + nrind,
                                   n2,
                                   rho2,
                                   "constantDTheta",
                                   xmin=(0.0, 0.0),
                                   xmax=(rmax2, rmax2),
                                   rmin=rmax1,
                                   rmax=rmax2 + nrind * dr2,
                                   nNodePerh=nPerh,
                                   SPH=SPH))

distributeNodes2d((nodes1, gen1), (nodes2, gen2))
for n in nodeSet:
    output("mpi.reduce(n.numInternalNodes, mpi.MIN)")
    output("mpi.reduce(n.numInternalNodes, mpi.MAX)")
    output("mpi.reduce(n.numInternalNodes, mpi.SUM)")
del n

# Set node specific thermal energies
for n, eps in ((nodes1, eps1), (nodes2, eps2)):
    n.specificThermalEnergy(ScalarField("tmp", n, eps))
del n

#-------------------------------------------------------------------------------
# Construct a DataBase to hold our node list
#-------------------------------------------------------------------------------
db = DataBase()
Exemplo n.º 6
0
        xmin=xminFoamAnvil,
        xmax=xmaxFoamAnvil,
        nNodePerh=nPerh,
        SPH=(NodeListConstructor is SphNodeList))
    generatorCuAnvil = GenerateNodeDistribution2d(
        nlCuAnvil,
        nrCuAnvil,
        rho0Cu,
        "lattice",
        xmin=xminCuAnvil,
        xmax=xmaxCuAnvil,
        nNodePerh=nPerh,
        SPH=(NodeListConstructor is SphNodeList))

    distributeNodes2d(
        (nodesSteel, generatorTube), (nodesPlug, generatorPlug),
        (nodesProj, generatorProj), (nodesSteelAnvil, generatorSteelAnvil),
        (nodesFoamAnvil, generatorFoamAnvil), (nodesCuAnvil, generatorCuAnvil))
    nGlobalNodes = 0
    for n in nodeSet:
        print "Generator info for %s" % n.name
        output("    mpi.allreduce(n.numInternalNodes, mpi.MIN)")
        output("    mpi.allreduce(n.numInternalNodes, mpi.MAX)")
        output("    mpi.allreduce(n.numInternalNodes, mpi.SUM)")
        nGlobalNodes += mpi.allreduce(n.numInternalNodes, mpi.SUM)
    del n
    print "Total number of (internal) nodes in simulation: ", nGlobalNodes

    # Bevel the inner opening surface of the target tube.
    numNodesBeveled = bevelTubeEntrance(nodesSteel, 2, tubeOpeningAngle,
                                        rtubeInner, tubeThickness, xBevelBegin)
    print "Beveled %i nodes in the tube opening." % mpi.allreduce(
Exemplo n.º 7
0
    thetamax = pi
if seed == "constantDTheta":
    nx = nr

gen = RZGenerator(
    GenerateNodeDistribution2d(nx,
                               nx,
                               rho0Be,
                               distributionType=seed,
                               xmin=xmin,
                               xmax=xmax,
                               theta=thetamax,
                               rmin=R0,
                               rmax=R1))

distributeNodes2d((nodesBe, gen))
output("mpi.reduce(nodesBe.numInternalNodes, mpi.MIN)")
output("mpi.reduce(nodesBe.numInternalNodes, mpi.MAX)")
output("mpi.reduce(nodesBe.numInternalNodes, mpi.SUM)")

# Set node velocites.
pos = nodesBe.positions()
vel = nodesBe.velocity()
for i in xrange(nodesBe.numInternalNodes):
    ri = pos[i].magnitude()
    rhat = pos[i].unitVector()
    vel[i] = -u0 * (R0 / ri)**2 * rhat

#-------------------------------------------------------------------------------
# Construct a DataBase to hold our node list
#-------------------------------------------------------------------------------
Exemplo n.º 8
0
    generatorInner = GenerateNodeDistribution2d(nx2,
                                                ny2,
                                                rho2,
                                                distributionType="lattice",
                                                xmin=(x1, y1),
                                                xmax=(x2, y2),
                                                nNodePerh=nPerh,
                                                SPH=SPH)

    if mpi.procs > 1:
        from VoronoiDistributeNodes import distributeNodes2d
    else:
        from DistributeNodes import distributeNodes2d

    distributeNodes2d((innerNodes, generatorInner))
    print innerNodes.name, ":"
    output("    mpi.reduce(innerNodes.numInternalNodes, mpi.MIN)")
    output("    mpi.reduce(innerNodes.numInternalNodes, mpi.MAX)")
    output("    mpi.reduce(innerNodes.numInternalNodes, mpi.SUM)")

    # Set node specific thermal energies
    eps0 = P2 / ((gamma2 - 1.0) * rho2)
    innerNodes.specificThermalEnergy(ScalarField("tmp", innerNodes, eps0))

    #for nodes in nodeSet:
    #  vel = nodes.velocity()
    #  for i in xrange(nodes.numInternalNodes):
    #    vel[i]=Vector(velx,vely)
    vel = innerNodes.velocity()
    for i in xrange(innerNodes.numInternalNodes):
Exemplo n.º 9
0
                                        rho=rho0,
                                        distributionType=seed,
                                        xmin=(-rlength, 0.0),
                                        xmax=(rlength, zlength),
                                        nNodePerh=nPerh)
stuff2distribute = [(nodes1, generator1)]
if not reflect:
    generator2 = GenerateNodeDistribution2d(2 * nr,
                                            nz,
                                            rho=rho0,
                                            distributionType=seed,
                                            xmin=(-rlength, -zlength),
                                            xmax=(rlength, 0.0),
                                            nNodePerh=nPerh)
    stuff2distribute.append((nodes2, generator2))
distributeNodes2d(*tuple(stuff2distribute))
for n in nodeSet:
    output('n.name')
    output('   mpi.reduce(n.numInternalNodes, mpi.MIN)')
    output('   mpi.reduce(n.numInternalNodes, mpi.MAX)')
    output('   mpi.reduce(n.numInternalNodes, mpi.SUM)')
del n

nodes1.specificThermalEnergy(ScalarField("tmp", nodes1, eps0))
nodes1.velocity(VectorField("tmp", nodes1, Vector(0.0, -vz0)))
if not reflect:
    nodes2.specificThermalEnergy(ScalarField("tmp", nodes2, eps0))
    nodes2.velocity(VectorField("tmp", nodes2, Vector(0.0, vz0)))

#-------------------------------------------------------------------------------
# Create boundary conditions.