Main Content

TransientStructuralResults

Transient structural solution and derived quantities

Description

A TransientStructuralResults 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 FEStruct objects in the Displacement, Velocity, and Acceleration properties. The properties of these objects 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.

Creation

Solve a dynamic linear elasticity problem by using the solve function. This function returns a transient structural solution as a TransientStructuralResults object.

Properties

expand all

This property is read-only.

Displacement values at the nodes, returned as an FEStruct object. The properties of this object contain components of displacement at nodal locations.

This property is read-only.

Velocity values at the nodes, returned as an FEStruct object. The properties of this object contain components of velocity at nodal locations.

This property is read-only.

Acceleration values at the nodes, returned as an FEStruct object. The properties of this object contain components of acceleration at nodal locations.

This property is read-only.

Solution times, returned as a real vector. SolutionTimes is the same as the tlist input to solve.

Data Types: double

This property is read-only.

Finite element mesh, returned as a FEMesh object.

Object Functions

evaluateStressEvaluate stress for dynamic structural analysis problem
evaluateStrainEvaluate strain for dynamic structural analysis problem
evaluateVonMisesStressEvaluate von Mises stress for dynamic structural analysis problem
evaluateReactionEvaluate reaction forces on boundary
evaluatePrincipalStressEvaluate principal stress at nodal locations
evaluatePrincipalStrainEvaluate principal strain at nodal locations
filterByIndexAccess transient results for specified time steps
interpolateDisplacementInterpolate displacement at arbitrary spatial locations
interpolateVelocityInterpolate velocity at arbitrary spatial locations for all time or frequency steps for dynamic structural problem
interpolateAccelerationInterpolate acceleration at arbitrary spatial locations for all time or frequency steps for dynamic structural problem
interpolateStressInterpolate stress at arbitrary spatial locations
interpolateStrainInterpolate strain at arbitrary spatial locations
interpolateVonMisesStressInterpolate von Mises stress at arbitrary spatial locations

Examples

collapse all

Solve for the transient response of a thin 3-D plate under a harmonic load at the center.

Create a geometry of a thin 3-D plate and plot it.

gm = multicuboid([5,0.05],[5,0.05],0.01);
pdegplot(gm,FaceLabels="on",FaceAlpha=0.5)

Figure contains an axes object. The axes object contains 6 objects of type quiver, text, patch, line.

Zoom in to see the face labels on the small plate at the center.

figure
pdegplot(gm,FaceLabels="on",FaceAlpha=0.25)
axis([-0.2 0.2 -0.2 0.2 -0.1 0.1])

Figure contains an axes object. The axes object contains 6 objects of type quiver, text, patch, line.

Create an femodel object for transient structural analysis and include the geometry.

model = femodel(AnalysisType="structuralTransient", ...
                Geometry=gm);

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

model.MaterialProperties = ...
    materialProperties(YoungsModulus=210E9, ...
                       PoissonsRatio=0.3, ...
                       MassDensity=7800);

Specify that all faces on the periphery of the thin 3-D plate are fixed boundaries.

model.FaceBC(5:8) = faceBC(Constraint="fixed");

Apply a sinusoidal pressure load on the small face at the center of the plate.

First, define a sinusoidal load function, sinusoidalLoad, to model a harmonic load. This function accepts the load magnitude (amplitude), the location and state structure arrays, frequency, and phase. Because the function depends on time, it must return a matrix of NaN of the correct size when state.time is NaN. Solvers check whether a problem is nonlinear or time-dependent by passing NaN state values and looking for returned NaN values.

function Tn = sinusoidalLoad(load,location,state,Frequency,Phase)
if isnan(state.time)
    Tn = NaN*(location.nx);
    return
end
if isa(load,"function_handle")
    load = load(location,state);
else
    load = load(:);
end
% Transient model excited with harmonic load
Tn = load.*sin(Frequency.*state.time + Phase);
end

Now, apply a sinusoidal pressure load on face 12 by using the sinusoidalLoad function.

Pressure = 5e7;
Frequency = 25;
Phase = 0;
pressurePulse = @(location,state) ...
         sinusoidalLoad(Pressure,location,state,Frequency,Phase);
model.FaceLoad(12) = faceLoad(Pressure=pressurePulse);

Generate a mesh with linear elements.

model = generateMesh(model,GeometricOrder="linear",Hmax=0.2);

Specify zero initial displacement and velocity.

model.CellIC = cellIC(Displacement=[0;0;0],Velocity=[0;0;0]);

Solve the model.

tlist = linspace(0,1,300);
R = solve(model,tlist);

The solver finds the values of the displacement, velocity, and acceleration at the nodal locations. To access these values, use R.Displacement, R.Velocity, and so on. The displacement, velocity, and acceleration values are returned as FEStruct objects with the properties representing their components. Note that properties of an FEStruct object are read-only.

R.Displacement
ans = 
  FEStruct with properties:

           ux: [2217x300 double]
           uy: [2217x300 double]
           uz: [2217x300 double]
    Magnitude: [2217x300 double]

R.Velocity
ans = 
  FEStruct with properties:

           vx: [2217x300 double]
           vy: [2217x300 double]
           vz: [2217x300 double]
    Magnitude: [2217x300 double]

R.Acceleration
ans = 
  FEStruct with properties:

           ax: [2217x300 double]
           ay: [2217x300 double]
           az: [2217x300 double]
    Magnitude: [2217x300 double]

Version History

Introduced in R2018a