FEDEM Solver
R8.0
Source code of the dynamics solver
|
Module with subroutines for frequency domain analysis. More...
Data Types | |
type | dloadmotion |
Data type for frequency-domain load/motions. More... | |
Functions/Subroutines | |
subroutine, public | solvefreqdomain (ierr) |
Interface to the frequency-domain solver module in Fedem. More... | |
subroutine, public | deallocatefreq () |
Deallocates the dynamic structures of the frequency domain analysis. More... | |
subroutine | read_input (mech) |
Reads input specifications for the frequency domain analysis. More... | |
subroutine | freq_eigenvalues (ndim, IOC, IOF, ierr) |
Calculates the eigenvalues and eigenvectors (optional). More... | |
subroutine | freq_sweep (ndim, ierr) |
Runs a sweep analysis for detecting the eigenfrequencies (optional). More... | |
subroutine | freq_input (forces, npt, inc, start, IOC, ierr) |
Load and motion definition for the frequency domain analysis. More... | |
subroutine | freqincandupdate (sam, sys, mech, dis, vel, acc, ierr) |
Updates mechanism based on displacement, velocity and acceleration. More... | |
subroutine | freq_segment (data, sUd, sUv, sUa, mDmp, del, npt, sdim, ierr) |
Handles the data segments including modal or direct solution. More... | |
subroutine | freq_seg_analysis (sam, sys, mech, t, IOC, IOF, ierr) |
Main driver for the segmented frequency response analysis. More... | |
subroutine | complexeqsolv (n, A, B, ierr) |
Solving a complex system of linear equations. More... | |
subroutine | fft_complex_1d (n, data, del, transform, viewing, ierr) |
Fourier transformation for a single periodic sequence within a complex array. More... | |
subroutine | createpyplot (abscissa, ordinate, atitle, alabel, afilename, axlabel, savefigure, istat) |
Creates output file for curve plotting in python. More... | |
subroutine | createpyplotcurves (abscissa, ordinate, atitle, alabel, afilename, axlabel, type, savefigure) |
Creates output file for curve plotting in python. More... | |
Variables | |
type(dloadmotion), dimension(:), pointer, save | plm => null() |
All frequency-domain loads and motions. More... | |
integer, save | nrmodes |
number of modes used in the calculation More... | |
integer, save | windowsize |
describes the window size in samples More... | |
integer, save | sweep_dof |
sweep analysis (sweep location for acting force) More... | |
real(dp), dimension(2), save | sweep_range |
sweep range (start and end frequency) More... | |
real(dp), save | fs |
sampling frequency More... | |
integer, dimension(20), save | output_triad_dof |
postprocessing, contains triad id and local dof number More... | |
integer, dimension(10), save | out_dof |
internal equation number (based on output_triad_dof) More... | |
type(pyplot), pointer, save | plt => null() |
python plot handler More... | |
integer, save | ccw = 0 |
total number of windows More... | |
integer, save | seg_start = 0 |
segstart (total position) More... | |
Module with subroutines for frequency domain analysis.
subroutine freqresponsemodule::complexeqsolv | ( | integer, intent(in) | n, |
complex(dp), dimension(:,:), intent(inout) | A, | ||
complex(dp), dimension(:), intent(inout) | B, | ||
integer, intent(out) | ierr | ||
) |
Solving a complex system of linear equations.
[in] | n | matrix dimension |
[in,out] | A | contains complex matrix A |
[in,out] | B | contains rhs and the solution vector |
[out] | ierr | error flag |
Number of right hand sides is set to 1.
subroutine freqresponsemodule::createpyplot | ( | real(dp), dimension(:), intent(in) | abscissa, |
real(dp), dimension(:), intent(in) | ordinate, | ||
character(len=*), intent(in) | atitle, | ||
character(len=*), intent(in) | alabel, | ||
character(len=*), intent(in) | afilename, | ||
character(len=*), intent(in) | axlabel, | ||
logical, intent(in), optional | savefigure, | ||
integer, intent(out) | istat | ||
) |
Creates output file for curve plotting in python.
[in] | abscissa | abscissa values |
[in] | ordinate | ordinate values |
[in] | atitle | graph plot title |
[in] | alabel | describes the plot |
[in] | afilename | filename for writing the plot values |
[in] | axlabel | describes the x axis |
[in] | savefigure | flag for saving the plot as *.png |
[out] | istat | status flag |
Optionally also creates *.png graphics.
|
private |
Creates output file for curve plotting in python.
[in] | abscissa | abscissa values |
[in] | ordinate | ordinate values |
[in] | atitle | graph plot title |
[in] | alabel | describes the plot |
[in] | afilename | filename for writing the plot values |
[in] | axlabel | describes the x axis |
[in] | type | real(1), imaginary(2) and absolute plot(3) |
[in] | savefigure | flag for saving the plot as *.png |
Optionally also creates *.png graphics.
subroutine, public freqresponsemodule::deallocatefreq |
Deallocates the dynamic structures of the frequency domain analysis.
subroutine freqresponsemodule::fft_complex_1d | ( | integer, intent(in) | n, |
complex(dp), dimension(:), intent(inout) | data, | ||
real(dp), intent(in) | del, | ||
character(len=*), intent(in) | transform, | ||
logical, intent(in), optional | viewing, | ||
integer, intent(out) | ierr | ||
) |
Fourier transformation for a single periodic sequence within a complex array.
[in] | n | number of points |
[in,out] | data | input data (complex) |
[in] | del | data spacing |
[in] | transform | forward or backward fourier transformation |
[in] | viewing | optional parameter |
[out] | ierr | error flag |
subroutine freqresponsemodule::freq_eigenvalues | ( | integer, intent(in) | ndim, |
integer, intent(in) | IOC, | ||
integer, intent(in) | IOF, | ||
integer, intent(out) | ierr | ||
) |
Calculates the eigenvalues and eigenvectors (optional).
[in] | ndim | Dimension of the global equation system |
[in] | IOC | File unit number for console output |
[in] | IOF | File unit number for file output |
[out] | ierr | Error flag |
|
private |
Load and motion definition for the frequency domain analysis.
[in] | forces | All force objects in the model |
[in,out] | npt | Number of sample points |
[in,out] | inc | Time increment [s] |
[in] | start | Start time for window |
[in] | IOC | File unit number for console output |
[out] | ierr | Error flag |
|
private |
Main driver for the segmented frequency response analysis.
[in] | sam | Data for managing system matrix assembly |
[in,out] | sys | System level model data |
[in,out] | mech | Mechanism components of the model |
[in] | t | time interval |
[in] | IOC | File unit number for console output |
[in] | IOF | File unit number for file output |
[out] | ierr | Error flag |
Data segmenting and windowing.
subroutine freqresponsemodule::freq_segment | ( | complex(dp), dimension(:,:), intent(inout) | data, |
complex(dp), dimension(:,:), intent(inout) | sUd, | ||
complex(dp), dimension(:,:), intent(inout) | sUv, | ||
complex(dp), dimension(:,:), intent(inout) | sUa, | ||
type(functiontype), intent(in), pointer | mDmp, | ||
real(dp), intent(in) | del, | ||
integer, intent(in) | npt, | ||
integer, intent(in) | sdim, | ||
integer, intent(out) | ierr | ||
) |
Handles the data segments including modal or direct solution.
[in,out] | data | Segment data (on input; loads and constraints) |
[in,out] | sUd | Segment displacement data |
[in,out] | sUv | Segment velocity data |
[in,out] | sUa | Segment acceleration data |
[in] | mDmp | Frequency-dependent modal damping function |
[in] | del | Step size for time series |
[in] | npt | Number of sampling points |
[in] | sdim | System dimension |
[out] | ierr | Error indicator |
subroutine freqresponsemodule::freq_sweep | ( | integer, intent(in) | ndim, |
integer, intent(out) | ierr | ||
) |
Runs a sweep analysis for detecting the eigenfrequencies (optional).
[in] | ndim | Dimension of the global equation system |
[out] | ierr | Error flag |
subroutine freqresponsemodule::freqincandupdate | ( | type(samtype), intent(in) | sam, |
type(systemtype), intent(inout) | sys, | ||
type(mechanismtype), intent(inout) | mech, | ||
real(dp), dimension(:), intent(in) | dis, | ||
real(dp), dimension(:), intent(in) | vel, | ||
real(dp), dimension(:), intent(in) | acc, | ||
integer, intent(out) | ierr | ||
) |
Updates mechanism based on displacement, velocity and acceleration.
[in] | sam | Data for managing system matrix assembly |
[in,out] | sys | System level model data |
[in,out] | mech | Mechanism components of the model |
[in] | dis | Displacement increment |
[in] | vel | Velocity increment |
[in] | acc | Acceleration increment |
[out] | ierr | Error flag |
All position variables are updated with respect to the previous configuration to not intervene with the time domain response. The current configuration will then be restored back to the previous one after the results are saved.
|
private |
Reads input specifications for the frequency domain analysis.
[in] | mech | Mechanism components of the model |
subroutine, public freqresponsemodule::solvefreqdomain | ( | integer, intent(out) | ierr | ) |
Interface to the frequency-domain solver module in Fedem.
[out] | ierr | Error flag |
|
private |
total number of windows
|
private |
sampling frequency
|
private |
number of modes used in the calculation
|
private |
internal equation number (based on output_triad_dof)
|
private |
postprocessing, contains triad id and local dof number
|
private |
All frequency-domain loads and motions.
|
private |
python plot handler
|
private |
segstart (total position)
|
private |
sweep analysis (sweep location for acting force)
|
private |
sweep range (start and end frequency)
|
private |
describes the window size in samples