# 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: [22767x1 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

expand all