As Ray says, FiPy comes with a lot of examples that are intended to be an intrinsic part of the documentation. Not all examples have been formatted and included on the website or in the PDF (some don't have enough didactic, some are redundant to other examples and are intended more as tests than as documentation).
In particular, please see https://github.com/usnistgov/fipy/tree/develop/examples/convection/advection for illustrations (and pitfalls) of what you're trying to do. In short, FiPy doesn't handle pure convection very well. On: 23 March 2016 07:39, "Raymond Smith" <[email protected]> wrote: First, I hope you're considering the broad set of FiPy examples<http://www.ctcms.nist.gov/fipy/examples/README.html> as part of the documentation. They can serve as a great starting point for many problems. Second, solving convection problems without any diffusion is notoriously a bit difficult with standard finite volume techniques. So, despite the apparent simplicity of your starting example, you've happened to pick one that's likely to disagree with the analytical solution because of numerical challenges. That said, you may try using different forms of the convection term (mentioned here<http://www.ctcms.nist.gov/fipy/examples/convection/generated/examples.convection.exponential1D.mesh1D.html>) and letting the simulation run for convection beyond a single grid point. Anyway, it's usually a good idea to start with simple examples like this, but here, you might consider letting FiPy's examples guide your choice in getting started unless you're specifically looking at problems of the form you've begun with here. If you really need to solve convection problems without the numerically smoothing diffusion, then you might consider different numerical schemes designed for hyperbolic equations, such as those implemented in clawpack: http://www.clawpack.org/ Very similar to your problem: http://www.clawpack.org/pyclaw/gallery/gallery_all.html#dimensional-advection Best, Ray On Wed, Mar 23, 2016 at 7:54 AM, Tyler ABBOT <[email protected]<mailto:[email protected]>> wrote: Hello! I'm new to FiPy and am having a lot of trouble finding my way using only the documentation... I am trying to understand how FiPy works by working an example, in particular I would like to solve the following simple convection equation with periodic boundary: $$\partial_t u + \partial_x u = 0$$ If initial data is given by $u(x, 0) = F(x)$, then the analytical solution is $u(x, t) = F(x - t)$. I do get a solution, but it is not correct. What am I missing? Is there a better resource for understanding FiPy than the documentation? It is very sparse... Here is my attempt from fipy import * import numpy as np # Generate mesh nx = 20 dx = 2*np.pi/nx mesh = PeriodicGrid1D(nx=nx, dx=dx) # Generate solution object with initial discontinuity phi = CellVariable(name="solution variable", mesh=mesh) phiAnalytical = CellVariable(name="analytical value", mesh=mesh) phi.setValue(1.) phi.setValue(0., where=x > 1.) # Define the pde D = [[-1.]] eq = TransientTerm() == ConvectionTerm(coeff=D) # Set discretization so analytical solution is exactly one cell translation dt = 0.01*dx steps = 2*int(dx/dt) # Set the analytical value at the end of simulation phiAnalytical.setValue(np.roll(phi.value, 1)) for step in range(steps): eq.solve(var=phi, dt=dt) print(phi.allclose(phiAnalytical, atol=1e-1)) Thanks for any guidance you could give! Tyler Abbot Phd Student Department of Economics Sciences Po, Paris [email protected]<mailto:[email protected]> _______________________________________________ fipy mailing list [email protected]<mailto:[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 ]
