mesh = Grid1D(dx = dx, nx = nx) from fipy.tools import numerix from fipy.variables.cellVariable import CellVariable var = CellVariable(mesh = mesh) from fipy.solvers.linearLUSolver import LinearLUSolver from fipy.boundaryConditions.nthOrderBoundaryCondition import NthOrderBoundaryCondition from fipy.terms.implicitDiffusionTerm import ImplicitDiffusionTerm from fipy.terms.transientTerm import TransientTerm eq = ImplicitDiffusionTerm((1.0, 1.0)) BCs = (NthOrderBoundaryCondition(mesh.getFacesLeft(), 0., 0), NthOrderBoundaryCondition(mesh.getFacesRight(), Lx, 0), NthOrderBoundaryCondition(mesh.getFacesLeft(), 0., 2), NthOrderBoundaryCondition(mesh.getFacesRight(), 0., 2)) solver = LinearLUSolver(iterations=10) if __name__ == '__main__': eq.solve(var, boundaryConditions = BCs, solver = solver) from fipy.viewers import make viewer = make(var) viewer.plot() raw_input("finished")
from fipy.boundaryConditions.fixedValue import FixedValue BC = (NthOrderBoundaryCondition(faces=mesh.getFacesBottom(), value=0,order=1), FixedValue(faces=mesh.getFacesBottom(), value=0), NthOrderBoundaryCondition(faces=mesh.getFacesLeft(), value=0,order=1), NthOrderBoundaryCondition(faces=mesh.getFacesTop(), value=1,order=1), NthOrderBoundaryCondition(faces=mesh.getFacesTop(), value=0,order=2)) from fipy.boundaryConditions.fixedFlux import FixedFlux BC = (FixedFlux(faces=mesh.getFacesBottom(), value=0), FixedValue(faces=mesh.getFacesBottom(), value=0), FixedValue(faces=mesh.getFacesTop(), value=1), FixedFlux(faces=mesh.getFacesTop(), value=1), FixedFlux(faces=mesh.getFacesLeft(), value=0)) from fipy import viewers viewer = viewers.make(vars=(psi,u,v,U)) eq.solve(var=psi,boundaryConditions=BC) viewer.plot() def hit_continue(Prompt='Hit any key to continue'): raw_input(Prompt) hit_continue()
dx = Lx / nx mesh = Grid1D(dx=dx, nx=nx) from fipy.tools import numerix from fipy.variables.cellVariable import CellVariable var = CellVariable(mesh=mesh) from fipy.solvers.linearLUSolver import LinearLUSolver from fipy.boundaryConditions.nthOrderBoundaryCondition import NthOrderBoundaryCondition from fipy.terms.implicitDiffusionTerm import ImplicitDiffusionTerm from fipy.terms.transientTerm import TransientTerm eq = ImplicitDiffusionTerm((1.0, 1.0)) BCs = (NthOrderBoundaryCondition(mesh.getFacesLeft(), 0., 0), NthOrderBoundaryCondition(mesh.getFacesRight(), Lx, 0), NthOrderBoundaryCondition(mesh.getFacesLeft(), 0., 2), NthOrderBoundaryCondition(mesh.getFacesRight(), 0., 2)) solver = LinearLUSolver(iterations=10) if __name__ == '__main__': eq.solve(var, boundaryConditions=BCs, solver=solver) from fipy.viewers import make viewer = make(var) viewer.plot() raw_input("finished")
FixedValue(mesh.getFacesTop(),valueBottomTop), FixedValue(mesh.getFacesBottom(),valueBottomTop)) #do the 2D problem for comparison nx = 10 ny = 5 dx = 1. dy = 1. mesh2 = Grid2D(dx = dx, dy = dy, nx = nx, ny = ny) var2 = CellVariable(name = "solution variable 2D", mesh = mesh2, value = valueBottomTop) boundaryConditions2 = (FixedValue(mesh2.getFacesLeft(),valueLeftRight), FixedValue(mesh2.getFacesRight(),valueLeftRight), FixedValue(mesh2.getFacesTop(),valueBottomTop), FixedValue(mesh2.getFacesBottom(),valueBottomTop)) eqn = ImplicitDiffusionTerm() if __name__ == '__main__': eqn.solve(var2, boundaryConditions = boundaryConditions2) from fipy.viewers import make viewer = make(var2) viewer.plot() raw_input("finished")
convTerm = ExponentialConvectionTerm(coeff = velocity,diffusionTerm = diffTerm) eq1= diffTerm - u * u.getGrad().dot(Xhat) - v * u.getGrad().dot(Yhat) eq2= velocity.getDivergence() #eq2= u.getGrad() + v.getGrad() eq2=u.getFaceGrad().dot(Xhat) * Xhat + v.getFaceGrad().dot(Yhat) * Yhat eq2= u.getGrad().dot(Xhat) + v.getGrad().dot(Yhat) eq2= ImplicitDiffusionTerm(1) + u.getGrad().dot(Xhat) + v.getGrad().dot(Yhat) from fipy.boundaryConditions.fixedValue import FixedValue BCu = (FixedValue(faces=mesh.getFacesBottom(), value=0), FixedValue(faces=mesh.getFacesLeft(), value=1)) BCv = (FixedValue(faces=mesh.getFacesBottom(), value=0), FixedValue(faces=mesh.getFacesLeft(), value=0)) from fipy import viewers viewer = viewers.make(vars=(u,v),limits={'datamin': 0., 'datamax': 1.}) def hit_continue(Prompt='Hit any key to continue'): raw_input(Prompt) steps=10 for step in range(steps): eq1.solve(var=u,boundaryConditions=BCu) eq2.solve(var=v,boundaryConditions=BCv) viewer.plot() hit_continue()
eq= ImplicitDiffusionTerm(coeff=(a,a))+(u.getOld().getOld() - 2*u.getOld() + u) / timeStepDuration ** 2 from fipy.boundaryConditions.fixedValue import FixedValue from fipy.boundaryConditions.fixedFlux import FixedFlux from fipy.boundaryConditions.nthOrderBoundaryCondition import NthOrderBoundaryCondition BCs = ( NthOrderBoundaryCondition(faces=mesh.getFacesRight(), value=0,order=2), NthOrderBoundaryCondition(faces=mesh.getFacesRight(), value=1,order=3), FixedValue(faces=mesh.getFacesLeft(), value=0), FixedFlux(faces=mesh.getFacesLeft(), value=0)) from fipy import viewers viewer = viewers.make(vars=(u)) def hit_continue(Prompt='Hit any key to continue'): raw_input(Prompt) for step in range(steps): u.updateOld() eq.solve(var=u,boundaryConditions=BCs,dt=timeStepDuration) eq= ImplicitDiffusionTerm(coeff=(a,a))+(u.getOld().getOld() - 2*u.getOld() + u) / timeStepDuration ** 2 viewer.plot() hit_continue() #getOld seems to be not working
eq1 = diffTerm - u * u.getGrad().dot(Xhat) - v * u.getGrad().dot(Yhat) eq2 = velocity.getDivergence() #eq2= u.getGrad() + v.getGrad() eq2 = u.getFaceGrad().dot(Xhat) * Xhat + v.getFaceGrad().dot(Yhat) * Yhat eq2 = u.getGrad().dot(Xhat) + v.getGrad().dot(Yhat) eq2 = ImplicitDiffusionTerm(1) + u.getGrad().dot(Xhat) + v.getGrad().dot(Yhat) from fipy.boundaryConditions.fixedValue import FixedValue BCu = (FixedValue(faces=mesh.getFacesBottom(), value=0), FixedValue(faces=mesh.getFacesLeft(), value=1)) BCv = (FixedValue(faces=mesh.getFacesBottom(), value=0), FixedValue(faces=mesh.getFacesLeft(), value=0)) from fipy import viewers viewer = viewers.make(vars=(u, v), limits={'datamin': 0., 'datamax': 1.}) def hit_continue(Prompt='Hit any key to continue'): raw_input(Prompt) steps = 10 for step in range(steps): eq1.solve(var=u, boundaryConditions=BCu) eq2.solve(var=v, boundaryConditions=BCv) viewer.plot() hit_continue()
FixedValue(mesh.getFacesTop(), valueBottomTop), FixedValue(mesh.getFacesBottom(), valueBottomTop)) #do the 2D problem for comparison nx = 10 ny = 5 dx = 1. dy = 1. mesh2 = Grid2D(dx=dx, dy=dy, nx=nx, ny=ny) var2 = CellVariable(name="solution variable 2D", mesh=mesh2, value=valueBottomTop) boundaryConditions2 = (FixedValue(mesh2.getFacesLeft(), valueLeftRight), FixedValue(mesh2.getFacesRight(), valueLeftRight), FixedValue(mesh2.getFacesTop(), valueBottomTop), FixedValue(mesh2.getFacesBottom(), valueBottomTop)) eqn = ImplicitDiffusionTerm() if __name__ == '__main__': eqn.solve(var2, boundaryConditions=boundaryConditions2) from fipy.viewers import make viewer = make(var2) viewer.plot() raw_input("finished")
from fipy.terms.transientTerm import TransientTerm from fipy.terms.implicitDiffusionTerm import ImplicitDiffusionTerm eq = ImplicitDiffusionTerm(coeff=D) valueLeft = 1 valueRight = 0 from fipy.boundaryConditions.fixedValue import FixedValue BCs = (FixedValue(faces=mesh.getFacesLeft(),value=0), FixedValue(faces=mesh.getFacesRight(),value=1), FixedValue(faces=mesh.getFacesTop(),value=0), FixedValue(faces=mesh.getFacesBottom(),value=0)) from fipy import viewers viewer = viewers.make(vars=phi, limits={'datamin': 0., 'datamax': 1.}) viewer.plot() timeStepDuration = 10 * 0.9 * dx**2 / (2 * D) steps = 10 eq.solve(var=phi,boundaryConditions=BCs) viewer.plot() hit_continue()
eq = ImplicitDiffusionTerm(coeff=( a, a)) + (u.getOld().getOld() - 2 * u.getOld() + u) / timeStepDuration**2 from fipy.boundaryConditions.fixedValue import FixedValue from fipy.boundaryConditions.fixedFlux import FixedFlux from fipy.boundaryConditions.nthOrderBoundaryCondition import NthOrderBoundaryCondition BCs = (NthOrderBoundaryCondition(faces=mesh.getFacesRight(), value=0, order=2), NthOrderBoundaryCondition(faces=mesh.getFacesRight(), value=1, order=3), FixedValue(faces=mesh.getFacesLeft(), value=0), FixedFlux(faces=mesh.getFacesLeft(), value=0)) from fipy import viewers viewer = viewers.make(vars=(u)) def hit_continue(Prompt='Hit any key to continue'): raw_input(Prompt) for step in range(steps): u.updateOld() eq.solve(var=u, boundaryConditions=BCs, dt=timeStepDuration) eq = ImplicitDiffusionTerm(coeff=(a, a)) + ( u.getOld().getOld() - 2 * u.getOld() + u) / timeStepDuration**2 viewer.plot() hit_continue() #getOld seems to be not working