Finite Element code in the Julia language focused on fluid-dynamics applications.
This repository allows the use of Finite Elements discretizations to solve common problems in fluid dynamics. Functionally, this package is designed to be used with the larger eFEMpart.jl, which also includes the ability to simulate particles.
eFEM.jl is an unregistered package. To install eFEM.jl using the REPL, type
pkg> add https://github.com/pseastham/eFEM.jl
To enter the Pkg environment from the REPL, type ]
.
For simple geometries (rectangles...), you can use the built-in geometry code but for more complicated geometries we suggest building your mesh with an external library (such as GMSH).
As of right now, the following equations are solvable:
- Poisson's Equation (
:Poisson2D
)
- Darcy's Equation (
:Darcy2D
)
- Advection-Diffusion Equation (
:AdvDiff2D
)
- Stokes' Equation (
:Stokes2D
)
- Brinkman's Equation (
:Brinkman2D
)
- Brinkman's Multiphase Equation (
:BrinkmanMP2D
)
All parameterized equations can be solvable with either constant or variable-in-space parameters. Additionally, Axisymmetric version of the Advection-Diffusion and Stokes equations are available with the Operator Types of :AdvDiffAS
and :StokesAS
, respectively.
Equations in this README
were generated by the GitHub app TeXify
Boundary conditions are treated intuitively, based on the mesh given. The functions Dirichlet
, Neumann
, and Robin
allow assignment of boundaries to have certain boundary conditions, and the functions Dirichlet
, Neumann
, Forcing
allow for the definition of the actual boundary conditions at these boundaries. See examples for how this is used in practice.
We export all solutions in a legacy VTK format. For visualizing these files, we suggest using VisIt or ParaView.
Check out the examples folder to see how to use our syntax.