Installation: FerriteAssembly requires the non-registered package
MaterialModelsBase.jl
,
so to install, run
pkg> add https://github.com/KnutAM/MaterialModelsBase.jl.git
pkg> add https://github.com/KnutAM/FerriteAssembly.jl.git
The goal of FerriteAssembly is to provide a simple, but versatile and efficient, structure for assembling in Ferrite.jl.
At its core, FerriteAssembly.jl
lets you overload some of the following functions
element_routine!(Ke, re, state, ae, material, cellvalues, cellbuffer)
element_residual!(re, state, ae, material, cellvalues, cellbuffer)
facet_routine!(Ke, re, ae, material, facetvalues, facetbuffer)
facet_residual!(re, ae, material, facetvalues, facetbuffer)
define a domainbuffer
with setup_domainbuffer
,
and then call work!(assembler, domainbuffer)
with an assembler
of your choice.
This makes it easy to share different elements between researchers,
and provides a structured way to solve various Ferrite.jl
problems.
- What FerriteAssembly helps with
- Assemble into system vectors and/or matrices
- Integrate functions over the domain
- Postprocess cell data over the domain
- Convenience features
LoadHandler
for adding Neumann boundary conditions and body loads/source terms as easy as Dirichlet boundary conditions withFerrite
'sConstraintHandler
.ExampleElements
submodule with various behaviors for quick testing- Built-in support for mechanical materials following the
MaterialModelsBase.jl
interface
- Supports many different cases
- Easy switching between sequential and threaded work.
- Multiple domains with different fields, interpolations, and/or element routines.
- Efficient automatic differentiation for tangent stiffness.
- Handling old and new state variables
See the documentation for more details.
This badge shows if FerriteAssembly#main
is compatible with Ferrite#master
.