Beispiel #1
0
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")
Beispiel #2
0
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()
Beispiel #3
0
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")
Beispiel #4
0
                      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")
Beispiel #5
0
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()
	
Beispiel #6
0
Datei: plank.py Projekt: ghorn/Eg
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
Beispiel #7
0
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()
Beispiel #8
0
                      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")
Beispiel #9
0
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()

Beispiel #10
0
Datei: plank.py Projekt: ghorn/Eg
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