Home

Awesome

eFEMpart.jl

Build Status Codecov DOI

Finite Element code in the Julia language focused on complex fluid-dynamic and porous-media applications, with the possibility of including a particle simulator in the framework of the discrete element method. The 'eFEM' component allows the use of Finite Elements discretizations to solve common problems in fluid dynamics, and the 'part' refers to mesh-free particle methods (discrete element method) primarily aimed at granular-media simulations where continuum constitutive laws are unavailable.

Installation

eFEMpart.jl is an unregistered package couples two other packages together: eFEM.jl and StokesParticles.jl. To install using the REPL, type the following three commands (in order)

pkg> add https://github.com/pseastham/StokesParticles.jl
pkg> add https://github.com/pseastham/eFEM.jl
pkg> add https://github.com/pseastham/eFEMpart.jl

To enter the Pkg environment from the REPL, type ].

Meshes

For ractangular geometries, you can use built-in geometry code. For more complicated geometries we suggest building your mesh with an external library (such as GMSH). See the meshes wiki for how this is used in practice.

Equations

For now, eFEMpart provides frameworks to handle systems using the following equations:

<p align="center"><img src="/tex/a1e55dd0d6f8247d8b884e241419c34e.svg?invert_in_darkmode&sanitize=true" align=middle width=75.003885pt height=17.399144399999997pt/></p> <p align="center"><img src="/tex/3ba9ca5ab07d4c987d667c9f4956512c.svg?invert_in_darkmode&sanitize=true" align=middle width=118.8451539pt height=19.726228499999998pt/></p> <p align="center"><img src="/tex/50aaf8695606a64a2aba3412a4cd7ca3.svg?invert_in_darkmode&sanitize=true" align=middle width=178.72117724999998pt height=19.726228499999998pt/></p> <p align="center"><img src="/tex/f7e35892f79b733caf605eb9762d82c0.svg?invert_in_darkmode&sanitize=true" align=middle width=170.03593694999998pt height=19.726228499999998pt/></p> <p align="center"><img src="/tex/efbfbcd0f130f2b91fea06b34868e681.svg?invert_in_darkmode&sanitize=true" align=middle width=66.2097216pt height=11.232861749999998pt/></p> <p align="center"><img src="/tex/07e57a540d72768f0e3d8ca41934ad8a.svg?invert_in_darkmode&sanitize=true" align=middle width=200.24691225pt height=19.726228499999998pt/></p> <p align="center"><img src="/tex/efbfbcd0f130f2b91fea06b34868e681.svg?invert_in_darkmode&sanitize=true" align=middle width=66.2097216pt height=11.232861749999998pt/></p> <p align="center"><img src="/tex/8b86a228922df2e57a458e4cbd5379e8.svg?invert_in_darkmode&sanitize=true" align=middle width=186.47236739999997pt height=17.399144399999997pt/></p> <p align="center"><img src="/tex/efbfbcd0f130f2b91fea06b34868e681.svg?invert_in_darkmode&sanitize=true" align=middle width=66.2097216pt height=11.232861749999998pt/></p>

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

Auxiliary Information

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.

Visualization

We export all solutions in a legacy VTK format. For visualizing these files, we suggest using VisIt

Examples

Check out the examples folder to see how to use our syntax.

Citing

If you use eFEMpart in published work, I would appreciate you starring this Github page, and using the following citation:

@misc{eFEMpart2019,
  author = {Eastham, Patrick S},
  title = {{eFEMpart}},
  year = {2019},
  publisher = {GitHub},
  journal = {GitHub repository},
  doi = {10.5281/zenodo.3369788},
  howpublished = {\url{https://github.com/pseastham/eFEMpart}},
}