# 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 transient and frequency response structural models, `evaluatePrincipalStrain` evaluates principal strain for all time- or frequency-steps, respectively.```

## 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 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 FEStruct] Strain: [1x1 FEStruct] Stress: [1x1 FEStruct] 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 Young's modulus, Poisson's ratio, and the 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`, `TransientStructuralResults`, or `FrequencyStructuralResults` 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.

## Version History

Introduced in R2017b