Professional Documents
Culture Documents
t
= D
L= 1
2
One Dimensional Diffusion
!=1
!=0
t
= D
L= 1
2
One Dimensional Diffusion
!=1
!=0
t
= D
!(x, t=0) = 0
L= 1
2
Working Scripts for Todays
Class can be are:
3
Working Scripts for Todays
Class can be are:
diffusionX.py diffusionI.py diffusionCN.py
(explicit) (implicit) (semi-implicit)
3
A PDE is Solved in Four Steps
Variables Denitions
Equation(s) Denition(s)
Boundary Condition Specication
Viewer Creation
Problem Solving
4
A PDE is Solved in Four Steps
Variables Denitions
Equation(s) Denition(s)
Boundary Condition Specication
Viewer Creation
Problem Solving
5
Variables Denitions
6
Variables Denitions
nx = 50
6
Variables Denitions
nx = 50
dx = 1.0/oat(nx)
6
Variables Denitions
nx = 50
dx = 1.0/oat(nx)
from py.meshes.grid1D import Grid1D
6
Variables Denitions
nx = 50
dx = 1.0/oat(nx)
from py.meshes.grid1D import Grid1D
Grid2D
Grid3D
other grids
{
6
Variables Denitions
nx = 50
dx = 1.0/oat(nx)
from py.meshes.grid1D import Grid1D
mesh = Grid1D(nx, dx)
Grid2D
Grid3D
other grids
{
6
Variables Denitions
nx = 50
dx = 1.0/oat(nx)
from py.meshes.grid1D import Grid1D
mesh = Grid1D(nx, dx)
from py.variables.cellVariable import CellVariable
Grid2D
Grid3D
other grids
{
6
Variables Denitions
nx = 50
dx = 1.0/oat(nx)
from py.meshes.grid1D import Grid1D
mesh = Grid1D(nx, dx)
from py.variables.cellVariable import CellVariable
Grid2D
Grid3D
other grids
{
other variables
Variable
NoiseVariable
{
6
Variables Denitions
nx = 50
dx = 1.0/oat(nx)
from py.meshes.grid1D import Grid1D
mesh = Grid1D(nx, dx)
from py.variables.cellVariable import CellVariable
phi = CellVariable(name="solution variable", mesh=mesh, value=0)
Grid2D
Grid3D
other grids
{
other variables
Variable
NoiseVariable
{
6
Variables Denitions
nx = 50
dx = 1.0/oat(nx)
from py.meshes.grid1D import Grid1D
mesh = Grid1D(nx, dx)
from py.variables.cellVariable import CellVariable
phi = CellVariable(name="solution variable", mesh=mesh, value=0)
D = 1.0
Grid2D
Grid3D
other grids
{
other variables
Variable
NoiseVariable
{
6
Variables Denitions
nx = 50
dx = 1.0/oat(nx)
from py.meshes.grid1D import Grid1D
mesh = Grid1D(nx, dx)
from py.variables.cellVariable import CellVariable
phi = CellVariable(name="solution variable", mesh=mesh, value=0)
D = 1.0
valueLeft = 1
Grid2D
Grid3D
other grids
{
other variables
Variable
NoiseVariable
{
6
Variables Denitions
nx = 50
dx = 1.0/oat(nx)
from py.meshes.grid1D import Grid1D
mesh = Grid1D(nx, dx)
from py.variables.cellVariable import CellVariable
phi = CellVariable(name="solution variable", mesh=mesh, value=0)
D = 1.0
valueLeft = 1
valueRight = 0
Grid2D
Grid3D
other grids
{
other variables
Variable
NoiseVariable
{
6
Variables Denitions
nx = 50
dx = 1.0/oat(nx)
from py.meshes.grid1D import Grid1D
mesh = Grid1D(nx, dx)
from py.variables.cellVariable import CellVariable
phi = CellVariable(name="solution variable", mesh=mesh, value=0)
D = 1.0
valueLeft = 1
valueRight = 0
timeStepDuration = 0.9*(dx)**2/(2*D)
Grid2D
Grid3D
other grids
{
other variables
Variable
NoiseVariable
{
6
Variables Denitions
nx = 50
dx = 1.0/oat(nx)
from py.meshes.grid1D import Grid1D
mesh = Grid1D(nx, dx)
from py.variables.cellVariable import CellVariable
phi = CellVariable(name="solution variable", mesh=mesh, value=0)
D = 1.0
valueLeft = 1
valueRight = 0
timeStepDuration = 0.9*(dx)**2/(2*D)
Grid2D
Grid3D
other grids
{
other variables
Variable
NoiseVariable
{
A =
2Dt
x
2
{
6
Variables Denitions
nx = 50
dx = 1.0/oat(nx)
from py.meshes.grid1D import Grid1D
mesh = Grid1D(nx, dx)
from py.variables.cellVariable import CellVariable
phi = CellVariable(name="solution variable", mesh=mesh, value=0)
D = 1.0
valueLeft = 1
valueRight = 0
timeStepDuration = 0.9*(dx)**2/(2*D)
steps = 900
Grid2D
Grid3D
other grids
{
other variables
Variable
NoiseVariable
{
A =
2Dt
x
2
{
6
A PDE is Solved in Four Steps
Variables Denitions
Equation(s) Denition(s)
Boundary Condition Specication
Viewer Creation
Problem Solving
7
Equation Denition
8
Equation Denition
from py.terms.explicitDiffusionTerm import ExplicitDiffusionTerm
8
Equation Denition
from py.terms.explicitDiffusionTerm import ExplicitDiffusionTerm
from py.terms.transientTerm import TransientTerm
8
Equation Denition
from py.terms.explicitDiffusionTerm import ExplicitDiffusionTerm
from py.terms.transientTerm import TransientTerm
eqX = TransientTerm() == ExplicitDiffusionTerm(coeff = D)
8
Equation Denition
from py.terms.explicitDiffusionTerm import ExplicitDiffusionTerm
from py.terms.transientTerm import TransientTerm
eqX = TransientTerm() == ExplicitDiffusionTerm(coeff = D)
t
= D
8
Equation Denition
from py.terms.explicitDiffusionTerm import ExplicitDiffusionTerm
from py.terms.transientTerm import TransientTerm
eqX = TransientTerm() == ExplicitDiffusionTerm(coeff = D)
t
= D
8
Equation Denition
from py.terms.explicitDiffusionTerm import ExplicitDiffusionTerm
from py.terms.transientTerm import TransientTerm
eqX = TransientTerm() == ExplicitDiffusionTerm(coeff = D)
t
= D
8
Other Equation Terms
9
Term FiPy Representation
Other Equation Terms
9
Term FiPy Representation
Other Equation Terms
(D
1
[ D
2
()])
DiffusionTerm
9
Term FiPy Representation
Other Equation Terms
(v)
ConvectionTerm
(D
1
[ D
2
()])
DiffusionTerm
9
Term FiPy Representation
Other Equation Terms
(v)
ConvectionTerm
(D
1
[ D
2
()])
DiffusionTerm
SourceTerm
9
A PDE is Solved in Four Steps
Variables Denitions
Equation(s) Denition(s)
Boundary Condition Specication
Viewer Creation
Problem Solving
10
Boundary Conditions
11
Boundary Conditions
from py.boundaryConditions.xedValue import FixedValue
11
Boundary Conditions
from py.boundaryConditions.xedValue import FixedValue
BCs = (FixedValue(faces = mesh.getFacesRight(), value=valueRight),
FixedValue(faces=mesh.getFacesLeft(),value=valueLeft))
11
Boundary Conditions
from py.boundaryConditions.xedValue import FixedValue
BCs = (FixedValue(faces = mesh.getFacesRight(), value=valueRight),
FixedValue(faces=mesh.getFacesLeft(),value=valueLeft))
BCs = (BC1, BC2, BC3, ...)
notation
11
Other Type of BCs
12
Other Type of BCs
Dirichlet BC
FixedValue(FaceLocation, Value)
12
Other Type of BCs
Dirichlet BC
FixedValue(FaceLocation, Value)
Neumann BC
FixedFlux(FaceLocation, Value)
12
Other Type of BCs
Dirichlet BC
FixedValue(FaceLocation, Value)
Neumann BC
FixedFlux(FaceLocation, Value)
Higher Order BC
NthOrderBoundaryCondition(FaceLocation, Value)
12
A PDE is Solved in Four Steps
Variables Denitions
Equation(s) Denition(s)
Boundary Condition Specication
Viewer Creation
Problem Solving
13
Viewer Creation
from py import viewers
viewer = viewers.make(vars = phi, limits={'datamin':0.0, 'datamax':1.0})
14
A PDE is Solved in Four Steps
Variables Denitions
Equation(s) Denition(s)
Boundary Condition Specication
Viewer Creation
Problem Solving
15
Solving the Problem
16
Solving the Problem
for step in range(steps):
16
Solving the Problem
for step in range(steps):
eqX.solve(var = phi, boundaryConditions = BCs, dt = timeStepDuration)
viewer.plot()
16
Solving the Problem
for step in range(steps):
eqX.solve(var = phi, boundaryConditions = BCs, dt = timeStepDuration)
viewer.plot()
16
Launching the Simulation
17
Launching the Simulation