Exemplo n.º 1
0
var2 = CellVariable(name="periodic",
                    mesh=periodicMesh,
                    value=startingArray[:nx // 2])

eq1 = TransientTerm() - VanLeerConvectionTerm(coeff=(-velocity, ))
eq2 = TransientTerm() - VanLeerConvectionTerm(coeff=(-velocity, ))

if __name__ == '__main__':

    viewer1 = Viewer(vars=var1)
    viewer2 = Viewer(vars=var2)
    viewer1.plot()
    viewer2.plot()

    newVar2 = var2.copy()

    for step in range(steps):
        eq1.solve(var=var1, dt=dt, solver=DefaultAsymmetricSolver())
        eq2.solve(var=var2, dt=dt, solver=DefaultAsymmetricSolver())
        viewer1.plot()
        viewer2.plot()

    newVar2[:nx / 4] = var2[nx / 4:]
    newVar2[nx / 4:] = var2[:nx / 4]

    print 'maximum absolute difference between periodic and non-periodic grids:', abs(
        var1[nx / 4:3 * nx / 4] - newVar2).max()

    raw_input('finished')
Dz = material["k_y"] * fluid["dichte"]

# D ist eine Face Variable, da der Koeffizient für jede Flaeche einzelnd berechenet wird
D = FaceVariable(mesh=mesh, value=((Dx, 0, 0), (0, Dy, 0), (0, 0, Dz)))

# boundry conditions ----------------------------------------------------------

phi.constrain(Pres, where=mesh.physicalFaces["inner"])
phi.constrain(Pamb, where=mesh.physicalFaces["outer"])

# Solving ---------------------------------------------------------------------

eq = DiffusionTerm(coeff=D)
sweep = 0

phi_old = phi.copy()

max_diff = 10e10

#while True:
for sweep in range(sweeps):
    #while max_diff > 10e-6:
    print "Doing sweep {} | max_diff: {}".format(sweep, max_diff)
    res = eq.sweep(var=phi)
    print "Residual: {}".format(res)

    new_max_diff = np.absolute(phi_old.value - phi.value).max()
    phi_old = phi.copy()

    # Keoffizientenn neu berechnen
    pressureFaces = phi.arithmeticFaceValue