Method “calcRandomResponse” is used to calculate a PSD and/or integrate a PSD and/or a transfer function. The theoretical background extracted from [Sof10] that is necessary to understand what the method does is summarized here. The reader is referred to [Sof10] for more information.
The purpose of a random calculation is to assess structural response as power spectral density assuming that structure behavior to a given type of excitation is known by its transfer function, and that the excitation is specified as an input power spectral density (PSD).
More precisely, a unique excitation is assumed to be present, and the response at output location is calculated as:
|
|
In previous expression:
is the structure transfer function at location for an excitation . This transfer function depends on the frequency and is supposed to be obtained by computing a frequency response analysis with Nastran with a unit excitation.
is the input PSD depending on the kind of excitation and unit system used in the finite element analysis, its units are , , ... The input PSD is scalar.
is the output PSD at location . Depending on the kind of quantity that is calculated, the output PSD units may differ: for displacements, for accelerations, for stresses, for forces... FeResPost considers that the output PSD can be scalar, vectorial or tensorial depending on the kind of quantity that is calculated.
Note that the input and output PSD have always positive real values for all components.
Once a PSD is calculated, an equivalent RMS output can be calculated as follows:
|
|
In practice, FeResPost calculates the integral on a finite range of frequencies:
|
|
Practically, the transfer function is known by its values at different frequencies , . Then the integrations above are replaced by integrations on smaller frequency ranges:
|
|
Assuming a log-log dependence of between and , one has
|
|
in which
|
|
The integral in range is then calculated by:
If or :
|
|
If and :
|
|
If it is assumed that function varies linearly between and , then the integral in range becomes simply:
|
|
Note that in Nastran, the assumption of log-log or linear interpolation on each frequency interval is managed by the option RMSINT. In FeResPost , the “integTyp” parameter of method “calcRandomResponse” allows choosing the type of integration. (See below.)
“calcRandomResponse” method in “Post” Module can be used to calculate output PSD from a transfer function, to integrate the PSD, and/or calculate the RMS value. The method is called as follows:
... arr=Post.calcRandomResponse(bOutputPsd,bOutputIntPsd, inputResults,freqs,psdIn,integType,addRes) psdOut=arr[0] intPsdOut=arr[1] rms=arr[2] ...
The method has 6 or 7 arguments:
“bOutputPsd” is a logical parameter that specifies whether the output PSD must be returned by the method.
“bOutputIntPsd” is a logical parameter that specifies whether the integration of the output PSD at each frequency must be returned by the method. (If one does not require the value at each frequency, only the last value is returned.)
“inputResults” is an Array of Result objects containing the transfer function (complex Result) or only its magnitude (Real result).
“freqs” is an Array of real values corresponding to the frequencies at which the transfer function and input PSD have been discretized. The size of this array must correspond to the size of the “inputResults” Array.
“psdIn” is an Array of real values corresponding to the input PSD level (excitation) at discretization frequencies. The number of elements in this Array must match the number of elements in “inputResults” and “freqs” Arrays.
“integType” is a String that specifies the interpolation and integration rule on frequency intervals. Possible values are “LogLog” or “LinLin”. If another value is provided, “calcRandomResponse” raises an exception.
“addRes” is a Real Result that must be considered as the initial value from which the integration of output PSD starts. (This parameter can be very useful when integration is “sliced” on sub-ranges of the entire frequency range.) If no starting value is required, the parameter can be omitted. A “nil” value is also treated as no starting value specified.
Note that the different Result arguments must have the same size and keys. The method returns an Array of 3 elements:
The first element corresponds to the output PSD. It is an Array of Result objects that is filled if “bOutputPsd” argument is true. Otherwise, “nil” is returned.
The second element corresponding to the integrated output PSD:
If “bOutputIntPsd” is true, then this element is an Array of Result object corresponding to the integration at each frequency.
If “bOutputIntPsd” is false, then this element is a Result object corresponding to the last value of the integrated output PSD.
Note that the optional “addRes” parameter defines the start for the integration.
The third output corresponds to the RMS value of the output PSD. This is a Result object. In practice, the components of the output RMS are calculated as the square root of the corresponding component of the integrated output PSD. (Or the last value of the integrated output PSD, if “bOutputIntPsd” is set to “true”.)