Documentation

# FrequencyStructuralResults

Frequency response structural solution and its derived quantities

## Description

A `FrequencyStructuralResults` object contains the displacement, velocity, and acceleration in a form convenient for plotting and postprocessing.

Displacement, velocity, and acceleration are reported for the nodes of the triangular or tetrahedral mesh generated by `generateMesh`. The displacement, velocity, and acceleration values at the nodes appear as structure arrays in the `Displacement`, `Velocity`, and `Acceleration` properties. The fields of the structure arrays contain the components of the displacement, velocity, and acceleration at the nodal locations.

To evaluate the stress, strain, von Mises stress, principal stress, and principal strain at the nodal locations, use `evaluateStress`, `evaluateStrain`, `evaluateVonMisesStress`, `evaluatePrincipalStress`, and `evaluatePrincipalStrain`, respectively.

To evaluate the reaction forces on a specified boundary, use `evaluateReaction`.

To interpolate the displacement, velocity, acceleration, stress, strain, and von Mises stress to a custom grid, such as the one specified by `meshgrid`, use `interpolateDisplacement`, `interpolateVelocity`, `interpolateAcceleration`, `interpolateStress`, `interpolateStrain`, and `interpolateVonMisesStress`, respectively.

For a frequency response model with damping, the results are complex. Use functions such as `abs` and `angle` to obtain real-valued results, such as the magnitude and phase. See Solution to Frequency Response Structural Model with Damping.

## Creation

Solve a frequency response problem by using the `solve` function. This function returns a frequency response structural solution as a `FrequencyStructuralResults` object.

## Properties

expand all

Displacement values at the nodes, returned as a structure array. The fields of the structure array contain the components of the displacement at the nodal locations.

Data Types: `struct`

Velocity values at the nodes, returned as a structure array. The fields of the structure array contain the components of the velocity at the nodal locations.

Data Types: `struct`

Acceleration values at the nodes, returned as a structure array. The fields of the structure array contain the components of the acceleration at the nodal locations.

Data Types: `struct`

Solution frequencies, returned as a real vector. `SolutionFrequencies` is the same as the `flist` input to `solve`.

Data Types: `double`

Finite element mesh, returned as a `FEMesh` object. For details, see FEMesh Properties.

## Object Functions

 `evaluateStress` Evaluate stress for dynamic structural analysis problem `evaluateStrain` Evaluate strain for dynamic structural analysis problem `evaluateVonMisesStress` Evaluate von Mises stress for dynamic structural analysis problem `evaluateReaction` Evaluate reaction forces on boundary `evaluatePrincipalStress` Evaluate principal stress at nodal locations `evaluatePrincipalStrain` Evaluate principal strain at nodal locations `interpolateDisplacement` Interpolate displacement at arbitrary spatial locations `interpolateVelocity` Interpolate velocity at arbitrary spatial locations for all time or frequency steps for dynamic structural model `interpolateAcceleration` Interpolate acceleration at arbitrary spatial locations for all time or frequency steps for dynamic structural model `interpolateStress` Interpolate stress at arbitrary spatial locations `interpolateStrain` Interpolate strain at arbitrary spatial locations `interpolateVonMisesStress` Interpolate von Mises stress at arbitrary spatial locations

## Examples

collapse all

Solve a frequency response problem with damping. The resulting displacement values are complex. To obtain the magnitude and phase of displacement, use the `abs` and `angle` functions, respectively.

Solve the problem by using the direct integration approach and by using the results of modal analysis.

Modal Analysis

Create a modal analysis model for a 3-D problem.

`modelM = createpde('structural','modal-solid');`

Create the geometry and include it in the model.

```gm = multicuboid(10,10,0.025); modelM.Geometry = gm;```

Generate a mesh.

`msh = generateMesh(modelM);`

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

```structuralProperties(modelM,'YoungsModulus',2E11, ... 'PoissonsRatio',0.3, ... 'MassDensity',8000);```

Identify faces for applying boundary constraints and loads by plotting the geometry with the face and edge labels.

`pdegplot(gm,'FaceLabels','on','FaceAlpha',0.5)`

```figure pdegplot(gm,'EdgeLabels','on','FaceAlpha',0.5)```

Specify constraints on the sides of the plate (faces 3, 4, 5, and 6) to prevent rigid body motions.

`structuralBC(modelM,'Face',[3,4,5,6],'Constraint','fixed');`

Solve the problem for the frequency range from `-Inf` to` 12*pi`.

`Rm = solve(modelM,'FrequencyRange',[-Inf,12*pi]);`

Frequency Response Analysis

Create a frequency response analysis model for a 3-D problem.

`modelFR = createpde('structural','frequency-solid');`

Use the same geometry and mesh as for the modal analysis.

```modelFR.Geometry = gm; modelFR.Mesh = msh;```

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

`structuralProperties(modelFR,'YoungsModulus',2E11,'PoissonsRatio',0.3,'MassDensity',8000);`

Specify the same constraints on the midsection of the geometry to prevent rigid body modes.

`structuralBC(modelFR,'Face',[3,4,5,6],'Constraint','fixed');`

Specify the pressure loading on top of the plate (face 2) as a short rectangular pressure pulse. In the frequency domain, this pressure pulse is a unit load uniformly distributed across all frequencies.

`structuralBoundaryLoad(modelFR,'Face',2,'Pressure',1E2);`

Specify the Rayleigh damping parameters. For typical damping of 2%, only one mode is active. The equation ${\zeta }_{\mathit{i}}=\frac{1}{2}\left(\frac{\alpha }{{\omega }_{\mathit{i}}}+\beta {\omega }_{\mathit{i}}\right)$ for ${\omega }_{\mathit{i}}\approx 15$ and $\beta =0$ yields $\alpha \approx 0.6$.

`structuralDamping(modelFR,'proportional','Alpha',0.6);`

Solve the model using the default direct integration method.

```flist = [0,1,1.5,linspace(2,3,100),3.5,4,5,6]*2*pi; Rfr = solve(modelFR,flist);```

Interpolate the displacement at the center of the top surface of the plate.

`iDisp = interpolateDisplacement(Rfr,[0;0;0.025]);`

Plot the results. For a model with damping, the resulting displacement values are complex. To obtain the magnitude and phase, use the `abs` and `angle` functions, respectively.

```figure subplot(2,1,1) plot(Rfr.SolutionFrequencies/2/pi,abs(iDisp.Magnitude)); title('Magnitude') subplot(2,1,2) plot(Rfr.SolutionFrequencies/2/pi,angle(iDisp.Magnitude)); title('Phase')```

To speed up computations, solve the model using the modal results.

`RfrModal = solve(modelFR,flist,'ModalResults',Rm);`

Interpolate the displacement at the center of the top surface of the plate.

`iDisp = interpolateDisplacement(RfrModal,[0;0;0.025]);`

Plot the magnitude and phase of the displacement.

```figure subplot(2,1,1) plot(RfrModal.SolutionFrequencies/2/pi,abs(iDisp.Magnitude)); title('Magnitude') subplot(2,1,2) plot(RfrModal.SolutionFrequencies/2/pi,angle(iDisp.Magnitude)); title('Phase')```

Get trial now