kelvinMap

Below is a demonstration of the features of the kelvinMap function

Contents

clear; close all; clc;

Syntax

cKelvin=kelvinMap(c);

Description

This function creates the Kelvin mapped (6x6) tensor form of the 4-th order (3x3x3x3) input tensor.

Examples

Example 1: The Kelvin mapping of the elasticity tensor for Hooke's law with Lame parameters

%Constructing 4th order base tensor set
I=eye(3,3); %The 2nd order identity tensor
II1=dyadicProduct(I,I,1); %4th order base tensor 1
II3=dyadicProduct(I,I,3); %4th order base tensor 3

%Lame parameters for Hooke's law
mu=2; %The shear modulus
lambda=3; %The lambda lame parameter

%Construct 4th order stiffness tensor
C=lambda.*II1+2.*mu.*II3;

Derive Kelvin mapped tensor

Ck=kelvinMap(C)
Ck =

    7.0000    3.0000    3.0000         0         0         0
    3.0000    7.0000    3.0000         0         0         0
    3.0000    3.0000    7.0000         0         0         0
         0         0         0    4.0000         0         0
         0         0         0         0    4.0000         0
         0         0         0         0         0    4.0000

The Kelvin mapping for eigenstiffness determination

[V,D]=eig(Ck)
V =

    0.4082    0.7071         0         0         0    0.5774
    0.4082   -0.7071         0         0         0    0.5774
   -0.8165         0         0         0         0    0.5774
         0         0    1.0000         0         0         0
         0         0         0    1.0000         0         0
         0         0         0         0    1.0000         0


D =

    4.0000         0         0         0         0         0
         0    4.0000         0         0         0         0
         0         0    4.0000         0         0         0
         0         0         0    4.0000         0         0
         0         0         0         0    4.0000         0
         0         0         0         0         0   13.0000

Using symbolic variables

try
    %Lame parameters for Hooke's law
    syms mu lambda; %Create symbolic parameters

    %Construct 4th order stiffness tensor
    C=lambda.*II1+2.*mu.*II3;

Derive Kelvin mapped tensor

    Ck=kelvinMap(C)
 
Ck =
 
[lambda + 2*mu,        lambda,        lambda,    0,    0,    0]
[       lambda, lambda + 2*mu,        lambda,    0,    0,    0]
[       lambda,        lambda, lambda + 2*mu,    0,    0,    0]
[            0,             0,             0, 2*mu,    0,    0]
[            0,             0,             0,    0, 2*mu,    0]
[            0,             0,             0,    0,    0, 2*mu]
 

The Kelvin mapping for eigenstiffness determination

    [V,D]=eig(Ck)
 
V =
 
[-1, -1, 0, 0, 0, 1]
[ 1,  0, 0, 0, 0, 1]
[ 0,  1, 0, 0, 0, 1]
[ 0,  0, 1, 0, 0, 0]
[ 0,  0, 0, 1, 0, 0]
[ 0,  0, 0, 0, 1, 0]
 
 
D =
 
[2*mu,    0,    0,    0,    0,               0]
[   0, 2*mu,    0,    0,    0,               0]
[   0,    0, 2*mu,    0,    0,               0]
[   0,    0,    0, 2*mu,    0,               0]
[   0,    0,    0,    0, 2*mu,               0]
[   0,    0,    0,    0,    0, 3*lambda + 2*mu]
 
end

Example 2: The Kelvin mapping of the elasticity tensor for Hooke's law with bulk/shear modulus

% Using mu and bulk modulus parameters
mu=2; %The shear modulus
lambda=3; %The lambda lame parameter
k=lambda+2/3*mu; %Bulk modulus

%Construct 4th order stiffness tensor
C=(k-2/3*mu).*II1+2.*mu.*II3; %Construct 4th order stiffness tensor

Derive Kelvin mapped tensor

Ck=kelvinMap(C)
Ck =

    7.0000    3.0000    3.0000         0         0         0
    3.0000    7.0000    3.0000         0         0         0
    3.0000    3.0000    7.0000         0         0         0
         0         0         0    4.0000         0         0
         0         0         0         0    4.0000         0
         0         0         0         0         0    4.0000

The Kelvin mapping for eigenstiffness determination

[V,D]=eig(Ck)
V =

    0.4082    0.7071         0         0         0    0.5774
    0.4082   -0.7071         0         0         0    0.5774
   -0.8165         0         0         0         0    0.5774
         0         0    1.0000         0         0         0
         0         0         0    1.0000         0         0
         0         0         0         0    1.0000         0


D =

    4.0000         0         0         0         0         0
         0    4.0000         0         0         0         0
         0         0    4.0000         0         0         0
         0         0         0    4.0000         0         0
         0         0         0         0    4.0000         0
         0         0         0         0         0   13.0000

Using symbolic variables

try
    syms mu k; %Create symbolic parameters

    %Construct 4th order stiffness tensor
    C=(k-2/3*mu).*II1+2.*mu.*II3; %Construct 4th order stiffness tensor

Derive Kelvin mapped tensor

    Ck=kelvinMap(C)
 
Ck =
 
[k + (4*mu)/3, k - (2*mu)/3, k - (2*mu)/3,    0,    0,    0]
[k - (2*mu)/3, k + (4*mu)/3, k - (2*mu)/3,    0,    0,    0]
[k - (2*mu)/3, k - (2*mu)/3, k + (4*mu)/3,    0,    0,    0]
[           0,            0,            0, 2*mu,    0,    0]
[           0,            0,            0,    0, 2*mu,    0]
[           0,            0,            0,    0,    0, 2*mu]
 

The Kelvin mapping for eigenstiffness determination

    [V,D]=eig(Ck)
 
V =
 
[1, -1, -1, 0, 0, 0]
[1,  1,  0, 0, 0, 0]
[1,  0,  1, 0, 0, 0]
[0,  0,  0, 1, 0, 0]
[0,  0,  0, 0, 1, 0]
[0,  0,  0, 0, 0, 1]
 
 
D =
 
[3*k,    0,    0,    0,    0,    0]
[  0, 2*mu,    0,    0,    0,    0]
[  0,    0, 2*mu,    0,    0,    0]
[  0,    0,    0, 2*mu,    0,    0]
[  0,    0,    0,    0, 2*mu,    0]
[  0,    0,    0,    0,    0, 2*mu]
 
end

GIBBON www.gibboncode.org

Kevin Mattheus Moerman, [email protected]

GIBBON footer text

License: https://github.com/gibbonCode/GIBBON/blob/master/LICENSE

GIBBON: The Geometry and Image-based Bioengineering add-On. A toolbox for image segmentation, image-based modeling, meshing, and finite element analysis.

Copyright (C) 2006-2020 Kevin Mattheus Moerman

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.