Dario -

- FiPy's DiffusionTerm is implicit, so there is no Fourier limit on your time 
step.

- There's no particular advantage to scaling length and time to 1

- Be sure to set dx = dy = dz = 1., a float, not dx = dy = dz = 1, an integer

- Jon

> On Apr 3, 2019, at 11:28 AM, Dario Panada <[email protected]> wrote:
> 
> Hello,
> 
> I am trying to use FiPy to build a system to simulate oxygen diffusion in 
> tissues in 3D.
> 
> My grid is a 20x20x20 mesh, defined as:
> 
> mesh=Grid3D(dx=dx,dy=dy,nx=nx,ny=ny, dz=dz, nz=nz)
> 
> Where nx = ny = nz = 20 and dx = dy = dz = 1. This approach is taken from 
> examples.diffusion.mesh1D, where nx was set to 50 and dx to 1 to represent 
> unity.
> 
> I setup my equation as:
> 
> eq=TransientTerm()==DiffusionTerm(coeff=D) + sourceGrid - sinkGrid
> 
> My oxygen diffusion coefficient (D) is 0.001 mm2/s. Each cell is my grid 
> corresponds to 0.042 mm3. So (Δx)^3 = 0.042mm^3 which implies (Δx^2) ~=0.121 
> mm2.
> 
> I understand that for 3D problems the Fourier number (Fo) has to be less than 
> or equal to 1/8.
> 
> With Fo = DΔt/(Δx^2)  <= 1/8 so Δt <= (Δx^2)/(8D) where replacing values I 
> get  Δt <= 15.125 .
> 
> From the above, would it be sensible to setup my script as?
> ---
> nx = ny = nz = 20
> dx = dy = dz = 1
> dt = 1
> D = 0.121
> mesh=Grid3D(dx=dx,dy=dy,nx=nx,ny=ny, dz=dz, nz=nz)
> 
> phi=CellVariable(name="solutionvariable",mesh=mesh,value=0.)
> 
> eq=TransientTerm()==DiffusionTerm(coeff=D) + sourceGrid - sinkGrid
> 
> eq.solve(var=phi,dt=dt)
> ---
> 
> Or am I missing something/have interpreted something wrong?
> 
> Kind Regards,
> Dario
> _______________________________________________
> fipy mailing list
> [email protected]
> http://www.ctcms.nist.gov/fipy
>  [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]


_______________________________________________
fipy mailing list
[email protected]
http://www.ctcms.nist.gov/fipy
  [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]

Reply via email to