The assembly of the global linear system of equation is covered on this page. Essentially, we call one function assemble_global!
which manipulates the input arguments K
and f
and allocate once the element stiffness matrix and element load vector Ke
and fe
, respectively. Within this function assemble_element!
is called, which fills Ke
and fe
with the correct element values
ConvexDamage.assemble_global!
— Functionassemble_global!(globaldata::StructuralModel{dim}, state::StructuralStateVariables) where dim
Assembles the local contribution into the global matrix and vector respectively which are stored in state.system_array
ConvexDamage.assemble_element!
— Functionassemble_element!(ke, ge, cell, cv, fv, materialstate, ue, dim)
ke
is the element stiffness matrix (allocated once)ge
is the element load vector (allocated once) should be names fe actuallycell
is the current finite elementcv
is the current element cellvalue, i.e. element shape-function + quadrature evaluationfv
is the current element facevalue, i.e. face shape function + quadrature evaluationmaterialstate
is one of the implemented damage material statesue
current element displacement vector of the newton iterationdim
physical dimension of the problem maybe gonna change this later
Assembles ke
which is defined as
\[K^e_{ij} = \int_{T\in\mathcal{T}_h} \nabla\delta \boldsymbol{u}_i : \frac{\boldsymbol{\partial P}}{\boldsymbol{\partial F}} : \nabla \boldsymbol{u}_j\]
and ge
\[g^e_i = \int_{T\in\mathcal{T}_h}\nabla \delta \boldsymbol{u}_i : \boldsymbol{P} - \boldsymbol{u}\cdot \boldsymbol{b}\]