Main Content

structuralDamping

Specify damping parameters for transient or frequency response structural model

Domain-specific structural workflow is not recommended. New features might not be compatible with this workflow. For help migrating your existing code to the unified finite element workflow, see Migration from Domain-Specific to Unified Workflow.

Description

structuralDamping(structuralmodel,"Alpha",a,"Beta",b) specifies proportional (Rayleigh) damping parameters a and b for a structuralmodel object.

For a frequency response model with damping, the results are complex. Use the abs and angle functions to obtain real-valued magnitude and phase, respectively.

example

structuralDamping(structuralmodel,"Zeta",z) specifies the modal damping ratio. Use this parameter when you solve a transient or frequency response model using the results of modal analysis.

example

damping = structuralDamping(___) returns the damping parameters object, using any of the previous input syntaxes.

Examples

collapse all

Specify proportional (Rayleigh) damping parameters for a beam.

Create a transient structural model.

 structuralModel = createpde("structural","transient-solid");

Import and plot the geometry.

 gm = importGeometry(structuralModel,"SquareBeam.stl");
 pdegplot(structuralModel,"FaceAlpha",0.5)

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

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

structuralProperties(structuralModel,"YoungsModulus",210E9,...
                                     "PoissonsRatio",0.3,...
                                     "MassDensity",7800);

Specify the Rayleigh damping parameters.

structuralDamping(structuralModel,"Alpha",10,"Beta",2)
ans = 
  StructuralDampingAssignment with properties:

      RegionType: 'Cell'
        RegionID: 1
    DampingModel: "proportional"
           Alpha: 10
            Beta: 2
            Zeta: []

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. To speed up computations, solve the model using the results of modal analysis.

Modal Analysis

Create a geometry representing a thin plate.

gm = multicuboid(10,10,0.025);

Create an femodel object for modal analysis and include the geometry in the model.

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

Generate a mesh.

model = generateMesh(model);

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

model.MaterialProperties = ...
    materialProperties(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(model.Geometry,FaceLabels="on",FaceAlpha=0.5)

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

figure
pdegplot(model.Geometry,EdgeLabels="on",FaceAlpha=0.5)

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

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

model.FaceBC([3,4,5,6]) = faceBC(Constraint="fixed");

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

Rm = solve(model,FrequencyRange=[-Inf,12*pi]);

Frequency Response Analysis

Switch the analysis type of the model to frequency response.

model.AnalysisType = "structuralFrequency";

Specify the pressure loading on top of the plate (face 2) to model an ideal impulse excitation. In the frequency domain, this pressure pulse is uniformly distributed across all frequencies.

model.FaceLoad(2) = faceLoad(Pressure=1E2);

First, solve the problem without damping.

flist = [0,1,1.5,linspace(2,3,100),3.5,4,5,6]*2*pi;
RfrModalU = solve(model,flist,ModalResults=Rm);

Now, solve the problem with damping equal to 2% of critical damping for all modes.

RfrModalAll = solve(model,flist, ...
                    ModalResults=Rm, ...
                    DampingZeta=0.02);

Solve the same problem with frequency-dependent damping. In this example, use the solution frequencies from flist and damping values between 1% and 10% of critical damping.

omega = flist;
zeta = linspace(0.01,0.1,length(omega));
zetaW = @(omegaMode) interp1(omega,zeta,omegaMode);

RfrModalFD = solve(model,flist, ...
                   ModalResults=Rm, ...
                   DampingZeta=zetaW);

Interpolate the displacement at the center of the top surface of the plate for all three cases.

iDispU = interpolateDisplacement(RfrModalU,[0;0;0.025]);
iDispAll = interpolateDisplacement(RfrModalAll,[0;0;0.025]);
iDispFD = interpolateDisplacement(RfrModalFD,[0;0;0.025]);

Plot the magnitude of the displacement.

figure
hold on
plot(RfrModalU.SolutionFrequencies,abs(iDispU.Magnitude));
plot(RfrModalAll.SolutionFrequencies,abs(iDispAll.Magnitude));
plot(RfrModalFD.SolutionFrequencies,abs(iDispFD.Magnitude));
title("Magnitude")

Figure contains an axes object. The axes object with title Magnitude contains 3 objects of type line.

Plot the phase of the displacement.

figure
hold on
plot(RfrModalU.SolutionFrequencies,angle(iDispU.Magnitude));
plot(RfrModalAll.SolutionFrequencies,angle(iDispAll.Magnitude));
plot(RfrModalFD.SolutionFrequencies,angle(iDispFD.Magnitude));
title("Phase")

Figure contains an axes object. The axes object with title Phase contains 3 objects of type line.

Input Arguments

collapse all

Transient or frequency response structural model, specified as a StructuralModel object. The model contains the geometry, mesh, structural properties of the material, body loads, boundary loads, boundary conditions, and initial conditions.

Example: structuralmodel = createpde("structural","transient-solid")

Mass proportional damping, specified as a nonnegative number.

Data Types: double

Stiffness proportional damping, specified as a nonnegative number.

Data Types: double

Modal damping ratio, specified as a nonnegative number or a function handle. Use a function handle when each mode has its own damping ratio. The function must accept a vector of natural frequencies as an input argument and return a vector of corresponding damping ratios. It must cover the full frequency range for all modes used for modal solution. For details, see Modal Damping Depending on Frequency.

Data Types: double | function_handle

Output Arguments

collapse all

Handle to damping parameters, returned as a StructuralDampingAssignment object. See StructuralDampingAssignment Properties.

More About

collapse all

Modal Damping Depending on Frequency

To use the individual value of modal damping for each mode, specify z as a function of frequency.

function z = dampingFcn(omega)

Typically, the damping ratio function is a linear interpolation of frequency versus the modal damping parameter:

structuralDamping(modelD,"Zeta",@(omegaMode) ...
                  interp1(omega,zeta,omegaMode))

Here, omega is a vector of frequencies, and zeta is a vector of corresponding damping ratio values.

Version History

Introduced in R2018a

expand all