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.gitThe 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
LoadHandlerfor adding Neumann boundary conditions and body loads/source terms as easy as Dirichlet boundary conditions withFerrite'sConstraintHandler.ExampleElementssubmodule with various behaviors for quick testing- Built-in support for mechanical materials following the
MaterialModelsBase.jlinterface
- 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.