SECTION 16.3 OF CHAPTER 16: Corotational formulation (CR)

Numerical evaluation of the tangent stiffness matrix

A central finite-difference tangent obtained directly from the element internal nodal force vector.

CorotationalNumerical tangentCentral differencesPlane stressMATLAB

01

Main idea

This chapter was written by me, Chiara, based on an idea by Mircea — an idea I liked so much that I simply would not let him write it himself.

StrainSmall
DisplacementLarge
MaterialLinear elastic
Stress statePlane stress

Sections 16.1 and 16.2 use different approximations of the element tangent stiffness matrix. In the present section, the tangent matrix is obtained directly by central numerical differentiation of the element internal nodal force vector:

kel=feluel\boldsymbol{k}_{el}=\frac{\partial\boldsymbol{f}_{el}}{\partial\boldsymbol{u}_{el}}

The nodal displacement vector of the 4-node quadrilateral element is:

uel=(u1  v1  u2  v2  u3  v3  u4  v4)T\boldsymbol{u}_{el}=\left(u_1\;v_1\;u_2\;v_2\;u_3\;v_3\;u_4\;v_4\right)^T

02

Central finite differences

Let δ\delta denote the numerical differentiation perturbation. For each element degree of freedom ii, two perturbed displacement vectors are introduced:

uel+=uel+δei\boldsymbol{u}_{el}^{+}=\boldsymbol{u}_{el}+\delta\boldsymbol{e}_i
uel=uelδei\boldsymbol{u}_{el}^{-}=\boldsymbol{u}_{el}-\delta\boldsymbol{e}_i

Here, ei\boldsymbol{e}_i is the eight-component unit vector associated with degree of freedom ii: its iith component is one and all other components are zero. Column ii of the element tangent matrix is approximated by:

kel(:,i)fel ⁣(uel+δei)fel ⁣(uelδei)2δ\boxed{\boldsymbol{k}_{el}(:,i)\approx\frac{\boldsymbol{f}_{el}\!\left(\boldsymbol{u}_{el}+\delta\boldsymbol{e}_i\right)-\boldsymbol{f}_{el}\!\left(\boldsymbol{u}_{el}-\delta\boldsymbol{e}_i\right)}{2\delta}}

For example, for i=3i=3:

e3=(0  0  1  0  0  0  0  0)T\boldsymbol{e}_3=\left(0\;0\;1\;0\;0\;0\;0\;0\right)^T

The MATLAB variable corresponding to δ\delta is dd.

03

Element internal-force reevaluation

For each +δ+\delta or δ-\delta perturbation, the 8×18\times1 element internal nodal force vector fel\boldsymbol{f}_{el} is recomputed.

The rot routine is called again for every perturbation. It computes the rigid-body rotation and the corotated nodal-displacement vector:

u~el=(I2R)xel0+uel\widetilde{\boldsymbol{u}}_{el}=(\boldsymbol{I}_2-\boldsymbol{R})\boldsymbol{x}_{el0}+\boldsymbol{u}_{el}

where xel0\boldsymbol{x}_{el0} contains the nodal coordinates of the initial element configuration and uel\boldsymbol{u}_{el} contains the current nodal displacements.

Consequently, each perturbed state includes the updated rigid-body rotation, corotational configuration, corotated nodal displacements, Jacobian matrix, strain-displacement matrix, strains, stresses, current thickness, and internal nodal force vector. The calculation follows the sequence:

uelRu~elJ,Bεσfel\boldsymbol{u}_{el}\longrightarrow\boldsymbol{R}\longrightarrow\widetilde{\boldsymbol{u}}_{el}\longrightarrow\boldsymbol{J},\boldsymbol{B}\longrightarrow\boldsymbol{\varepsilon}\longrightarrow\boldsymbol{\sigma}\longrightarrow\boldsymbol{f}_{el}

04

MATLAB implementation

The calculation of the element internal nodal force vector is placed in the separate subprogram fel_el. Therefore, the same sequence is used for the actual state and for the +δ+\delta and δ-\delta states without repeating the code.

No analytical differentiation subprogram such as deltaB, used in Section 16.2, is required.

In the following excerpt, nod contains the four node numbers of the current element; u and v are the global nodal-displacement vectors in the xx- and yy-directions; and inod is the local node position associated with the perturbed degree of freedom:

The relevant part of stiff.m is shown below.

    % Internal nodal force vector in the current configuration:
    istore=1;                % store strains and stresses
    fel_el
    fel=felt;

    % Central numerical differentiation of the element internal force:
    istore=0;                % do not store perturbed strains and stresses
    for ipert=1:8
        inod=ceil(ipert/2);

        % +dd perturbation:
        if rem(ipert,2)==1
            u(nod(inod))=u(nod(inod))+dd;
        else
            v(nod(inod))=v(nod(inod))+dd;
        end
        fel_el
        felp=felt;

        % Change from +dd to -dd:
        if rem(ipert,2)==1
            u(nod(inod))=u(nod(inod))-2*dd;
        else
            v(nod(inod))=v(nod(inod))-2*dd;
        end
        fel_el
        felm=felt;

        % Restore the unperturbed displacement:
        if rem(ipert,2)==1
            u(nod(inod))=u(nod(inod))+dd;
        else
            v(nod(inod))=v(nod(inod))+dd;
        end

        % Column ipert of the tangent stiffness matrix:
        kel(:,ipert)=(felp-felm)/(2*dd);
    end

The relevant part of fel_el.m is shown below.

    strn=B*sel;
    sg=DHooke*strn;
    th1=(1-nu/(1-nu)*(strn(1)+strn(2)))*th;
    felt=felt+th1*(B'*sg)*detJ;

05

Sensitivity to the perturbation δ

Example 1 of Section 16.2 was used to investigate the influence of the numerical differentiation perturbation δ\delta.

The computations used:

nstep=10tol=105n_{\mathrm{step}}=10\qquad \mathrm{tol}=10^{-5}
δ\deltaCPU time
(s)
Total
iterations
Mean
ηsym\eta_{\mathrm{sym}}
10310^{-3}44.78671.3096×1021.3096\times10^{-2}
10510^{-5}44.396671.3096×1021.3096\times10^{-2}
10610^{-6}45.55671.3096×1021.3096\times10^{-2}
10710^{-7}46.53671.3096×1021.3096\times10^{-2}
10810^{-8}44.866671.3096×1021.3096\times10^{-2}
10910^{-9}43.774671.3096×1021.3096\times10^{-2}
101010^{-10}58.13691.3100×1021.3100\times10^{-2}

Convergence is practically unchanged for 10310^{-3} through 10910^{-9}. At δ=1010\delta=10^{-10}, a slight deterioration appears. For δ=1011\delta=10^{-11}, the iterative process no longer converges. The value adopted in the downloadable MATLAB program is:

δ=105\boxed{\delta=10^{-5}}

06

Symmetry criterion

The relative asymmetry of an element tangent matrix is measured by:

ηsym=kelkelTFkelF\boxed{\eta_{\mathrm{sym}}=\frac{\left\|\boldsymbol{k}_{el}-\boldsymbol{k}_{el}^{T}\right\|_F}{\left\|\boldsymbol{k}_{el}\right\|_F}}

Here, the Frobenius norm of a matrix A\boldsymbol{A} is:

AF=ijaij2\left\|\boldsymbol{A}\right\|_F=\sqrt{\sum_i\sum_j a_{ij}^{2}}

The symmetry indicator therefore measures the relative magnitude of the antisymmetric part of kel\boldsymbol{k}_{el}. A value close to zero indicates an approximately symmetric matrix.

For Section 16.3, the mean value is:

ηsym1.31×102\overline{\eta}_{\mathrm{sym}}\approx1.31\times10^{-2}

No artificial symmetrization is used. Artificial symmetrization was tested. It made convergence somewhat slower, and for δ=1010\delta=10^{-10} the symmetrized tangent no longer converged.

07

Comparison with Sections 16.1 and 16.2

All three formulations use the same element internal nodal force vector fel\boldsymbol{f}_{el} and therefore give the same final equilibrium results. The final stresses, displacements, and displacement derivatives are identical in Sections 16.1, 16.2, and 16.3.

For Example 1, the post-processed nodal axial stresses are:

σmax=50.519MPa\sigma_{\max}=50.519\,\mathrm{MPa}
σmin=50.711MPa\sigma_{\min}=-50.711\,\mathrm{MPa}
SectionTangentTotal
iterations
CPU time
(s)
Mean ηsym\eta_{\mathrm{sym}}
16.1Simple approximation; sr=0.5s_r=0.5384≈ 40.186.87×10176.87\times10^{-17}
16.2Improved analytical approximation68≈ 141.9060×1021.9060\times10^{-2}
16.3Central numerical differentiation, δ=105\delta=10^{-5}67≈ 44.41.310×1021.310\times10^{-2}

In Section 16.1, symmetry follows directly from the form:

BTDB\boldsymbol{B}^{T}\boldsymbol{D}\boldsymbol{B}

because D\boldsymbol{D} is symmetric. The measured asymmetry is therefore essentially roundoff error. Section 16.2 is the fastest of the three implementations. Section 16.3 gives essentially the same convergence rate without analytical differentiation of the tangent matrix.

08

Main conclusion and MATLAB package

The internal nodal force vectordetermines the equilibrium solution.\boxed{\begin{gathered}\text{The internal nodal force vector}\\\text{determines the equilibrium solution.}\end{gathered}}
The tangent stiffness matrixdetermines mainly how efficientlythat solution is reached.\boxed{\begin{gathered}\text{The tangent stiffness matrix}\\\text{determines mainly how efficiently}\\\text{that solution is reached.}\end{gathered}}

The identical final results are expected because the same fel\boldsymbol{f}_{el} is used in all three formulations.

The MATLAB package containing the central numerical-difference tangent and the two examples can be downloaded below.