from fipy.variables.vectorFaceVariable import VectorFaceVariable velocity = VectorFaceVariable(mesh=mesh) Xhat=(1,0) Yhat=(0,1) velocity=u.getFaceGrad().dot(Xhat) * Xhat + v.getFaceGrad().dot(Yhat) * Yhat from fipy.terms.implicitDiffusionTerm import ImplicitDiffusionTerm diffTerm=ImplicitDiffusionTerm(coeff=viscosity) from fipy.terms.exponentialConvectionTerm import ExponentialConvectionTerm 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.})
pressureRelaxation = 0.2 velocityRelaxation = 0.5 sweeps=10 from fipy.meshes.grid2D import Grid2D mesh = Grid2D(nx=N, ny=N, dx=dL, dy=dL) from fipy.variables.cellVariable import CellVariable psi = CellVariable(mesh=mesh, name='stream function') Xhat=(1,0) Yhat=(0,1) u=psi.getGrad().dot(Yhat) v=-psi.getGrad().dot(Xhat) U=psi.getFaceGrad() from fipy.terms.implicitDiffusionTerm import ImplicitDiffusionTerm eq=ImplicitDiffusionTerm(0.00001) \ + u * u.getGrad().dot(Xhat) \ + v * u.getGrad().dot(Yhat) \ - 2 * u.getGrad().dot(Yhat).getGrad().dot(Yhat) from fipy.boundaryConditions.nthOrderBoundaryCondition import NthOrderBoundaryCondition from fipy.boundaryConditions.fixedValue import FixedValue BC = (NthOrderBoundaryCondition(faces=mesh.getFacesBottom(), value=0,order=1), FixedValue(faces=mesh.getFacesBottom(), value=0),
from fipy.variables.vectorFaceVariable import VectorFaceVariable velocity = VectorFaceVariable(mesh=mesh) Xhat = (1, 0) Yhat = (0, 1) velocity = u.getFaceGrad().dot(Xhat) * Xhat + v.getFaceGrad().dot(Yhat) * Yhat from fipy.terms.implicitDiffusionTerm import ImplicitDiffusionTerm diffTerm = ImplicitDiffusionTerm(coeff=viscosity) from fipy.terms.exponentialConvectionTerm import ExponentialConvectionTerm 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.})