Académique Documents
Professionnel Documents
Culture Documents
Vibration, you can perform these tests early in the design process cutting down on design time and
expense.
It is impossible to eliminate all vibration from products that are made up of flexible components. It is
possible, however, to design products that do not have bothersome vibrations. For example, at certain
speeds, poorly designed automobiles can have annoying noises that are due to vibrations of certain
components. Some companies have design guidelines that indicate acceptable ranges of vibration
frequencies.
Adams Vibration output data can be used in noise/vibration/harshness (NVH) studies to predict the
impact of vibration on the rider's experience in an automobile, train, plane, and so on.
On Linux, type the command to start the Adams Toolbar at the command prompt, and then
press Enter. Select the Adams View tool.
On Windows, from the Start menu, point to Programs, point to Adams 2017.1, and then
select Adams View.
The Welcome dialog box appears in the Adams View main window.
2. Select Import a File.
3. Select the Find Directory tool next to the Start in text box. This displays the Find Directory
dialog box.
The Start in text box specifies the working directory that Adams Vibration uses as the default
directory for reading and writing files.
4. Navigate to the working directory.
5. Select OK
This ensures that all your work gets stored in the working directory you selected.
6. Select OK.
The File Import dialog box appears.
7. Right-click the File to Read text box, and select Browse.
8. Select your model file.
9. Select OK.
Adams Vibration opens and displays the model.
10. Load the Adams Vibration plugin. Learn how.
Building Your Model
FD Dampers
When you are given experimentally measured component force magnitude and phase data in the
frequency domain, you can use a frequency-dependent (FD) element to represent it in an Adams
simulation. Using an FD identification tool, you can compute FD coefficients to best fit the measured
data. There are four different forms of FD components:
Pfeffer Linear
Simple FD
Simple FD Bushing
General
References:
1. Knowledge Base Article 12294: AVB-013: Frequency Dependent (FD) Modeling Elements
(http://simcompanion.mscsoftware.com/KB8016149).
2. Pfeffer, P. and Hofer, K. Simple non-linear model for elastomer and hydro mountings, ATZ
Worldwide, 104, 5/2002, May, 2002, 5-7, ISSN: 000 12785.
To delete an FD damper:
1. From the Vibration menu, point to Build, point to FD Damper or FD 3D Damper, and then
select Delete.
2. From the Database Navigator, select the FD damper you want to delete.
3. Select OK.
Input Channels
Input channels provide a port into your system so you can plot the frequency response or drive your
system with an input force using a vibration actuator. You must create an input function to vibrate your
8 Adams Vibration
Building Your Model
system. A vibration actuator applies an input force to vibrate the system. A vibration actuator can contain
expressions that let you use both time and frequency inputs. Each input channel must reference only one
vibration actuator. Each vibration actuator, however, can be associated with multiple input channels.
If you want to create a new vibration actuator, select Existing Actuator, and perform one of the
following:
Enter the name of the vibration actuator you want to reference.
Right-click, select Vibration_Actuator and use the Guesses or Browse to select the
vibration actuator.
5. If you want to, modify other parameters as described in Create/Modify Vibration Input Channel.
6. Select OK.
Output Channels
Output channels provide ports in your system at which you examine the frequency response of the
system. You can think of output channels as instrumentation ports where you can measure system
response and report the results directly in the frequency domain. Output channels can be any valid Adams
Solver run-time function, but are typically displacements, velocities, or accelerations.
Note: Measures are not fully supported. To avoid syntactical warnings or errors, be sure to enter
the run-time function directly.
3. Select OK.
3. Modify the output channel, as needed, as described in Create/Modify Vibration Output Channel.
4. Select OK.
Vibration Actuators
Vibration actuators are an Adams Vibration function definition, such as a periodic sine curve, a step, or
a spline curve, used to drive an input channel during a forced vibration analysis. The different types are:
Power Spectral Density
Rotating Mass
Swept Sine
User-Defined Function
Note: You cannot combine vibration actuators of the non-PSD-type with PSD-type vibration
actuators in the same vibration analysis.
Rotating Mass
A rotating mass applies a frequency-dependent force. This actuator represents the force due to a rotating
mass located at a specified offset from an axis of rotation. The axis of rotation is defined by the input
channel to which this vibrational actuator is applied.
2
f() = m r
where:
is the frequency
f ( ) is the unbalanced mass forcing function
m is the unbalanced mass
11
Building Your Model
r is the radial distance of the unbalanced mass from the axis of rotation
Similarly, a rotating mass placed at a distance offset along the axis of rotation results in an unbalanced
moment.
2
t() = m r d
where:
Swept Sine
Swept sine defines a constant amplitude sine function being applied to the model. The amplitude of the
sine function and the starting phase angle are required and must be specified in the Create Vibration
Actuator dialog box.
12 Adams Vibration
Building Your Model
f ( ) = F [ cos ( ) + j sin ( ) ]
where:
f is the forcing function
F is the magnitude of the force
User-Defined Function
You can define any function of the independent variable omega:
f( ) = g( )
where:
is the frequency
g ( ) is the general function of omega
Note: When the function is evaluated, omega is populated with each frequency from the vibration
analysis.
Note: YourModel is the name of the model from which you want the objects deleted.
retain_fd_dampers defines whether or not FD damper elements will remain in
the model. If set to no, they are deleted. If set to yes, FD damper elements will
remain, but all other vibration entities, such as input or output channels, will be
removed.
Testing Your Model
16 Adams Vibration
Analyses and Scripts
Note: You cannot combine vibration actuators of the non-PSD-type with PSD-type vibration
actuators in the same vibration analysis.
Frequency Response
Frequency response is the magnitude and phase response produced by a given input channel, at a given
omega, for a given output channel.
For frequency response computation, the linearized model is represented as:
sx(s) = Ax(s) + Bu(s)
y(s) = Cx(s) + Du(s)
where:
s is the Laplace variable
A, B, C, and D are state matrices for the linearized model
y(s)
H ( s ) = ---------- = C ( sI A ) 1 B + D
u(s)
where:
H(s) is the transfer function for the model
I is the identity matrix of dimension equal to the number of system states
For a given vibration analysis, the system frequency response is given as:
y ( s ) = H ( s )u ( s )
Modal Coordinates
Modal coordinates are states in the frequency domain solution associated with a specific mode. Modes
most active in a frequency response can be identified from the modal coordinates. The modal coordinates
are computed as:
x ( s ) = ( sI A ) 1 Bu ( s )
18 Adams Vibration
Analyses and Scripts
p ( s ) = H ( s ) U ( s ) H ( s )
where:
p(s) is the matrix of power spectral density
H*(s) is the complex conjugate transpose of H(s)
U(s) is the matrix of input spectral density
The matrix of input spectral densities is a diagonal matrix with the vibration actuator PSDs on the
diagonal locations. Off-diagonal locations of this matrix are populated with cross-correlation PSD
specification.
For example, for a model with two input channels with actuators of type PSD:
U 1 ( s ) U 12 ( s )
U(s) =
U 21 ( s ) U 2 ( s )
where:
U1(s) is the PSD of input channel 1
U2(s) is the PSD of input channel 2
U12(s) is the cross correlation PSD of input channel 1 to input channel 2
U21(s) is U12(s)
Transfer Function
Transfer function is a basic property of a model, and is computed as the magnitude and phase response
at a given output channel for a given input channel with a unit swept sine vibration actuator.
For frequency response computation, the linearized model is represented as:
sx(s) = Ax(s) + Bu(s)
y(s) = Cx(s) + Du(s)
where:
s is the Laplace variable
A, B, C and D are state matrices for the linearized model
Testing Your Model 19
Analyses and Scripts
y(s)
H ( s ) = ---------- = C ( sI A ) 1 B + D
u(s)
where:
H(s) is the transfer function for the model
I is the identity matrix of dimension equal to the number of system states
Python Examples
Your installation directory contains many examples that use Python scripts to perform various Adams
Vibration activities. The following table lists the location and description of each example.
Classes
Actuator
#############################################################################
#############################################################################
#############################################################################
#
# Copyright (C) 2004 by MSC Software, Inc., Santa Ana, CA, USA
# All Rights Reserved. This code may not be copied or reproduced in
# any form, in part or in whole, without the explicit permission of
# the copyright owner.
#
# Intent+: Python Qt interface for Adams Vibration
# Intent-:
#
# Caveats+:
# Caveats-:
#
#############################################################################
#
#############################################################################
#
# Copyright (C) 2004 by MSC Software, Inc., Santa Ana, CA, USA
# All Rights Reserved. This code may not be copied or reproduced in
# any form, in part or in whole, without the explicit permission of
# the copyright owner.
#
# Intent+: Python Qt interface for Adams Vibration
# Intent-:
#
# Caveats+:
# Caveats-:
#
######################################################################
Modules
msc.Adams.Vibration.libAvAPIc os struct types
libsip re sys
math string traceback
Functions
Actuator(self, ActInfo)
Data
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
MEStrainEnergy = 0
__author__ =
__date__ = '11 Dec. 2003'
__file__ = './Actuator.pyc'
Testing Your Model 23
Classes
__name__ = 'Actuator'
Av2Nastran
#############################################################################
#############################################################################
#############################################################################
#
# Copyright (C) 2004 by MSC Software, Inc., Santa Ana, CA, USA
# All Rights Reserved. This code may not be copied or reproduced in
# any form, in part or in whole, without the explicit permission of
# the copyright owner.
#
# Intent+: Python interface for Adams Vibration
# Intent-:
#
# Caveats+:
# Caveats-:
#
#############################################################################
Modules
fileinput libsip string traceback
msc.Adams.Vibration.libAvAPIc os sys
msc.Adams.Vibration.libAvASOLc re tempfile
Classes
Av2Nastran
AvBdfFile
AvBdfFileEigen
AvBdfFileFrf
AvRes2Nastran
AvStates
MKC
class Av2Nastran
Create a linear system model from an Adams non-linear system.
B(self)
Return the system B matrix
BDFBushing(self, bdfFile, bush, gId, nId, comment)
BDFConectionList(self, bdfFile)
BDFJoint(self, bdfFile, joint, gId, nId, comment)
BDFSpringDamper(self, bdfFile, spdp, gId, nId, comment)
C(self)
Return the system C matrix
CheckAMat(self, rList)
CheckCMat(self, cList)
CleanDepList(self, p)
D(self)
Return the system D matrix
Eigen(self, fName, Continuation='+AV0001')
FRF(self, fName, st, ed, nStep, logSpace, Continuation='+AV0001')
Input(self, FDList)
InputChannels(self)
Return the system inputs
MakeOutputChannelList(self, FlexList)
Ok(self)
OutputChannels(self)
Return the system outputs
RemoveStates(self, rList)
Simulate(self, simScript, damping, fList, sName)
SubSystem(self)
Time(self)
__init__(self, amdModel, inputList, flexList, FDList, simScript, damping, solverLib,
mFunc=<function Adm2NasMessage>)
# def __init__(self, amdModel, inputList, outputList, FDList, simScript, damping, fList, dList, C
onList, sName):
class AvBdfFile
class AvBdfFileEigen(AvBdfFile)
class AvBdfFileFrf(AvBdfFile)
class AvRes2Nastran
Create a linear system model from an Adams non-linear system.
class AvStates
# LEVEL = ['INFO :', 'WARNING: ', 'ERROR :', 'FAULT :']
# if msg and len(msg):
# if level <4:
# print '%s %s'%(LEVEL[level], msg)
# else:
# print 'Level(%d): %s'%(level,msg)
#
###############################################################
#########################
28 Adams Vibration
Classes
class MKC
Functions
Adm2NasMessage(level, msg)
HandleStep(Type, EventInput=0, EventOutput=0)
PrintEigen(Mat)
PrintPatern(lab, mat)
PrintSubSystem(A, B, C, D, S)
Data
MEDissipativeEnergy = 0
Testing Your Model 29
Classes
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
MEStrainEnergy = 0
__author__ =
__date__ = '1 Sept. 2004'
__file__ = './Av2Nastran.py'
__name__ = 'Av2Nastran'
AvActuator
This the entry point for the Actuators
Modules
msc.Adams.Vibration.libAvAPIc os struct types
libsip re sys
Classes
AvActuator
AvActuatorPSDFunction
AvActuatorRotatingMass
AvActuatorSweptSine
AvActuatorUserFunction
class AvActuator
class AvActuatorPSDFunction(AvActuator)
class AvActuatorRotatingMass(AvActuator)
class AvActuatorSweptSine(AvActuator)
Methods defined here:
Actuator(self)
WritePy(self, oFile, space)
WriteXML(self, oFile, space)
Swept sine
__init__(self, Name, Type, Mag, Phase)
class AvActuatorUserFunction(AvActuator)
Data
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
Testing Your Model 33
Classes
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
MEStrainEnergy = 0
__file__ = './AvActuator.pyc'
__name__ = 'AvActuator'
AvAMD
From Adams Vibration.AvAMD import *
Constructor:
AvAMD(fName)
Constructor
Returns: object
Parameters:
string fName: Name of the adm file with the Adams Solver model
in it
Adams_OBJECT Model()
Get the key to the model
Returns: int - the key to the model
Parameters: None
Adams_OBJECT Ground()
Get the key to the ground object
Returns: int - the key to ground
Parameters: None
int AdamsID(Object)
Get the objects Adams ID
Returns: int - the id assigned to the object
Parameters:
Object - Adams_OBJECT database object to get the id from
Adams_OBJECT CreateVariable(func)
Create a solver variable in the database
Returns: int - the key to the variable
Parameters:
func - string solver function
list PartList()
Get a list of parts in the model
Returns: list - list of keys
Parameters: None
list MarkerList(part)
Get a list of markers for the given part
Returns: list - list of markers
Parameters:
part - Adams_OBJECT part to get the markers from
34 Adams Vibration
Classes
list StateMatrixList(results)
Get a list of state matrix objects for the given results object
Returns: list - list of state matrix
Parameters:
results - Adams_OBJECT results object to get the state
matrix from
Adams_OBJECT PartFromMarker(markerID)
Get the markers parent
Returns: Adams_OBJECT - key of the parent part
Parameters:
markerID - int Adams ID of the marker
string ObjName(dbObject)
Get the name of the database object
Returns: string - Name of the object
Parameters:
dbObject - Adams_OBJECT database object to get name from
string MarkerName(markerID)
Get the name of the marker
Returns: string - Name of the marker
Parameters:
markerID - int Adams ID of the marker
Adams_OBJECT CreateResults()
Create a results object in the database
Returns: Adams_OBJECT - key to the results object
Parameters: None
bool WriteADM(fName)
Write the model to a solver database file
Returns: bool - true for success
Parameters:
fName - string name of the adm file to write
Testing Your Model 35
Classes
Adams_OBJECT CreatePInput(varIDs)
Create a plant input object in the database
Returns: Adams_OBJECT - key to the plant input object
Parameters:
varIDs - list of Adams ID's of the solver variables for
the plant input
int DiffID()
Get the Adams ID to assign to the next DIFF
Returns: int - Adams ID of the DIFF
Parameters: None
Parameters:
xArray - int Adams ID of the X array
uArray - int Adams ID of the U array
yArray - int Adams ID of the Y array
icArray - int Adams ID of the IC array
aMat - int Adams ID of the A matrix
bMat - int Adams ID of the B matrix
cMat - int Adams ID of the C matrix
dMat - int Adams ID of the D matrix
Adams_OBJECT CreateResultsVariable(analysisObject,
variableName,comment1, comment2, data)
Create a results variable
Returns: Adams_OBJECT - key of the variable
Parameters:
analysisObject - Adams_OBJECT key of the analysis
variableName - string name of the new variable
comment1 - string variable comment
comment2 - string variable comment
data - list values to assign to variable
double StateMatrixTime(smObject)
Get the time from a state matrix object
Returns: double - simulation time the state matrix object was
created
Parameters:
smObject - Adams_OBJECT key to the state matrix object
bool StateMatrixABCD(smObject)
Determine if a state matrix object has B, C, D matrix
Returns: Boolean - true if B, C, and D exist false otherwise
Parameters:
smObject - Adams_OBJECT key to the state matrix object
<![endif]>int NodeID(Marker)
list ReferenceList(Object)
Get a list of objects that reference the given object
Returns: list - list of objects
Parameters:
Object - Adams_OBJECT to get the references from
38 Adams Vibration
Classes
list MKCList(results)
Get a list of MKC objects for the given results object
Returns: list - list of MKC objects
Parameters:
results - Adams_OBJECT results object to get the MKC from
list FlexList()
Get a list of parts in the model
Returns: list - list of keys
Parameters: None
Adams_OBJECT Marker(Id)
Get a marker key given the id
Returns: Adams_OBJECT
Parameters:
Id - Adams id of the marker
void Delete(k_obj)
Delete an object from the database
Returns: None
Parameters:
k_obj - key to the object to be removed
char* UnitString(unit)
Get the unit string for the given unit
Returns: string - unit string
Parameters:
unit - eUNIT any of the following
enum eUNIT
{
eNONE,
eANGLE,
eFORCE,
eFREQUENCY,
eLENGTH,
eMASS,
eTIME,
eINERTIA,
eVELOCITY,
eACCELERATION,
eANGULAR_VEL,
eANGULAR_ACCEL,
eSTIFFNESS,
eDAMPING,
eTORSION_STIFF,
eTORSION_DAMP,
eAREA,
eVOLUME,
eTORQUE,
ePRESSURE,
eAREA_INERTIA,
eDENSITY,
eENERGY,
eFORCE_TIME,
eTORQUE_TIME,
eFLOWRATE_PRESSURE_D,
eFLOW_RATE,
eF_PER_ANG,
40 Adams Vibration
Classes
eC_PER_ANG,
eCOMPOSED
};
AvAPI Class
Public Methods:
bool AcquireLicense(void)
Check out an Adams Vibration license
Returns: bool - true on success false otherwise
Parameters: None
void ReleaseLicense(void)
Check in Adams Vibration license
Returns: void
Parameters: None -
bool CheckLicense(void)
Check to see if process has a vibration license
Returns: bool - true on success; false otherwise
Parameters: None -
vib_message_handler PushMessageHandler(mh, Args)
Sets the current function to handle vibration messages
Returns: Current message handler
Parameters:
stringmh - Name of the function func(msg, type, args)
string MSG - Message being sent
character type - Type of message [e, i, w]
list args - Argument list given by user when function was set
listArgs - user data to send back to the handler
vib_message_handler PopMessageHandler(void)
Replace the current function to handle vibration messages with the pervious one
Returns: Current message handler
Parameters: None -
AvAPI_Actuator Class
a: Constructors:
Testing Your Model 41
Classes
string ufunc - name of the user function must be in the global dictionary
complex ufunc(data , w)
Returns:complex f(w) actuator value at w
Parameters:
list data - user data given when actuator was constructed
double w - frequency of evaluation
list data - user data to be returned when ufunc is called
list crossList - list of cross correlation actuators
b. Public Methods:
AvAPI_Matrix Evaluate(Omega)
Actuator evaluation multiple frequencies
Returns:AvAPI_Matrix - vector of complex values
Parameters:
AvAPI_MatrixOmega - Vector of frequencies to evaluate at
AvAPI_Complex Evaluate(Omega)
Actuator evaluation single frequency
Returns:AvAPI_Complex - complex value
Parameters:
doubleOmega - Frequency of evaluation
char DVAType(void)
Type of actuator
Returns: char [F, D, V, A]
Testing Your Model 43
Classes
F = Force
D = Displacement
V = Velocity
A = Acceleration
Parameters: None
boolPSD(void)
PSD type actuator
Returns: bool True if PSD actuator False otherwise
Parameters: None
AvAPI_Actuator CrossActuator(iIC)
Get the cross correlation actuator for given input channel
Returns: AvAPI_Actuator cross correlation actuator
Parameters: int iic input channel index
bool HasCrossActuator(int iic)
Determine if cross correlation actuator exists
Returns: bool True if the given input channel has a cross correlation actuator False
otherwise
Parameters:
int iic input channel index.
If iic is less than zero the function returns True if any input channel has a cross
correlation actuator.
AvAPI_Complex Class
Constructors:
AvAPI_Complex(void)
AvAPI_Complex default Constructor
Returns: Object pointer real and imaginary set to zero
Parameters: None
AvAPI_Complex(r, i)
AvAPI_Complex Constructor
Returns: Object pointer
Parameters:
doubler - real part
double i - imaginary part
44 Adams Vibration
Classes
Public Methods:
AvAPI_Complex& byMP(magnitude, theta)
Set real and imag parts using the magnitude and phase given
Returns:AvAPI_Complex& - reference to this object
Parameters:
double magnitude - for values
double theta - phase angle in degrees
Note: real = magnitude * cos(theta)
imag = magnitude * sin(theta)
double real(void)
Return the real part of the complex number
Returns: double - real part
Parameters: None -
double imag(void)
Return the imaginary part of the complex number
Returns: double - imag part
Parameters:None -
double Mag(void)
Return the magnitude of the complex number
Returns: double - magnitude
Parameters: None -
double Phase(void)
Return the phase of the complex number
Returns: double - phase angle in degrees
Parameters: None -
AvAPI_Matrix Class
Constructors:
AvAPI_Matrix(nRow, vals)
Vector Constructor
Returns:Object
Parameters:
intnRow- Number of rows of data
list of double or complex vals - Data values column wise
Testing Your Model 45
Classes
Methods:
double Value(row)
Value at mat[row,0]
Returns:double- Value of the matrix location[row,0]
Parameters:int row- Location to get the value
double Value(row, col)
Value at location
Returns:double- Value of the matrix location[row,col]
Parameters:
46 Adams Vibration
Classes
int Size(dim)
Matrix dimension
Returns: int - size of the matrix int the given dimension
Parameters:
int dim- Dimension to get the size 0, 1, or 2
list MultMv(vector)
Multiply the vector by the matrix
Returns: list - output vector
Parameters:
list vector- List of double or complex values
Testing Your Model 47
Classes
AvAPI_System Class
Constructor:
AvAPI_System(Time, A, B, C, D, actuatorList, modeList)
Constructor for a license system
Returns:Object pointer
Parameters:
double Time - Simulation time of linearization
AvAPI_Matrix A - system A matrix from Adams
AvAPI_Matrix B - system B matrix from Adams
AvAPI_Matrix C - system C matrix from Adams
AvAPI_Matrix D - system D matrix from Adams
list actuatorList - list of actuators
list modeList - list of modes by index to use in system calculations; NULL for including
all modes.
Public Methods:
AvAPI_ActuatorActuator (iIC)
Actuator
Returns:AvAPI_Actuatoractuator for given input channel
Parameters:int iicindex of the input channel
int Inputs(void)
Inputs
Returns:int- number of system inputs
Parameters: None
intOutputs(void)
Outputs
Returns:int- number of system outputs
Parameters: None
intDefective(which)
defective eigen value index
Returns:int- index of eigen value if equal to which eigen value is not defective
Parameters: int which - index of eigen value
AvAPI_ComplexEigenvalue (indx, cyclesPerTime)
eigen value
Returns:AvAPI_Complex the eigen value
48 Adams Vibration
Classes
Parameters:
int indx - index of the eigen value to be returned
bool cyclesPerTime - True value is scaled by 2
intEigenvalues(void)
number of eigen values found
Returns:int- number of eigen values
Parameters: None
AvAPI_ComplexEigenvector(which, indx)
eigen vector
Returns:the eigen vector component V[indx]
Parameters:
int which - eigen vector index
int indx - index into the vector
AvAPI_MatrixTransferFunction(Omega)
Transfer Function
Returns:AvAPI_Matrix - system transfer function3D complex matrix of the
number of output channels times the number of input channels times the number of frequencies
Parameters: AvAPI_MatrixOmega vector of frequencies
AvAPI_MatrixFrequencyResponse (Omega)
Frequency Response
Returns:AvAPI_Matrix- system frequency response3D complex matrix of the
number of output channels times the number of input channels times the number of frequencies
Parameters: AvAPI_MatrixOmega vector of frequencies
AvAPI_MatrixMCT (Omega, scaleMCT)
modal coordinate table
Returns:AvAPI_Matrix- modal coordinate table
Parameters:
AvAPI_MatrixOmega vector of frequencies
bool scaleMCT- ifTrue MCT matrix is scaled by the input actuators
AvAPI_Matrix MPF (iic, iOC, iFr, iMd, Omega)
modal participation factors
Returns:AvAPI_Matrix- system modal participation factors
Parameters:
int iic - input channel index
int IOC - output channel index
Testing Your Model 49
Classes
AvAPI_SystemSS Class
Constructor:
AvAPI_SystemSS(Time, A, B, C, D, actuatorList)
Constructor for a state space linear system
Returns: Object
Parameters:
double Time - Simulation time of linearization
AvAPI_Matrix A - system A matrix from Adams AvAPI_Matrix B - system B matrix
from Adams
AvAPI_Matrix C - system C matrix from Adams
50 Adams Vibration
Classes
AvAPI_ToolBox
From msc.Adams.Vibration.AvAPI import *
Data Members:
AvAPI_ToolBox.eRECTANGULAR
52 Adams Vibration
Classes
AvAPI_ToolBox.eHAMMING,
AvAPI_ToolBox.eHANNING,
AvAPI_ToolBox.ePARZEN,
AvAPI_ToolBox.eWELCH
Methods defined here:
double Frequency(i, nFFT, dt, HZ)
return the frequency associated with the ith point of the FFT
Returns: double
Parameters:int i - point number
int nFFT - total number of points in FFT
double DT - point spacing
bool HZ - true frequency returned in HZ
AvAPI_Matrix FFT(data, n, detrend, window)
compute the Fast Fourier Transformations (FFT)
Returns: AvAPI_Matrix
Parameters:
AvAPI_Matrix& data - input data in columns
int n - number of points to use in FFT
bool detrend - true detrend data
AvAPI_ToolBox::eWindow window - window to use
AvAPI_Matrix PSD(const AvAPI_Matrix& data, AvAPI_ToolBox::eWindow window, int nSeg, int
nOverlap)
compute the Power Spectral Density (PSD)
Returns: AvAPI_Matrix
Parameters:
AvAPI_Matrix& data - input data in columns
AvAPI_ToolBox::eWindow window - window to use
int nSeg - number of segments to use
int nOverlap - number of points to overlap
AvAPI_Matrix FDElementID(data)
Testing Your Model 53
Classes
AvBuild
This the entry point for Vibration Build
Modules
msc.Adams.Vibration.libAvAMDc libsip string traceback
msc.Adams.Vibration.Plotting.libVibPlotc os sys
libqtc re tempfile
Classes
AvBuild
AvBuildActuator
AvBuildFDElement
AvBuildFDInstance
AvBuildInputChannel
AvBuildOutputChannel
AvBuildPlot
AvBuildTest
class AvBuild
class AvBuildActuator
class AvBuildFDElement
class AvBuildFDInstance
class AvBuildInputChannel
class AvBuildOutputChannel
class AvBuildPlot
class AvBuildTest
Functions
bitBlt(...)
qAlpha(...)
qAppName(...)
qBlue(...)
qDrawPlainRect(...)
qDrawShadeLine(...)
qDrawShadePanel(...)
qDrawShadeRect(...)
qDrawWinButton(...)
qDrawWinPanel(...)
qGray(...)
qGreen(...)
qRed(...)
qRgb(...)
qRgba(...)
qVersion(...)
qt_xdisplay(...)
qt_xrootwin(...)
Testing Your Model 59
Classes
qt_xscreen(...)
Data
IO_AbortError = 6
IO_Append = 4
IO_Async = 128
IO_Combined = 768
IO_ConnectError = 5
IO_Direct = 256
IO_FatalError = 3
IO_ModeMask = 255
IO_Ok = 0
IO_Open = 4096
IO_OpenError = 5
IO_Raw = 64
IO_ReadError = 1
IO_ReadOnly = 1
IO_ReadWrite = 3
IO_ResourceError = 4
IO_Sequential = 512
IO_StateMask = 61440
IO_TimeOutError = 7
IO_Translate = 16
IO_Truncate = 8
IO_TypeMask = 3840
IO_UnspecifiedError = 8
IO_WriteError = 2
IO_WriteOnly = 2
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
MEStrainEnergy = 0
PYQT_BUILD = 34
PYQT_VERSION = '3.3'
QCOORD_MAX = 2147483647
QCOORD_MIN = -2147483648
QT_VERSION = 304
QT_VERSION_STR = '3.0.4'
__file__ = './AvBuild.pyc'
__name__ = 'AvBuild'
qApp = <qt.QApplication instance>
60 Adams Vibration
Classes
AvFDElement
This the entry point for the FD Element
Modules
msc.Adams.Vibration.libAvAPIc os struct types
libsip re sys
Classes
AvFDElement
class AvFDElement
Data
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
MEStrainEnergy = 0
__file__ = './AvFDElement.pyc'
__name__ = 'AvFDElement'
AvFDInstance
This the entry point for the FD Instance
Modules
msc.Adams.Vibration.libAvAMDc math string traceback
libsip re sys
Classes
AvFDInstance
class AvFDInstance
Data
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
MEStrainEnergy = 0
__file__ = './AvFDInstance.pyc'
__name__ = 'AvFDInstance'
AvFreqRespSol
The entry point for the Adams Vibration Mechanical Transfer functions
Modules
msc.Adams.Vibration.libAvAMDc math string tempfile
Classes
AvMTF
Sol
class AvMTF
Adams Vibration class for computing mechanical transfer functions
OutDir(self)
ResList(self, AnaObj=None)
__init__(self, Name, Model_base_name, Freq_range, iDir, oDir)
Marker AvMechanicalTF:
@param Name: Name to assign to mechanical transfer fu
nction
@type Name: string
@param Model_base_name: base name for the model.
@type Model_base_name: string
@param Marker_in: Input marker object
@param Freq_range: Frequency range for analysis
@type Freq_range: Frequency range object
@type Marker_in: Marker spec object
@param Marker_I_out: Output I marker object
@type Marker_I_out: I Marker spec object
@param Marker_J_out: Output J marker object
@type Marker_J_out: J Marker spec object
@return: the object
@rtype: Object
__mul__(self, a, b)
class Sol
OutChLst(self)
PlotLegend(self)
Resp(self)
Response(self)
Results(self)
VarName(self)
__del__(self)
__init__(self)
Data
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
MEStrainEnergy = 0
__author__ =
__date__ = '11 Dec. 2003'
__file__ = './AvFreqRespSol.pyc'
__name__ = 'AvFreqRespSol'
AvHelp
#############################################################################
#############################################################################
#############################################################################
#
# Copyright (C) 2004 by MSC Software, Inc., Santa Ana, CA, USA
# All Rights Reserved. This code may not be copied or reproduced in
# any form, in part or in whole, without the explicit permission of
# the copyright owner.
#
# Intent+: Python interface for Adams Vibration
# Intent-:
#
# Caveats+:
# Caveats-:
#
Testing Your Model 65
Classes
#############################################################################
Modules
os string sys
Classes
AvHelp
class AvHelp
Data
__author__ =
__date__ = '1 Sept. 2002'
__file__ = './AvHelp.pyc'
__name__ = 'AvHelp'
AvInputChannel
The entry point for the Adams Vibration Input Channel
Modules
msc.Adams.Vibration.libAvAPIc math re sys
libsip os string
Classes
AvInputChannel
AvInputChannelMarker
AvInputChannelStateVariable
66 Adams Vibration
Classes
class AvInputChannel
Adams Vibration Input Channel Base Class
class AvInputChannelMarker(AvInputChannel)
Marker Input Channel
class AvInputChannelStateVariable(AvInputChannel)
State Variable Input Channel
Functions
EvalFunc(argList, w)
User function used to test this module
Data
__author__ =
__date__ = '1 Sept. 2002'
__file__ = './AvInputChannel.pyc'
__name__ = 'AvInputChannel'
AvIOC
#############################################################################
#############################################################################
#############################################################################
#
# Copyright (C) 2004 by MSC Software, Inc., Santa Ana, CA, USA
# All Rights Reserved. This code may not be copied or reproduced in
# any form, in part or in whole, without the explicit permission of
# the copyright owner.
#
# Intent+: Python Qt interface for Adams Vibration
# Intent-:
#
# Caveats+:
# Caveats-:
#
#############################################################################
#
Modules
msc.Adams.Vibration.libAvAPIc os struct types
libsip re sys
Functions
InputChannel(ChName, MrkInfo, ActObj)
OutputChannel(ChName, MrkInfo)
Data
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
MEStrainEnergy = 0
__author__ =
__date__ = '11 Dec. 2003'
__file__ = './AvIOC.pyc'
__name__ = 'AvIOC'
AvLinearize
#############################################################################
#############################################################################
#############################################################################
#
# Copyright (C) 2004 by MSC Software, Inc., Santa Ana, CA, USA
# All Rights Reserved. This code may not be copied or reproduced in
# any form, in part or in whole, without the explicit permission of
# the copyright owner.
#
# Intent+: Python interface for Adams Vibration
# Intent-:
#
# Caveats+:
# Caveats-:
#
#############################################################################
Modules
msc.Adams.Vibration.libAvAPIc os struct types
libsip re sys
Classes
AvLinearize
class AvLinearize
Create a linear system model from an Adams non-linear system.
Functions
AvLinearModel(modelFile, inputList, outputList, simScript, damping, outName, mList)
AvLinearModel:
@param modelFile: Adams .adm file to be linearize
@type modelFile: string
@param inputList: List of input channels (AvInputChannel objects)
@type inputList: List
@param outputList: List of output channels (AvOutputChannel objects)
@type outputList: List
@param simScript: Script of Adams solver commands to acheive operating point
Or name of an existing .acf file
@type simScript: string
@param damping: Include damping True or False
@type damping: Bool
@param outName: Base name for solver output files default = Adams
@type outName: string
@param mList: List of modes to use null for all
@type mList: integer list
@return: the object
@rtype: Object
Data
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
Testing Your Model 73
Classes
MEStartMode = -1
MEStrainEnergy = 0
__author__ =
__date__ = '1 Sept. 2002'
__file__ = './AvLinearize.pyc'
__name__ = 'AvLinearize'
AvMarkerSpec
The entry point for the Adams Vibration Marker specification
Modules
msc.Adams.Vibration.libAvAPIc math re sys
libsip os string
Classes
AvMarkerSpec
class AvMarkerSpec
Adams Vibration class for specifying marker info
Marker AvMarkerSpec:
@param Name: Name to assign to marker data spec
@type Name: string
@param Marker_Adams_ID: Marker ID
@type Marker_Adams_ID: integer
74 Adams Vibration
Classes
Data
__author__ =
__date__ = '11 Dec. 2003'
__file__ = './AvMarkerSpec.pyc'
__name__ = 'AvMarkerSpec'
AvMechTFs
Modules
msc.Adams.Vibration.libAvAMDc math string tempfile
Functions
CreateModel(BaseName, FreqRange, iDir, oDir)
Testing Your Model 75
Classes
DoVibrAnalysis(Ac, modl)
GetActionList(Ac)
RegisterAnalysis(AnaObj)
message_handler(msg, type, data)
Message handler for vibration
Data
AcList = []
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
MEStrainEnergy = 0
__file__ = './AvMechTFs.pyc'
__name__ = 'AvMechTFs'
AvMTF
The entry point for the Adams Vibration Mechanical Transfer functions
Modules
msc.Adams.Vibration.libAvAMDc math string tempfile
Classes
msc.Adams.Vibration.InstrumentPacks.AvFreqRespSol.Sol
Accelerance
Compliance
DynamicInertia
DynamicStiffness
ForceTransmissibility
Impedence
Mobility
MotionTransmissibility
76 Adams Vibration
Classes
class Accelerance(msc.Adams.Vibration.InstrumentPacks.AvFreqRespSol.Sol)
# Accelerance
class Compliance
(href="avfreqrespsol.html#Sol">msc.Adams.Vibration.InstrumentPacks.AvFreqRespSol.Sol)
# Compliance
class DynamicInertia
(href="avfreqrespsol.html#Sol">msc.Adams.Vibration.InstrumentPacks.AvFreqRespSol.Sol)
# Dynamic Inertia
class DynamicStiffness
(href="avfreqrespsol.html#Sol">msc.Adams.Vibration.InstrumentPacks.AvFreqRespSol.Sol)
# Dynamic Stiffness
CreateIOChannels(self)
ErrStr(self)
Initialize(self, Model, InpMarkerList, OutMarkerList)
InpChLst(self)
Model(self)
OutChLst(self)
PlotLegend(self)
Resp(self)
Response(self)
Results(self)
VarName(self)
__del__(self)
class ForceTransmissibility(msc.Adams.Vibration.InstrumentPacks.AvFreqRespSol.Sol)
# Force Transmissibility
PlotLegend(self)
Resp(self)
Response(self)
Results(self)
VarName(self)
__del__(self)
class Impedence
(href="avfreqrespsol.html#Sol">msc.Adams.Vibration.InstrumentPacks.AvFreqRespSol.Sol)
# Impedence
__del__(self)
class Mobility
(href="avfreqrespsol.html#Sol">msc.Adams.Vibration.InstrumentPacks.AvFreqRespSol.Sol)
# Mobility
class MotionTransmissibility
(href="avfreqrespsol.html#Sol"> Adams Vibration.InstrumentPacks.AvFreqRespSol.Sol)
# Motion Transmissiblity
82 Adams Vibration
Classes
Data
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
MEStrainEnergy = 0
__author__ =
__date__ = '11 Dec. 2003'
__file__ = './AvMTF.pyc'
__name__ = 'AvMTF'
Testing Your Model 83
Classes
AvNibble
Modules
copy math struct types
msc.Adams.Vibration.libAvAMDc os sys
msc.Adams.Vibration.libAvAPIc re tempfile
Classes
msc.Adams.Vibration.InstrumentPacks.AvFreqRespSol.Sol
Nibble
class Nibble(msc.Adams.Vibration.InstrumentPacks.AvFreqRespSol.Sol)
Results(self)
VarName(self)
__del__(self)
Data
AcList = []
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
MEStrainEnergy = 0
__file__ = './AvNibble.pyc'
__name__ = 'AvNibble'
AvOutputChannel
This the entry point for the Output Cannel Property Editor
Modules
msc.Adams.Vibration.libAvAPIc math re sys
libsip os string
Classes
AvOutputChannel
AvOutputChannelCompliance
AvOutputChannelPredefined
AvOutputChannelUser
class AvOutputChannel
Adams Vibration Output Channel Base Class
class AvOutputChannelCompliance(AvOutputChannel)
Adams Vibration Predefined Output Channel
class AvOutputChannelPredefined(AvOutputChannel)
Adams Vibration Predefined Output Channel
class AvOutputChannelUser(AvOutputChannel)
Adams Vibration User Output Channel
Data
__author__ =
__date__ = '1 Sept. 2002'
__file__ = './AvOutputChannel.pyc'
__name__ = 'AvOutputChannel'
AvPPTCmdExporter
The entry point for the Adams Vibration PPT interface
Modules
msc.Adams.Vibration.libAvAMDc math string tempfile
Classes
VibPPTCmdExporter
class VibPPTCmdExporter
Write .cmd file to create a vibration model in PPT
Constructor:
@param fullModelName: Name to assigne to the model
@type fullModelName: string
@param outFileName: Name of file to write
@type outFileName: string
@param inputList: List of input channels in the model
@type inputList: list
@param outputList: List of output channels in the model
@type outputList: list
@param freqBegin: Starting frequency
@type freqBegin: double
Testing Your Model 89
Classes
Functions
psdFunc(argList, w)
User function used to test this module
Data
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
MEStrainEnergy = 0
__author__ =
__date__ = '29 Oct. 2002'
__file__ = './AvPPTCmdExporter.pyc'
__name__ = 'AvPPTCmdExporter'
AvResFileWrite
Modules
msc.Adams.Vibration.libAvAMDc math string tempfile
Classes
XRFWrite
class XRFWrite
Functions
CallerName(TstName)
SetName(Name)
message_handler(msg, type, data)
Message handler for vibration
Data
AcList = []
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
MEStrainEnergy = 0
__file__ = './AvResFileWrite.pyc'
__name__ = 'AvResFileWrite'
AvReview
This the entry point for Vibration Build
Modules
msc.Adams.Vibration.libAvAMDc libsip string traceback
msc.Adams.Vibration.Plotting.libVibPlotc os sys
libqtc re tempfile
92 Adams Vibration
Classes
Classes
AvReview
class AvReview
Functions
bitBlt(...)
qAlpha(...)
qAppName(...)
qBlue(...)
qDrawPlainRect(...)
qDrawShadeLine(...)
qDrawShadePanel(...)
qDrawShadeRect(...)
qDrawWinButton(...)
qDrawWinPanel(...)
qGray(...)
qGreen(...)
qRed(...)
qRgb(...)
qRgba(...)
qVersion(...)
qt_xdisplay(...)
qt_xrootwin(...)
Testing Your Model 93
Classes
qt_xscreen(...)
Data
IO_AbortError = 6
IO_Append = 4
IO_Async = 128
IO_Combined = 768
IO_ConnectError = 5
IO_Direct = 256
IO_FatalError = 3
IO_ModeMask = 255
IO_Ok = 0
IO_Open = 4096
IO_OpenError = 5
IO_Raw = 64
IO_ReadError = 1
IO_ReadOnly = 1
IO_ReadWrite = 3
IO_ResourceError = 4
IO_Sequential = 512
IO_StateMask = 61440
IO_TimeOutError = 7
IO_Translate = 16
IO_Truncate = 8
IO_TypeMask = 3840
IO_UnspecifiedError = 8
IO_WriteError = 2
IO_WriteOnly = 2
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
MEStrainEnergy = 0
PYQT_BUILD = 34
PYQT_VERSION = '3.3'
QCOORD_MAX = 2147483647
QCOORD_MIN = -2147483648
QT_VERSION = 304
QT_VERSION_STR = '3.0.4'
__file__ = './AvReview.pyc'
__name__ = 'AvReview'
qApp = <qt.QApplication instance>
AvSuspension
######################################################################################
# This file contains an example model for performing multiple compliance matrix
# calculations in Adams Vibration v.2005.
#
# This example assumes the user has existing .adm and .acf files for this model.
# After executing this analysis this file writes simulation data to a .xml file
#
94 Adams Vibration
Classes
Modules
msc.Adams.Vibration.libAvAMDc math string tempfile
Classes
AvSuspension
class AvSuspension
Adams Vibration Suspension Class
Functions
MultiComplianceMatrixIGround(model, acf, markerId, logFile, AxAyAz=0)
MultiComplianceMatrixIJGround(model, acf, iMarkerId, jMarkerId, logFile, AxAyAz=0)
MultiComplianceMatrixIJRef(model, acf, iMarkerId, jMarkerId, rMarkerId, logFile,
AxAyAz=0)
Data
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
MEStrainEnergy = 0
__file__ = './AvSuspension.pyc'
__name__ = 'AvSuspension'
96 Adams Vibration
Classes
AvTest
This the entry point for Vibration Build
Modules
msc.Adams.Vibration.libAvAMDc libsip string traceback
msc.Adams.Vibration.Plotting.libVibPlotc os sys
libqtc re tempfile
Classes
AvTest
class AvTest
Functions
bitBlt(...)
qAlpha(...)
qAppName(...)
qBlue(...)
qDrawPlainRect(...)
qDrawShadeLine(...)
Testing Your Model 97
Classes
qDrawShadePanel(...)
qDrawShadeRect(...)
qDrawWinButton(...)
qDrawWinPanel(...)
qGray(...)
qGreen(...)
qRed(...)
qRgb(...)
qRgba(...)
qVersion(...)
qt_xdisplay(...)
qt_xrootwin(...)
qt_xscreen(...)
Data
IO_AbortError = 6
IO_Append = 4
IO_Async = 128
IO_Combined = 768
IO_ConnectError = 5
IO_Direct = 256
IO_FatalError = 3
IO_ModeMask = 255
IO_Ok = 0
IO_Open = 4096
IO_OpenError = 5
IO_Raw = 64
IO_ReadError = 1
IO_ReadOnly = 1
IO_ReadWrite = 3
IO_ResourceError = 4
IO_Sequential = 512
IO_StateMask = 61440
IO_TimeOutError = 7
IO_Translate = 16
IO_Truncate = 8
IO_TypeMask = 3840
IO_UnspecifiedError = 8
IO_WriteError = 2
IO_WriteOnly = 2
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
98 Adams Vibration
Classes
MEStrainEnergy = 0
PYQT_BUILD = 34
PYQT_VERSION = '3.3'
QCOORD_MAX = 2147483647
QCOORD_MIN = -2147483648
QT_VERSION = 304
QT_VERSION_STR = '3.0.4'
__file__ = './AvTest.pyc'
__name__ = 'AvTest'
qApp = <qt.QApplication instance>
void SetTitle(Title)
Set the main title for the plot
Returns: None
Parameters:
string Title: Title for plot
Testing Your Model 99
Classes
void SetTitleFont(Font)
Set the font used for the title
Returns: None
Parameters:
QFont Font: font to use
void SetTitleColor(Color)
Set the color used for the title
Returns: None
Parameters:
QColor Color: color to use
void SetCurrentColor(Color)
Set the default color used for plot objects
Returns: None
Parameters:
QColor Color: default color to use
LOGARITHMIC,
DB
};
enum eSymbol
{
NONE,
CIRCLE,
SQUARE,
DIAMOND,
TRIANGLE,
UTRIANGLE,
LTRIANGLE,
RTRIANGLE,
CROSS,
XCROSS,
HLINE,
VLINE
};
void SetGridMajorXPen(Pen)
Set the color and style used for the Major grid lines
Returns: None
Testing Your Model 101
Classes
Parameters:
QPen Pen: pen used to draw major X grid lines
void SetGridMinorXPen(Pen)
Set the color and style used for the Minor grid lines
Returns: None
Parameters:
QPen Pen: pen used to draw minor X grid lines
void SetGridMajorYPen(Pen)
Set the color and style used for the Major grid lines
Returns: None
Parameters:
QPen Pen: pen used to draw major Y grid lines
void SetGridMinorYPen(Pen)
Set the color and style used for the Minor grid lines
Returns: None
Parameters:
QPen Pen: pen used to draw minor Y grid lines
Returns: None
Parameters:
VibPlot2D::eAxis Axis: axis to set (LEFT, RIGHT, BOTTOM)
QPen Pen: pen used to draw axis
void SetLegendColor(Color)
Set the color used for legend
Returns: None
Parameters:
QColor Color: color to use
void SetLegendFont(Font)
Set the font used for the legend
Returns: None
Parameters:
QFont Font: font to use
uint InsertCurve(Name, X, Y)
Add a curve to the plot
Returns:
unsigned int: curve id
Parameters:
string Name: curve name (legend text)
AvAPI_Matrix X: x data for the curve
AvAPI_Matrix Y: y data for the curve
void RemoveCurve(cID)
Delete a curve from the plot
Returns: None
104 Adams Vibration
Classes
Parameters:
unsigned int cid: curve id
void clear()
Clear the plot
Returns: None
Parameters: None
Constructors:
VibPlot2D()
Constructor
Returns: object
Parameters: None
106 Adams Vibration
Classes
Returns: None
Parameters:
unsigned int Sid: surface id
unsigned int Ns: number of points to use
unsigned int NT: number of points to use
void SetAxis(OnOff)
Set the state of axis
Returns: None
Parameters:
bool OnOff: state of axis
void SetTriad(OnOff)
Set the state of triad
Returns: None
Parameters:
bool OnOff: state of triad
Parameters:
unsigned int Sid: surface id
QColor Color: color to use
Parameters:
AvAPI_Matrix Mat2D: control points (x, y, z)
int order: order to use
AvAPI_Matrix Knot: knot vector
void Remove(cid)
Delete a spline or surface from the plot
Returns: None
Parameters:
unsigned int cid: spline or surface id
Constructors:
VibPlot3D()
Constructor
Returns: object
Parameters: None
110 Adams Vibration
Utility Functions
Utility Functions
AvUtils
The entry point for the Adams Vibration Input Channel
Modules
msc.Adams.Vibration.libAvAPIc math string sys
libsip os struct traceback
Classes
AvModalEnergy
class AvModalEnergy
Functions
AvDacFileToMatrix(filename, nPts)
AvDatFileToMatrix(filename, nPts)
AvFFTDataActuator(argList, w)
AvMakeFrequency(start, end, steps, spaceLog)
Testing Your Model 111
Utility Functions
Note: The last group may not be full. Full frames are only
required, not full groups. So the last group may
contain fewer than Number of frames in group.
Clarification - the group will be full but may not
contain all frames of acquired data
112 Adams Vibration
Utility Functions
AvSolverSetup()
Mag(cVal)
Complex Mag and Phase
Phase(cVal)
byteSwap(CC)
formatExceptionInfo(logFile, maxTBlevel=10)
writeMatrix(matFile, Mat, title=None)
write a matrix to a file
@param matFile: File to write to
@type matFile: file object
@param Mat: Matrix to write
@type Mat: AvAPI_Matrix
@param title: String to preceed the matrix in the file
@type title: string
writeMatrix2(matFile, Mat, title=None)
write a matrix to a file
@param matFile: File to write to
@type matFile: file object
@param Mat: Matrix to write
@type Mat: AvAPI_Matrix
@param title: String to preceed the matrix in the file
@type title: string
writeMatrixXML(matFile, Mat, title='Matrix', space=2)
write a matrix to a XML file
@param matFile: File to write to
@type matFile: file object
@param Mat: Matrix to write
@type Mat: AvAPI_Matrix
@param title: Name of matrix [default: Matrix]
@type title: string
@param space: Starting indentation for matrix [default: 2]
@type space: integer
@Note: Assumes the matrix is complex
writeXMLFooter(matFile)
Testing Your Model 113
Utility Functions
Data
MEDissipativeEnergy = 0
MEEndMode = -99
MEHeader = 0
MEKineticEnergy = 0
MENormalizedCoordinates = 0
MEStartMode = -1
MEStrainEnergy = 0
__author__ =
__date__ = '1 Dec. 2002'
__file__ = './AvUtils.pyc'
__name__ = 'AvUtils'
114 Adams Vibration
Utility Functions
Reviewing Your Model
Importing Vibration Results
You can import a previously generated results file and attach it to a vibration analysis. This enables you
to plot vibration data generated from the eigen and state matrices in the results file. The imported results
file and the vibration analysis must be from the same model.
Displaying Eigenvalues
The Eigenvalue table displays the eigenvalue of a given analysis.
To display eigenvalues:
1. From the Vibration menu, point to Review, and then select Display Eigenvalue Table.
2. Complete the dialog box as described in Eigen Information.
3. Select OK.
Note: You can display the same modal information from Adams PostProcessor by selecting the
Modal Info button in the dashboard.
116 Adams Vibration
plotting frequency response functions, generating modal coordinates tables, and displaying other time
and frequency data (see table below).
Note: Doing a normal modes animation outside of Adams Vibration is called a frequency-domain
animation. So, if youre referring to the Adams PostProcessor online help for more
information on animation, read the sections on frequency-domain animations
You can validate Adams Vibration results using Adams PostProcessor. Using Adams PostProcessor you
can plot several key pieces of data, including:
Frequency Response
Modal Coordinates
Modal Participation
Power Spectral Density (PSD)
System Modes
Transfer Function
3D
The following table outlines how you can view Adams Vibration results:
For general information plotting, refer to the online help for Adams PostProcessor.
118 Adams Vibration
Note: If you change the axis limits, the upper and lower limits will have different meanings. For
example, in the logarithmic scale, the limit values are the exponent. So, if the values are 2
and 3, the limits are 102 and 103 or 100 and 1000, respectively. In a linear scale, values of
2 and 3 actually mean limits of 2.0 and 3.0, respectively.
3. Right-click the vertical axis of the plot, point to Axis: vaxis, and then select Select.
4. Set the Scale to either Logar, dB, or Linear.
Right-click the Page Layout tool , and select the 2 Views-over & under tool .
The plotting area of the screen splits into two plots, one containing the frequency response plot,
and the other containing a blank plot. You can then create a new plot in the blank region.
To plot PSD:
1. Display Adams PostProcessor in Plotting mode.
2. Set Source to PSD.
3. From the Vibration Analysis list, select the vibration analysis you want to plot.
4. From the Output Channels list, select the output channels you want to reference.
5. Select Add Curves.
Learn more about Power Spectral Density (PSD).
Note: If you change the axis limits, the upper and lower limits will have different meanings. For
example, in the logarithmic scale, the limit values are the exponent. So, if the values are 2
and 3, the limits are 102 and 103 or 100 and 1000, respectively. In a linear scale, values of
2 and 3 actually mean limits of 2.0 and 3.0, respectively
3. Right-click the vertical axis of the plot, point to Axis: vaxis, and then select Select.
4. Set the Scale to either Logar, dB, or Linear.
Right-click the Page Layout tool , and select the 2 Views-over & under tool .
The plotting area of the screen splits into two plots, one containing the transfer function plot, and the
other containing a blank plot. You can then create a new plot in the blank region.
flexible body, export modal coordinates for this flexible body in MDF file format, re-start Nastran run to
recover element stress and strain information.
G ( z, z, t ) = 0 (1)
where:
z = vector of states of the model.
G = system of first-order differential and algebraic equations.
Lagrange multipliers due to kinematic constraints (JOINT, JPRIM, MOTION, PTCV and CVCV) also
contribute to the vector of states.
This system of equations is linearized about an operating point z0. An operating point is defined by an
initial-conditions analysis or static or dynamic analysis [Sohoni, 1986; Negrut and Ortiz, 2005]. Using
a process of eliminating algebraic equations from the linearized representation of, ordinary differential
equations along with algebraic output equations of the following state-space form are obtained:
x = Ax + Bu
(2)
y = Cx + Du
where:
x = Vector of states of the linear model
y = Outputs from the linear model
u = Inputs to the linear model
[A,B,C,D] = State matrices for the linear model
Specific details of the linearization process implemented in Adams Solver (FORTRAN) are given by
Sohoni [1986]. Negrut and Ortiz [2005] have given details of linearization process implemented in
Adams Solver (C++).
States of the linear model, x in equation (2) are a subset of states of the nonlinear model, represented by
z in (1). When performing normal-modes analysis, specification of inputs and outputs is not required.
Therefore, the problem is reduced to finding a solution to the homogeneous equation:
x = Ax (3)
Representing the solution to equation (3) as:
132 Adams Vibration
Linearization in Adams Vibration
i
i t
x(t) = e
where:
= ith eigenvector
= ith eigenvalue
Substituting in equation (3) gives:
i i i
A = (4)
Equation (4) is the classic eigenvalue problem. This problem is solved in Adams Vibration using the well-
known QR method [Press et. al., 1994] for computing eigen-values and eigen-vectors.
Note that Adams Vibration always computes and as complex quantities. The complete eigen-solution
to equation (3) can be expressed in the form [Ewins, 1995],
0
= *
0
* (5)
Q= * *
where:
i 2
+ i 1 ( ) = r + i i
i i i i i
i i 2 i 2
= ( r ) + ( i ) , the ith natural frequency.
i i i
= r
* indicates the complex conjugate
Differences between proportional and general viscous damping Adams Vibration implements
general viscous damping. In these cases, damping matrix is no longer guaranty to be proportional to mass
and/or stiffness matrices. Following ways are generally referred in modal space to identify a presence of
non-proportional damping in the Adams Vibration model:
Adams Vibration Theory 133
Linearization in Adams Vibration
The real-valued modal matrix of the un-damped model no-more diagonals the damping
matrix.
The real and imaginary parts of the kth eigenvector are now linearly independent.
Forced-Response Analysis
Inputs and outputs to the linear model are defined by means of input and output channels in Adams
Vibration. Input channels contribute to the B matrix. Output channels contribute to the C matrix. The D
matrix represents direct interaction between input and output channels. For more details, see Modeling of
Vibration Entities.
Using Laplace transform, equation (2) can be expressed in the form [De Silva, 2000]:
(6)
where:
s = Laplace variable
From equation (6), transfer function in the state-space form is given as:
(7)
(8)
where:
= Matrix of eigenvectors
134 Adams Vibration
Linearization in Adams Vibration
(9)
(10)
where:
1
A m = Z AZ
1
Bm = Z B
C m = CZ
Therefore, the transfer function for the model in modal space is given as:
(11)
When you ask for the transfer function of a model to be computed, you specify the range of values for s
and the number of steps. At each step in the range of s, transfer function H(s) is computed from
expression in the right-hand side of equation (11).
Transfer function can be computed in two forms, that is, using equation (7) or equation (11). Solution of
the transfer function in the form of equation (7) is called the direct solution, while solution in the form
equation (11) is called the modal solution.
Adams Vibration uses the following steps to compute the transfer function for the model:
1. From the given input/output channel specification,
2. Compute state matrices in the state space forms as in equation (2).
3. Compute eigen-solution for the model using equation (4).
Adams Vibration Theory 135
Linearization in Adams Vibration
Vibration Analyses
Adams Vibration performs two types of vibration analyses:
Normal Mode Analysis to compute eigen-values and eigenvectors for a model
Forced Vibration Analysis to compute the forced response of the model to vibratory inputs
applied using vibration input channels and actuators on the model. Eigen-values and
eigenvectors are also available computed during the forced-response analysis.
X = AX + Bu
Y = CX + Du
This linear representation is known as the minimal state-space representation or as the input/output
equations. Matrix A is called the linearization matrix and matrices B, C, and D have different names in
the technical literature. In general, vector X includes displacements, velocities and differential states of
the model.
q
X = z .
v
Vector q includes a subset of all of the displacement states in the system while vector v is the
corresponding set of velocities. Vector z includes all of the differential states defined in the system.
Notice that vector q may include a set of user-defined coordinates when using the Adams C++ Solver.
The above references describe the selection algorithm for the states in q. Adams Vibration, Adams Linear
and the stand-alone version of Adams Solver all provide tools to export the A, B, C, D matrices and the
list of linearization coordinates q, z, v, using two different file formats in ASCII form. Notice vector q
includes neither Lagrange multipliers nor force/variable definitions.
Vector u stands for inputs to the system. For the homogenous case (u=0) and no output equations, the
state-space representation reduces to:
X = AX (12)
Adams Vibration Theory 137
Vibration Analyses
q
X = (13)
v
In this case, the linearization matrix A takes this form:
0 I
A = (14)
1 1
M K M b
Here M, K and b are matrices that may not be symmetric. I is the identity matrix. Using Equations (13)
and (14) into Equation (12), and simplifying we obtain:
q = v
1 1
v = M K q M bv
These two equations combined reduce to the well-known form:
Mq + bq + Kq = 0 (15)
Equation (15) is called the MKB representation and matrices M, b and K can be exported using Adams
Linear into different file formats. Instead of performing a modal analysis using Equation (15), Adams
Vibration solves a complex eigenvalue problem using Equations (12) as the starting point. Representing
the solution as:
t
X = e
Equation (12) transforms into a standard eigenvalue problem:
A = (16)
Adams Vibration uses a complex eigenvalue solution algorithm to compute eigenvalues and mode
shapes . In general, matrix A is non-symmetric and, in many cases, it can be ill conditioned or even
singular. Hence, mode shapes are not orthogonal. See [Meyer, 2000] for a complete set of properties and
theorems related to the eigensystem shown in Equation (16).
For the simple case defined by Equations (13), (14) and (15), there is an important property related the
computed mode shapes. A typical mode shape of the simple system can be split into:
138 Adams Vibration
Vibration Analyses
q
= (17)
v
Putting Equation (17) and (14) into Equation (16) we obtain:
0 q I q
=
M K M b v v
1 1
v = q (18)
2
( M + b + K ) q = 0
However, matrices M, b and K need not be symmetric, hence orthogonality properties do not apply.
q
X = z (19)
v
0 0 I
A = A1 A2 A3 (20)
1 1 1
M K M A4 M b
Using Equation (20) into the homogenous Equation (12) we obtain after simplifications:
q = v
z + A 1 q + A 2 z + A 3 q = 0
Mq + Kq + A 4 z + bq = 0
The last two equations can be rewritten as:
Adams Vibration Theory 139
Vibration Analyses
z A 2 A 1 z
0 0 z + I A3 0
+ = (21)
0 M q 0 b q A4 K q 0
or
z z z
M' + b' + K' = 0 (22)
q q q
Equation (22) is the MKB representation for the general system and, as above, matrices M', b', and K' can
be computed and exported using Adams Linear.
For the general case of Equation (20) the eigensolution will compute the eigenvalues and mode shapes
using the same algorithm used for the simple model with no differential states. Similarly, the linearization
matrix A is not symmetric and the orthogonality conditions do not apply except for very special cases.
Defining a generic mode shape as:
q
= z (23)
v
and using Equation (20) and (16), we obtain after some manipulations:
v = q (24)
2 0 0 I A3 A2 A1 z
+ + = 0
0M 0 b A4 K q
Eigensolution
Adams Vibration will compute eigenvalues of matrix A using a QR algorithm regardless of the type of
model. We emphasize that the A matrix is, in general, non-symmetric, hence all orthogonality theorems
for computed mode shapes do not apply. Moreover, the A matrix does not need to be full rank nor well
conditioned. Adams models with control systems or in singular configurations (for example, neutral
static equilibrium, bifurcation points and so on) may exhibit multiple zero value eigenvalues or large real
eigenvalues.
In the general case, the size of the A matrix is:
N = 2n q + n z (25)
140 Adams Vibration
Vibration Analyses
Where nq is the size of the q vector and nz is the size of the z vector. The eigensolution will compute a
set of nr real eigenvalues and 2nc complex eigenvalues (all complex eigenvalues form a set of conjugate
pairs). Therefore:
N = 2n q + n z = 2n c + n r (26)
Notice that Adams Vibration will only display a table with nc+nr eigenvalues only (conjugate complex
values are not displayed). See Eigenvalue Table Reported in Adams View for an example output using
the Adams Vibration user interface. Notice in the example in Table 1, there are 2 real-only eigenvalues
and 2 complex eigenvalues. Hence the size of the A matrix is 2*2+2=6.
By default the eigensolution is performed on the full computed A matrix. Hence, all damping properties
in the system are taken into account. If you want to compute the eigensolution without the damping
properties, then uncheck the Damping checkbox in the Perform Vibrational Analysis dialog box.
A very important notice is due here. If you use the Adams Solver C++, and if you uncheck the Damping
checkbox, Adams Vibration will set matrix b to zero in Equation (20) to get:
0 0 I
A = A1 A2 A 3 (Adams Solver C++) (27)
1 1
M K M A4 0
However, if you use the Adams Solver FORTRAN, and you uncheck the Damping checkbox, Adams
Vibration will set both matrix b and matrix A3 to zero:
0 0 I
A = A1 A2 0 (Adams Solver FORTRAN) (28)
1 1
M K M A4 0
If you would like Adams Solver C++ to flush the A3 matrix too, set the environment variable
MSC_ADAMS_SOLVER_NODAMP_DIFF to any value. The rationale behind not flashing the A3 matrix
was based on the purely philosophical assumption that damping is a mechanical property hence the
coupling between velocities and differential states (matrix A3) should be left unchanged.
See the Adams Solver C++ documentation for the command LINEAR for more information of using
user-defined coordinates. By default, vector q in Equations (13) and (19) is a subset of the global
translational displacements and instantaneous rotations of the center of mass of each PART. If there are
FLEX_BODYs in the model, vector q includes also all the corresponding states for the modal
representation of each FLEX_BODY. However, in rotordynamic models, users may need to obtain a
linearization of the system using a different set of coordinates (for example, r) defined as:
r = r(q) (29)
Adams Vibration Theory 141
Vibration Analyses
In that case, Adams Vibration will linearize the system into this form:
r = A r (30)
As presented in [Negrut et al., 2005], the eigenvalues in A* and A may not be the same.
In all cases, all computed eigenvalues may be expressed as:
2
= i = w ( i 1 ) (31)
Where w is defined as the undamped natural frequency and is defined as the damping ratio. Solving
Equation (31) for both the undamped natural frequency and the damping ratio, we get the following
results for real-only eigenvalues:
w = (32)
= 1
For complex eigenvalues Equation (31) results in:
2 2
w = + (33)
-
= ---
w
See Eigenvalue Table Reported in Adams View for an example output showing the computed undamped
natural frequency, damping ratio, real value and imaginary value of the displayed eigenvalues of the
model.
Eigen-values can be plotted as a complex scatter on a real-imaginary axis, as shown in Figure 1 Complex
Scatter Plot. The real part of eigen-values corresponds to damping in a model. The imaginary part
corresponds to stiffness in the model. A mode with an eigenvalue of negative real part is considered
stable. Conversely, a mode with eigen-values of positive real part is unstable. As shown in Figure 1
Complex Scatter Plot, eigen-values lying in the left half plane are stable and those in the right half plane
are unstable.
142 Adams Vibration
Vibration Analyses
A model with all stable eigen-values, if perturbed, will return to its original unperturbed configuration on
removal of the perturbation. A perturbation applied to a model with unstable eigenvalue(s) may cause
unstable modes to be excited. In this case, the model will have an unbounded response to this
perturbation. For more information, see Reference 4.
Regarding computed mode shapes ( ) , Adams Vibration does not export the computed mode shapes.
Should you need the computed raw mode shapes from matrix A, we suggest exporting the A matrix and
compute the mode shapes using an eigensolver of your choice. The A may be exported using the
LINEAR/STATEMAT Solver command or using the Adams View user interface.
For animation purposes, Adams Vibration uses the following equation:
Q = T q (34)
to obtain all coordinates in the model for given a particular mode shape. Matrix T is a transformation
matrix from the minimal state-space representation to the full representation of the model. Vector Q is
used to animate the mode shapes in the post processor and to display the Normalized Coordinates in the
Energy Tables options. A similar transformation is used to compute the velocity and differential states
allowing the computation of Kinetic Energy, Strain Energy and Dissipative Energy tables.
Adams Vibration Theory 143
Vibration Analyses
X = AX + Bu (35)
Y = CX + Du
As shown in the previous section, vector X stands for the minimal state-space representation, matrix A is
the linearization matrix and matrices B, C and D are the input/output matrices computed using the
definitions of the input and output channels. Adams Vibration requires you to construct a vibration
analysis. A vibration analysis consists of: a collection of all the input and output channels, the operating
point specification, the frequency range and number of steps in this range. Options to turn off damping
matrices and the usage of user-defined states are also available.
When using the Adams Vibration user interface to create an input channel, each input channel results in
an action-only SFORCE being created in the model along with a VARIABLE. The VARIABLE is used
to define the SFORCE. The expression for the variable is set to zero in the Adams Solver model because
the computation of the B and D matrices do not require a value for the said VARIABLE. However, the
input channel definition will be used in the FRA subsequent analysis.
When creating an output channel, each output channel results in one VARIABLE being created. Function
expression for this entity depends on the type of output channel you define. On defining a vibration
analysis, the variable corresponding to the input channels are collected into a PINPUT and variables
corresponding to the output channels are collected into a POUTPUT. The model is linearized using this
PINPUT and POUTPUT pair. As shown in Figure 2. Input and Output Channels, each input channels
contributes one column to the B matrix. Each output channel defines one row of the C matrix.
The FRA proceeds with taking the Laplace transform of Equation (35) to obtain:
sx ( s ) = Ax ( s ) + Bu ( s ) (36)
Y ( s ) = Cx ( s ) + Du ( s )
144 Adams Vibration
Vibration Analyses
Where s is the Laplace variable and x(s), u(s) and Y(s) are the transforms of X, u and Y respectively.
Solving for Y(s) we find:
1
Y ( s ) = ( C ( sI A ) B + D )u ( s ) (37)
Defining the transfer function H(s) as:
1
H ( s ) = C ( sI A ) B + D (38)
The forced response of all output channel is then:
Y ( s ) = H ( s )u ( s ) (39)
Adams Vibration will compute the value of each Y(s) for each s specified in the Vibration Analysis
definition.
If the size of vector X is N, and there are ni inputs and there are no outputs, then the sizes of the matrices
in Equation (38) are:
AN N
B N ni
C n0 N
D n0 ni
H n0 xni
Adams Vibration user interface allows the user to set a range of values for the variable s using different
formats. Notice that for each s computing the response Y(s) requires inverting a matrix of size NxN as
shown in Equation (38). If matrix A can be diagonalized, the response for each s is obtained following
the diagonalization algorithm shown in section Transformation to Modal Space.
Transfer Function
The plots for the transfer function H(s) are computed from equation (38). Adams Post Processor displays
each plot by first selecting an input channel k and then selecting an output channel j in the post-processing
window. Each plot corresponds to the entry Hjk of the H(s) matrix for all values of s.
These plots are equivalent to setting input channel k to 1 and all other input channels to zero in Equation
(39), and displaying the jth entry of the resulting matrix-vector multiplication. See Figure 3 below.
Adams Vibration Theory 145
Vibration Analyses
Besides displaying each entry of the transfer function matrix H(s), Adams Postprocessor allows plotting
the frequency response Y(s) for each output channel. Equation (39) may be rewritten as follows:
s = s b, , s e
Here sb and se are the Begin and End frequencies respectively as set by the user in the Vibration Analysis
user interface.
Density Sxx(s) of an input and the objective is to compute the Power Spectral Density Syy(s) of an output.
In this case, the relation between a single PSD input Sxx(s) and a single PSD output Syy(s) with transfer
function h(s) is:
2
S yy ( s ) = h ( s ) S xx ( s ) = h ( s )h ( s )S xx ( s )
Where h*(s) stands for the complex conjugate of h(s).
Adams Vibration can be used to define input channels with actuators of either PSD type or non-PSD type.
Actuators of the non-PSD type are standard actuators with computed Fourier Transforms obtained from
measured input signals or theoretical functions entered as symbolic expressions in the user interface.
Actuators of the PSD type define a Power Spectral Density function (the Fourier Transform of the
autocorrelation of some signal).
Regardless of the type of input channels (either PSD type or non-PSD type), Adams Vibration computes
and displays the Power Spectral Density response of each output channel, or PSD(s).
For input channels using non-PSD type actuators, a non-standard estimation of the Power Spectral
Density is computed as follows:
1 2
u j ( s ) = -------- u j ( s ) (41)
2df
Here df is the difference between End and Begin frequencies as setup in the Vibration Analysis data.
Notice this estimation of the Power Spectral Density returns complex values. Using Equation (41), the
response PSD(s) is computed using the standard equation:
Here PSDk(s) is the response Power Spectral Density function for the kth output. Hkj*(s) is the complex
conjugate of Hkj(s). The summation is implied 1 to ni. Adams Post processor does not compute the
individual contribution of each input channel when displaying PSDk(s). Notice we assume there are no
cross correlations between the inputs.
For actuators of the PSD type there are two cases to consider. If there are no cross-power spectral
actuators between the different input channels, the PSD(s) output is computed using the standard
equation:
PSD k ( s ) = Hkj ( s )Hkj ( s )uj ( s ) (PSD type actuators, no cross correlation) (43)
j
If there is a set of cross-power spectral actuators U(s), they can be ordered in matrix form as:
U ( s ) = U ij ( s ) n ni
(44)
i
Adams Vibration Theory 147
Vibration Analyses
For this second case, the Power Spectral Density response PSD(s) is computed as:
Adams Vibration user interface provides the tools to define the matrix of cross-spectral actuators. When
defining a PSD type input channel Uii(s), check the Cross Correlation checkbox and click the Cross
Correlation Setup button to define the cross-spectral actuators Uij(s).
When plotting PSD response, input channels with actuators of type PSD cannot be mixed with actuators
of force type in one vibration analysis.
Modal Coordinates
Equation (36) can be transformed from the standard state-space representation into a "modal"
representation. We define the "modal" states q(t) as follows:
x ( t ) = zq ( t ) (46)
Matrix Z in Equation (46) is the modal matrix composed by the mode shapes obtained from the
eigensolution of the system. Notice Equation (46) is a representation of the solution x(t) in the time
domain. Transforming Equation (46) into the frequency domain, we obtain:
x ( s ) = Zq ( s ) (47)
Using Equation (47) into Equation (36) and simplifying we obtain an equivalent representation of the
frequency response of the system in terms of the "modal" states q(s):
sq ( s ) = A m q ( s ) + B m u ( s ) (48)
Y ( s ) = C m Zq ( s ) + Du ( s )
Matrices Am, Bm, and Cm are obtained from:
1
A m = Z AZ (49)
1
Bm = Z B
C m = CZ
Adams Vibration computes and displays the frequency response of each modal state qk(s). From Equation
(48) we obtain in matrix form:
1
q ( s ) = ( sI A m ) B m u ( s ) = M ( s )u ( s ) (50)
148 Adams Vibration
Vibration Analyses
Equation (50) can be interpreted as the frequency response of each modal state. Moreover, for a given
input channel j and a given entry k in the modal vector q(s), Adams Vibration computes and plots:
q k ( s ) = M kj U j ( s ) (51)
s = s b, s e
Equation (51) is the frequency response of the kth entry in the modal vector due to the jth input channel.
Adams Post processor displays Equation (51) for the complete range of selected frequencies s. See
Figure 4 below.
Note: Currently, in the Modal Coordinates plot options, the user interface wrongly shows the
number of different eigenvalues instead of the size of the state vector q(s). The
modification of the user interface will be executed in compliance with enhancement
ADMS-37553.
While Equation (51) displays the response of a single state qk(s) for the whole range of specified
frequencies s, Adams Post Processor also displays the complete response of the modal vector q(s) for a
Adams Vibration Theory 149
Vibration Analyses
given frequency so. Evaluating Equation (50) for s=so and for the jth input channel (all other input
channels are set to zero) we obtain:
(52)
Vector q(so) is of size N (which is the size of the state matrix A) and Adams Post processor display the
contents of this array.
Note: Currently, in the Modal Coordinates plot, the user interface only plots a subset of vector
q(so). The user interface will be corrected following the specifications in enhancement
ADMS-37554.
Modal Participation
While the modal coordinates define how active a certain mode qk(s) is at a given frequency s (see
Equation (51)), the modal participation identifies how much a given input ui(s) and a given mode qk(s)
contribute to the total frequency response of a specified output Yj(s). From Equation (48) we obtain:
(53)
The options to plot the Modal Participation in the Adams Post Processor allow selecting the ith input, the
kth mode and the jth output. See Figure 6 below.
Adams Vibration Theory 151
Vibration Analyses
Note: Currently the plotting options, in Modal Participation plot, wrongly show the number of
different eigenvalues instead of the full range of modal coordinates. Also there is an
incorrect algorithm implementation providing approximate results only. The user interface
and implemented algorithm will be corrected following enhancement ADMS-37565.
(54)
where:
152 Adams Vibration
Vibration Analyses
(55)
where:
ij = ith column vector of matrix j , which is condensed mode shape matrix from system
mode shape matrix , corresponding to six degrees of freedom of PART j
j = Mass matrix of PART j
Adams Vibration breaks this modal kinetic energy contribution of PART j in nine components to present
it in modal energy tables:
1
K1j = m ij (1)* ij (1)
2
1
K 2j = m ij (2)* ij (2)
2
1
K 3j = m ij (3)* ij (3)
2 (56)
1 j *
K 4j = (4) I xx ij (4)
2 i
1
K 5j = ij (5)* I yy ij (5)
2
1
K 6j = ij (6)* I zz ij (6)
2
Adams Vibration Theory 153
Vibration Analyses
K 7j = ij (4)* I xy ij (5)
K 8j = ij (4)* I xz ij (6)
K 9j = ij (5)* I yz ij (6)
Equation (55) now equivalently expressed as,
(57)
n
i = i j (58)
j =1
where:
(59)
Above equation shows that the percentage kinetic energy contribution of any degree of freedom to a
particular mode is independent on natural frequency of that mode and depends on the product of the mass
or inertia and square of the mode shape amplitude (mass and inertia terms) or product of mode shape
amplitudes (product of inertia terms) of the mode in that directions. As the sum of the kinetic energy
contributions of all degree of freedoms in that mode shape (not part degrees of freedom) is made equal
to 100, through the definition in equation , it is easy to identify the relative importance of various degrees
of freedoms. This will help to identify which particular degree of freedom is contributing more or less to
the overall modal kinetic energy.
Percentage kinetic energy contributed by PART j to mode i is defined as:
154 Adams Vibration
Vibration Analyses
(60)
where:
(61)
where:
p
i = Strain energy in complaint element p for mode i
p = Matrix of size equal to model stiffness matrix, with all zero entries except stiffness matrix
entries contributed by compliant element p.
156 Adams Vibration
Vibration Analyses
p
100 i
S pi = m
p =1
p
i ; p=1, ,m (62)
where:
iii. Dissipative energy distribution is computed in a similar manner to the strain energy distribution. In
p
100 i
S pi = m
equation (61)
p =1
p
i ; p, the damping matrix is substituted for the stiffness matrix.
Stress Recovery
With Adams Vibration you can recover stresses and strains on flexible bodies. Recovering stresses on
flexible bodies is called Modal Stress Recovery (MSR). Adams Vibration allows you to export modal-
coordinates corresponding to flexible body modes that can later be used as input to FEM software like
Nastran to recover the stresses in the flexbody.
The linear deformation (y) of the flexbody nodes can be approximated as a linear combination of M
orthogonalized mode shape vectors ( ) of that flexbody.
(63)
The basic advantage of the modal superposition is that the deformation behavior of a component with a
very large number of nodal DOF can be captured with a much smaller number of modal DOF.
Adams Vibration exports the modal coordinates ( q ) in a Modal Deformation File (MDF) format
(binary). FEM software like Nastran then does the summation to get linear deformation of flexbody
nodes and then recovers stresses and strains as follows,
(64)
where:
Note that it is necessary to create a super-element of flexbody without any constraints (free-free boundary
condition). The restart run is necessary in Nastran to recover the stresses and strains.
158 Adams Vibration
Modeling of Vibration Entities
Note: Due to this constraint, the frequency response peaks may be shifted from the frequencies
of the normal modes of the model.
Vibration Actuators
A vibration actuator defines the magnitude and phase of the applied forcing function. Vibration actuators
are required for modeling forcing function in forced response analysis. Phase angle, as defined in a
vibration actuator, is with respect to the positive direction of the marker in the vibration input channel on
which this actuator is defined.
Vibration actuators are applied at the input channel after the model is linearized. Therefore, vibration
actuators are only in effect for frequency domain analysis and have no effect on the operation point
analysis for the model.
where:
f = force magnitude
= phase angle
The phase angle is measured with respect to positive direction of the marker axis for the input channel
on which this actuator is acting.
Force Type
The force rotating mass actuator is represented by two actuators. The Leading and Lagging actuators are
represented as:
where:
When you want to incorporate vibratory effects due to an unbalanced mass in your vibration analysis,
you must create two vibration actuators acting on the same input channel. The first actuator must be
defined as a Leading actuator and the second as the Lagging actuator.
Moment Type
The moment type of rotating mass actuator is applicable for simulating moments due to radial, as well as
axially offset unbalanced masses. The leading and lagging actuators are represented as:
where:
Mle = Moment applied in the leading actuator
Mla = Moment applied in the lagging actuator
d = Axial offset between unbalanced masses
As with the force type rotating mass actuator, to incorporate vibratory moment effects due to an
unbalanced mass in your vibration analysis, you must create two vibration actuators acting on the same
input channel. The first actuator must be defined as a Leading actuator and the second as the Lagging
actuator.
PSD Actuator
The PSD actuator is for defining a spectrum that you want to apply to the model. For more information
on power spectral density, see Reference 4. The PSD actuator is specified using a spline. You can create
a spline using the Function Builder in Adams View. In Adams Vibration, you can specify the
autocorrelation PSD of an input channel to itself, as well as the cross correlation PSD to other input
channels. Section 4d provides details of how auto and cross correlations are used for computing PSD
response.
Adams Vibration Theory 161
Modeling of Vibration Entities
PSD type actuators cannot be mixed with swept sine, rotating mass, or user-type actuators in the same
vibration analysis. Response solution for PSD actuator is different from the force vibration response
analysis.
2 T ad ams (65)
{ } = [ Z 2 ] [ a ] { }
f s
By knowing right hand side vector for every frequency step from Adams, the above equation can be
solved for . From here, acoustic pressure {p} can be recovered using following equation.
f
c c c adams
ms 0 s + bs 0 s + ks a s = m adams b + k s sadams
c c c + s s (67)
T
a mf 0 bf 0 kf f s s
f f 0
By making use of Nastran Eq. 13-66 to Eq. 13-70, the fluid modal co-ordinates can be written in terms
of Adams structural modal co-ordinates.
c
{ s } = [ C ] { adams }
s
1
[ C] + [ I 2 + [ Z1][ a][ Z2 ][ a]T ] (68)
The correction matrix [C] in above equation can be used to get judgment of fluid loading on structure.
This is useful matrix to check the validity of assumption made during Adams simulation.
Adams Vibration Theory 165
Acoustic Pressure Recovery Theory
c T
{ f } = 2[ Z 2 ] [ a ] [ C ] { sadams } (69)
By knowing right hand side vector for every frequency step from Adams, the above equation can be
solved for fc . From here, acoustic pressure {p} can be recovered using following equation.
{ p } = [ f ] { fc } (70)
166 Adams Vibration
Adams Vibration References
You can also find many examples in your Adams Vibration installation directory (install_dir/examples).
Each folder contains all of the files required to run the example.
162 Adams Vibration
Dialog Box - F1 Help 163
Linear
Logarithmic
Close Action Select one of the following:
Creates a macro capable of retrieving vibration-specific data. You can then use it when performing a
design study.
Creates a simulation Script that you can use during multi-run simulations (such as Design study, Design
of experiments (DOE), and so on).
Plant State
Reference Marker
Frequency Range/User- Select the type of frequency you want to use.
Specified Frequencies
If you select Frequency Range, Adams Vibration displays the following options:
Begin Enter the beginning value for the frequency range.
End Enter the ending value for the frequency range.
Steps Enter the number of steps in the frequency range.
172 Adams Vibration
Create Vibration Multi-Run Script
Create/Modify FD 3D Damper
Vibration -> Build -> FD 3D Damper -> New/Modify
Pfeffer Linear - Contains two linear dampers and two linear springs.
Simple FD - Contains one linear damper and two linear springs.
Simple FD-Bushing - Contains one linear damper and two linear springs.
General
Depending on the setting of Type, Adams Vibration displays one or more of the following options:
C 1/2/3 Enter the damping value(s) for the damper.
K 1/2/3 Enter the stiffness value(s) for the damper.
Preload Enter the value of the preload in the component.
174 Adams Vibration
Create/Modify FD Damper
Create/Modify FD Damper
Vibration -> Build -> FD Damper -> New/Modify
Pfeffer Linear - Contains two linear dampers (Damping 2 and 3) and two
linear springs (Stiffness 1 and 3).
Simple FD - Contains one linear damper (Damping 3) and two linear
springs (Stiffness 1 and 2).
Simple FD-Bushing - Contains one linear damper (Damping 3) and two
linear springs (Stiffness 2 and 3).
General - Contains three linear dampers (Damping 1, 2, and 3) and three
springs (Stiffness 1, 2, and 3).
Depending on the setting of Type, Adams Vibration displays one or more of the following options:
C 1/2/3 Enter the damping value(s) for the damper.
K 1/2/3 Enter the stiffness value(s) for the damper.
Preload Enter the value of the preload in the component.
Dialog Box - F1 Help 175
Create/Modify Vibration Actuators
Swept Sine.
Rotating Mass.
PSD. See Power Spectral Density.
User. See User-Defined Function.
Force Magnitude Enter the force magnitude.
Phase Angle (deg) Enter the phase angle (in degrees).
176 Adams Vibration
Create/Modify Vibration Input Channel
Define the parameters for Input Channels. In these dialog boxes, you can also assign and modify vibration
actuators.
Force
User-specified state variable
Kinematic
If you select Force or Kinematic, Adams Vibration displays the following options:
Input Marker Enter the location of the input marker.
Translational/Rotational Select one of the following:
Eigen Information
Vibration -> Review -> Display Eigenvalue Table
Allows you to import a previously generated results file and attach it to a vibration analysis. This enables
you to plot vibration data generated from the eigen and state matrices in the results file. The imported
results file and the vibration analysis must be from the same model.
Specifies options for computing modal energy during your vibration analysis.
Modal Information
Vibration -> Review -> Display Modal Info Table
Nodal Info
Tools > Plugin Manager > Vibrartion > Build > nodal Info > New > Nodal Info
To plot stress and strain frequency response functions of selected nodes on flexible body in Adams
PostProcessor.
Creates and runs a vibration analysis (see Vibration Analysis Calculation Methods to learn more).
Note: You cannot select input channels with actuators of PSD type
and input channels with actuators of non-PSD type in the same
analysis.
Output Channels Enter the name of the output channels you want to use in this vibration
analysis.
If you are modifying an existing forced vibration analysis with results, Adams Vibration displays the
following option:
Reuse Existing State If you select this option, you can specify the modes for the Forced
Matrix Vibration Analysis.
Note: Changes made in text boxes that are grayed out are not included
in the subsequent analysis.
Appendix
190 Adams Vibration
Bode Plot
Bode Plot
Plot of magnitude and phase response of a system for a unit sinusoid applied at an input channel and
measured at an output channel.
Appendix 191
Decibel
Decibel
A unit of measurement for attenuation or amplification of a signal, given as 20*log (input/output).
192 Adams Vibration
Eigensolution
Eigensolution
An analysis that uses a model, along with an existing transient analysis step or static analysis, to compute
the frequency domain behavior of the system. The results are a collection of eigenvalues describing the
natural modes, and eigenvectors describing the normal mode shapes of the system components.
Appendix 193
Entering a User-Defined function
akima
cspline
cubic
linear
Note: The detail definitions are in Design-Time Functions in Adams
View.
Phase Angle (deg) Enter the phase angle (in degrees).
If you're modifying an existing input channel, Adams Vibration displays the following option:
Cross Correlation Select if you want to specify cross correlation options. Opens the PSD Cross
Correlation dialog box.
196 Adams Vibration
Entering Rotating Mass
Force
Moment
Leading/Lagging Select one of the following:
Leading
Lagging
Mass Enter the unbalanced mass.
Radial Offset (in plane) Enter the radial distance of the unbalanced mass from the axis of rotation.
Appendix 197
Entering Swept Sine Function
Frequency
The rate of oscillation of harmonic motion.
206 Adams Vibration
Frequency Domain (FD) Damper
Note: You can hold down the <Ctrl> key as you click to select multiple nodes.
Note: You can hold down the <Ctrl> key as you click to select multiple modes.
Input Channel
A driver in the model, providing stimulus for the vibrational analysis.
Appendix 209
Linear System Modes
Natural Modes
See Normal Modes.
212 Adams Vibration
Normal Mode
Normal Mode
A frequency at which a given system resonates in a particular way.
Appendix 213
Normal Mode Number
Normal Modes
The modes that Adams Vibration produces. Often called principle modes or linear system modes in
structural dynamics texts. Normal modes are the results of an eigensolution. This is to differentiate them
from component modes that can be computed by other means.
216 Adams Vibration
Number of Modes
Number of Modes
If you do not specify the number of modes you want to compute, Adams Vibration automatically chooses
a suitable number of modes based on the model size.
Appendix 217
Operating Point
Operating Point
A point at which Adams linearizes a model. Because, traditionally, Adams models involve nonlinear
elements, you need to specify an operating point. To have an appropriate operating point, your system
must meet the following two conditions:
It must have more than one degree of freedom, so that it is capable of oscillation.
The Jacobian matrix for the system must be time invariant.
218 Adams Vibration
Output Channel
Output Channel
Instrumentation on the model that records some quantity of interest.
Appendix 219
Principle Modes
Principle Modes
See Normal Modes.
220 Adams Vibration
Resonance
Resonance
A condition where the vibration actuator drives the normal mode of the system.
Appendix 221
Rigid Body Mode
Numerics
3D plotting 131
A
Actuator
about 11
input/output channels 8
plot 2
Adams/PostProcessor
plotting output 129
using 129
Adams/Vibration
benefits 3
loading 4
process 3
starting 4
unloading 4
uses for 2
Adams/Vibration, importing results from 19
Animating
forced vibration analysis 129
normal modes analysis 129
output 129
AvActuator 41
AvAMD Class 45
AvAPI Class 52
AvAPI_Actuator Class 53
AvAPI_Complex Class 55
AvAPI_Matrix Class 56
AvAPI_System Class 59
AvAPI_SystemSS Class 61
AvAPI_ToolBox 64
AvFDElement Class 72
AvFDInstance Class 73
AvHelp Class 76
AvInputChannel Class 77
AvIOC 81
AvLinearize 82
AvMarkerSpec 85
AvMechTFs 86
226 Adams/Vibration
AvMTF 87
AvNibble 95
AvOutputChannel Class 96
B
Batch mode analysis
about 32
example 33
overview 32
C
Cross correlation dialog box 24
D
Damper
frequency-dependent (FD) 12
frequency-dependent (FD) 3D 11
Design objective macro
creating 139
dialog box 5
F
FD 3D damper dialog box 11
FD damper dialog box 12
Forced vibration analysis
animating 129
creating/running 28
Frequency response
about 29
plotting 131
frequency-dependent damper 12
frequency-dependent damper 3D 11
I
Importing your model 4
Input channels
about 8
creating procedure 9
dialog box 14
modifying procedure 9
vibration actuators 8
L
Loading Adams/Vibration 4
227
M
Macro
creating 5
creating design objective 139
Modal coordinates
about 29
plotting 132
Modal energy computation dialog box 20
Modal participation
plotting 133
N
Normal modes analysis
animating 129
creating/running 28
O
Output
animating 129
plotting 129
Output channels
about 10
creating procedure 10
dialog box 16
modifying procedure 10
P
Plotting
3D 131
about 129
actuator 2
frequency response 131
modal coordinates 132
modal participation 133
output 129
PSD 133
system modes 133
transfer function 134
Plugin manager 4
Power Spectral Density (PSD)
about 11
computation 30
228 Adams/Vibration
plotting 133
PSD
crcross correlation dialog box 24
Python API classes
AvActuator 41
AvAMD Class 45
AvAPI Class 52
AvAPI_Actuator Class 53
AvAPI_Complex Class 55
AvAPI_Matrix Class 56
AvAPI_System Class 59
AvAPI_SystemSS Class 61
AvAPI_ToolBox 64
AvFDElement Class 72
AvFDInstance Class 73
AvHelp Class 76
VibBodePlot VibPlot2D Class 110
VibPlot QWidget Class 110
VibPlot2D VibPlot Class 111
VibPlot3D VibPlot Class 118
WriteMatrix 124
WriteMatrixXML 124
WriteXMLFooter 124
WriteXMLHeader(matFile) 125
R
Results, importing Adams/Vibration 19
Rotating mass 11
S
Starting Adams/Vibration 4
Starting Adams/View 4
Swept sine 12
System modes, plotting 133
T
Transfer function
about 30
plotting 134
U
Unloading Adams/Vibration 4
User-Defined Function 13
229
V
VibBodePlot VibPlot2D Class 110
VibPlot QWidget Class 110
VibPlot2D VibPlot Class 111
VibPlot3D VibPlot Class 118
Vibration actuators
creating procedure 9
dialog box 13
Vibration analysis
about 29
creating/running forced 28
dialog box
Create Design Variable from File Dialog Box 3
Create Vibration Multi-Run Script 9
Perform Vibration Analysis 25
modifying 28
normal modes 28
Viewing results 129
W
WriteMatrix class 124
WriteMatrixXML class 124
WriteXMLFooter class 124
WriteXMLHeader(matFile) 125
230 Adams/Vibration