Skip to content

KnutAM/FerriteAssembly.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FerriteAssembly

Dev Build Status Coverage

NOTE: The main branch only supports Ferrite#master (soon v1.0). To install, run

pkg> add Ferrite#master
pkg> add https://github.com/KnutAM/MaterialModelsBase.jl.git
pkg> add https://github.com/KnutAM/FerriteAssembly.jl.git

FerriteAssembly

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.

Key features

  • 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 with Ferrite's ConstraintHandler.
    • 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.

Using with Ferrite.jl's master branch

This badge shows if FerriteAssembly#main is compatible with Ferrite#master. Currently, it will likely remain incompatible until some open issues regarding interfaces for the new Ferrite v1.0 release are solved.

Ferrite#master