evaluatePrincipalStrain

Evaluate principal strain at nodal locations

Syntax

pStrain = evaluatePrincipalStrain(structuralresults)

Description

example

pStrain = evaluatePrincipalStrain(structuralresults) evaluates principal strain at nodal locations using strain values from structuralresults. For a dynamic structural model, evaluatePrincipalStrain evaluates principal strain for all time-steps.

Examples

collapse all

Solve a static structural model representing a bimetallic cable under tension, and compute octahedral shear strain.

Create a structural model.

structuralmodel = createpde('structural','static-solid');

Create the geometry and include it in the model. Plot the geometry.

gm = multicylinder([0.01,0.015],0.05);
structuralmodel.Geometry = gm;
pdegplot(structuralmodel,'FaceLabels','on', ...
                         'CellLabels','on', ...
                         'FaceAlpha',0.5)

Specify the Young's modulus and Poisson's ratio for each metal.

structuralProperties(structuralmodel,'Cell',1,'YoungsModulus',110E9, ...
                                              'PoissonsRatio',0.28);
structuralProperties(structuralmodel,'Cell',2,'YoungsModulus',210E9, ...
                                              'PoissonsRatio',0.3);

Specify that faces 1 and 4 are fixed boundaries.

structuralBC(structuralmodel,'Face',[1,4],'Constraint','fixed');

Specify the surface traction for faces 2 and 5.

structuralBoundaryLoad(structuralmodel,'Face',[2,5], ...
                                       'SurfaceTraction',[0;0;100]);

Generate a mesh and solve the problem.

generateMesh(structuralmodel);
structuralresults = solve(structuralmodel)
structuralresults = 
  StaticStructuralResults with properties:

      Displacement: [1x1 struct]
            Strain: [1x1 struct]
            Stress: [1x1 struct]
    VonMisesStress: [22281x1 double]
              Mesh: [1x1 FEMesh]

Evaluate the principal strain at nodal locations.

pStrain = evaluatePrincipalStrain(structuralresults);

Use the principal strain to evaluate the first and second invariant of strain.

I1 = pStrain.e1 + pStrain.e2 + pStrain.e3;
I2 = pStrain.e1.*pStrain.e2 + pStrain.e2.*pStrain.e3 + pStrain.e3.*pStrain.e1;
tauOct = sqrt(2*(I1.^2 -3*I2))/3;
pdeplot3D(structuralmodel,'ColorMapData',tauOct)

Evaluate the principal strain and octahedral shear strain in a beam under a harmonic excitation.

Create a transient dynamic model for a 3-D problem.

structuralmodel = createpde('structural','transient-solid');

Create a geometry and include it in the model. Plot the geometry.

gm = multicuboid(0.06,0.005,0.01);
structuralmodel.Geometry = gm;
pdegplot(structuralmodel,'FaceLabels','on','FaceAlpha',0.5)
view(50,20)

Specify the Young's modulus, Poisson's ratio, and mass density of the material.

structuralProperties(structuralmodel,'YoungsModulus',210E9, ...
                                     'PoissonsRatio',0.3, ...
                                     'MassDensity',7800);

Fix one end of the beam.

structuralBC(structuralmodel,'Face',5,'Constraint','fixed');

Apply a sinusoidal displacement along the y-direction on the end opposite the fixed end of the beam.

structuralBC(structuralmodel,'Face',3,'YDisplacement',1E-4,'Frequency',50);

Generate a mesh.

generateMesh(structuralmodel,'Hmax',0.01);

Specify the zero initial displacement and velocity.

structuralIC(structuralmodel,'Displacement',[0;0;0],'Velocity',[0;0;0]);

Solve the model.

tlist = 0:0.002:0.2;
structuralresults = solve(structuralmodel,tlist);

Evaluate the principal strain in the beam.

pStrain = evaluatePrincipalStrain(structuralresults);

Use the principal strain to evaluate the first and second invariants.

I1 = pStrain.e1 + pStrain.e2 + pStrain.e3;
I2 = pStrain.e1.*pStrain.e2 + pStrain.e2.*pStrain.e3 + pStrain.e3.*pStrain.e1;

Use the stress invariants to compute the octahedral shear strain.

tauOct = sqrt(2*(I1.^2 -3*I2))/3;

Plot the results.

figure
pdeplot3D(structuralmodel,'ColorMapData',tauOct(:,end))

Input Arguments

collapse all

Solution of the structural analysis problem, specified as a StaticStructuralResults or TransientStructuralResults object. Create structuralresults by using the solve function.

Example: structuralresults = solve(structuralmodel)

Output Arguments

collapse all

Principal strain at the nodal locations, returned as a structure array.

Introduced in R2017b