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/.