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