Assembly

Ferrite.start_assembleFunction
start_assemble([N=0]) -> Assembler

Create an Assembler object which can be used to assemble element contributions to the global sparse matrix. Use assemble! for each element, and end_assemble, to finalize the assembly and return the sparse matrix.

Note that giving a sparse matrix as input can be more efficient. See below and as described in the manual.

Note

When the same matrix pattern is used multiple times (for e.g. multiple time steps or Newton iterations) it is more efficient to create the sparse matrix once and reuse the same pattern. See the manual section on assembly.

source
start_assemble(K::SparseMatrixCSC;            fillzero::Bool=true) -> AssemblerSparsityPattern
start_assemble(K::SparseMatrixCSC, f::Vector; fillzero::Bool=true) -> AssemblerSparsityPattern

Create a AssemblerSparsityPattern from the matrix K and optional vector f.

start_assemble(K::Symmetric{SparseMatrixCSC};                 fillzero::Bool=true) -> AssemblerSymmetricSparsityPattern
start_assemble(K::Symmetric{SparseMatrixCSC}, f::Vector=Td[]; fillzero::Bool=true) -> AssemblerSymmetricSparsityPattern

Create a AssemblerSymmetricSparsityPattern from the matrix K and optional vector f.

AssemblerSparsityPattern and AssemblerSymmetricSparsityPattern allocate workspace necessary for efficient matrix assembly. To assemble the contribution from an element, use assemble!.

The keyword argument fillzero can be set to false if K and f should not be zeroed out, but instead keep their current values.

source
Ferrite.assemble!Function
assemble!(a::Assembler, dofs, Ke)

Assembles the element matrix Ke into a.

source
assemble!(a::Assembler, rowdofs, coldofs, Ke)

Assembles the matrix Ke into a according to the dofs specified by rowdofs and coldofs.

source
assemble!(g, dofs, ge)

Assembles the element residual ge into the global residual vector g.

source
assemble!(A::AbstractSparseAssembler, dofs::AbstractVector{Int}, Ke::AbstractMatrix)
assemble!(A::AbstractSparseAssembler, dofs::AbstractVector{Int}, Ke::AbstractMatrix, fe::AbstractVector)

Assemble the element stiffness matrix Ke (and optional force vector fe) into the global stiffness (and force) in A, given the element degrees of freedom dofs.

This is equivalent to K[dofs, dofs] += Ke and f[dofs] += fe, where K is the global stiffness matrix and f the global force/residual vector, but more efficient.

source
Ferrite.end_assembleFunction
end_assemble(a::Assembler) -> K

Finalizes an assembly. Returns a sparse matrix with the assembled values. Note that this step is not necessary for AbstractSparseAssemblers.

source
Ferrite.create_sparsity_patternFunction
create_sparsity_pattern(dh::DofHandler; coupling)

Create the sparsity pattern corresponding to the degree of freedom numbering in the DofHandler. Return a SparseMatrixCSC with stored values in the correct places.

The keyword argument coupling can be used to specify how fields (or components) in the dof handler couple to each other. coupling should be a square matrix of booleans with number of rows/columns equal to the total number of fields, or total number of components, in the DofHandler with true if fields are coupled and false if not. By default full coupling is assumed.

See the Sparsity Pattern section of the manual.

source
create_sparsity_pattern(dh::AbstractDofHandler, ch::ConstraintHandler; coupling)

Create a sparsity pattern accounting for affine constraints in ch. See the Affine Constraints section of the manual for further details.

source
Ferrite.create_symmetric_sparsity_patternFunction
create_symmetric_sparsity_pattern(dh::DofHandler; coupling)

Create the symmetric sparsity pattern corresponding to the degree of freedom numbering in the DofHandler by only considering the upper triangle of the matrix. Return a Symmetric{SparseMatrixCSC}.

See the Sparsity Pattern section of the manual.

source
create_symmetric_sparsity_pattern(dh::AbstractDofHandler, ch::ConstraintHandler, coupling)

Create a symmetric sparsity pattern accounting for affine constraints in ch. See the Affine Constraints section of the manual for further details.

source