DYNAMICS C API
C-compatible interface to the DYNAMICS library
Loading...
Searching...
No Matches
Frequency response and system identification

Functions

void c_frequency_response (int n, int nfreq, const double *mass, int ldm, const double *stiff, int ldk, double alpha, double beta, const double *freq, const c_modal_excite frc, double *modes, double *modeshapes, int ldms, double complex *rsp, int ldr, void *user_data)
 Compute a modal frequency response for a second-order system.
 
void c_dynamic_stiffness_dense (int n, double omega, const double *mass, int ldm, const double *damp, int ldc, const double *stiff, int ldk, double complex *dyn_stiff, int ldd)
 Compute dense dynamic stiffness, K - omega^2 M + i omega C.
 
void c_frf_general_damp_1 (int n, int nfreq, const double *mass, int ldm, const double *damp, int ldc, const double *stiff, int ldk, const double *freq, const c_modal_excite frc, double complex *rsp, int ldr, int *ranks, void *user_data)
 Compute a general-damping frequency response at explicit frequencies.
 
void c_frf_general_damp_2 (int n, int nfreq, double freq1, double freq2, const double *mass, int ldm, const double *damp, int ldc, const double *stiff, int ldk, const c_modal_excite frc, double complex *rsp, int ldr, int *ranks, void *user_data)
 Compute a general-damping frequency response over an evenly spaced interval.
 
double c_compute_modal_damping (double lambda, double alpha, double beta)
 Compute modal damping from Rayleigh coefficients.
 
double c_chirp (double t, double amp, double span, double f1Hz, double f2Hz)
 Evaluate a swept-frequency chirp signal.
 
void c_modal_response (int n, const double *mass, int ldm, const double *stiff, int ldk, double *freqs, double *modeshapes, int ldms)
 Compute modal frequencies and mass-normalized mode shapes.
 
void c_normalize_mode_shapes (int n, double *x, int ldx)
 Normalize mode-shape columns.
 
void c_frf_sweep (int n, int nfreq, c_harmonic_ode fcn, const double *freq, const double *iv, int solver, double complex *rsp, int ldr, const c_frequency_sweep_controls *opts, void *user_data)
 Perform a nonlinear harmonic frequency sweep.
 
void c_set_frequency_sweep_defaults (c_frequency_sweep_controls *x)
 Fill frequency-sweep controls with defaults.
 
void c_evaluate_accelerance_frf_model (int n, int norder, const double *mdl, const double *omega, double complex *h)
 Evaluate an accelerance rational FRF model.
 
void c_evaluate_receptance_frf_model (int n, int norder, const double *mdl, const double *omega, double complex *h)
 Evaluate a receptance rational FRF model.
 
void c_set_iteration_controls_defaults (c_iteration_controls *x)
 Fill nonlinear iteration controls with defaults.
 
void c_fit_frf (int n, int norder, int method, const double *freq, const double complex *rsp, const double *maxp, const double *minp, const c_iteration_controls *controls, double *mdl, c_regression_statistics *stats)
 Fit an FRF model to measured data.
 
void c_siso_frequency_response (int n, int nf, const double *x, const double *y, double fs, int winsize, c_window_function winfun, int method, double *freq, double complex *rsp, void *user_data)
 Estimate a SISO frequency response from input and output records.
 
void c_cross_product (const double x[3], const double y[3], double z[3])
 Compute the cross product of two three-vectors.
 
void c_to_skew_symmetric (const double x[3], double *y, int ldy)
 Form a skew-symmetric matrix from a three-vector.
 
double c_vector_angle (const double x[3], const double y[3])
 Compute the angle between two vectors.
 
double c_scalar_projection (const double x[3], const double y[3])
 Compute the scalar projection of one vector onto another.
 
void c_vector_projection (const double x[3], const double y[3], double z[3])
 Project one vector onto another.
 
double c_vector_magnitude (int n, const double *x)
 Compute a vector magnitude.
 
void c_vector_normalize (int n, double *x)
 Normalize a vector in place.
 
double c_dot_product (int n, const double *x, const double *y)
 Compute a dot product.
 
bool c_is_symmetric (int m, int n, const double *a, int lda)
 Test whether a matrix is symmetric to within a small relative tolerance.
 
void c_siso_model_fit_least_squares (int nsets, int nparams, int neqns, const c_ode_fit fcn, const c_dynamic_system_measurement *x, const double *ic, double *p, int integrator, int ind, const double *maxp, const double *minp, const c_iteration_controls *controls, const c_lm_solver_options *opts, int nconstraints, const double *xc, const double *yc, const c_constraint_equations constraints, int nweights, const double *weights, c_regression_statistics *stats, c_iteration_behavior *info, void *user_data)
 Fit an ODE model to dynamic-system measurements by constrained least squares.
 
void c_set_lm_solver_options_defaults (c_lm_solver_options *x)
 Fill Levenberg-Marquardt options with defaults.
 
int c_alloc_dynamic_system_measurement (int n, c_dynamic_system_measurement *x)
 Allocate one dynamic-system measurement record.
 
void c_free_dynamic_system_measurement (c_dynamic_system_measurement *x)
 Release one dynamic-system measurement record.
 
c_dynamic_system_measurement * c_alloc_dynamic_system_measurement_array (int n, const int *ptsper)
 Allocate an array of measurement records.
 
void c_free_dynamic_system_measurement_array (int n, c_dynamic_system_measurement *x)
 Release an array of measurement records.
 

Detailed Description

Function Documentation

◆ c_frequency_response()

void c_frequency_response ( int  n,
int  nfreq,
const double *  mass,
int  ldm,
const double *  stiff,
int  ldk,
double  alpha,
double  beta,
const double *  freq,
const c_modal_excite  frc,
double *  modes,
double *  modeshapes,
int  ldms,
double complex *  rsp,
int  ldr,
void *  user_data 
)

Compute a modal frequency response for a second-order system.

Parameters
nSystem order.
nfreqFrequency count.
massMass matrix.
ldmLeading dimension of mass.
stiffStiffness matrix.
ldkLeading dimension of stiff.
alphaMass-proportional damping coefficient.
betaStiffness-proportional damping coefficient.
freqFrequencies.
frcModal force callback.
modesOutput modal frequencies.
modeshapesOutput mode shapes.
ldmsLeading dimension of modeshapes.
rspOutput complex response.
ldrLeading dimension of rsp.
user_dataOpaque caller data forwarded to frc.

◆ c_dynamic_stiffness_dense()

void c_dynamic_stiffness_dense ( int  n,
double  omega,
const double *  mass,
int  ldm,
const double *  damp,
int  ldc,
const double *  stiff,
int  ldk,
double complex *  dyn_stiff,
int  ldd 
)

Compute dense dynamic stiffness, K - omega^2 M + i omega C.

Matrices use column-major storage.

Parameters
nMatrix order.
omegaExcitation frequency in radians per second.
massMass matrix.
ldmLeading dimension of mass.
dampGeneral damping matrix.
ldcLeading dimension of damp.
stiffStiffness matrix.
ldkLeading dimension of stiff.
dyn_stiffOutput complex dynamic stiffness matrix.
lddLeading dimension of dyn_stiff.

◆ c_frf_general_damp_1()

void c_frf_general_damp_1 ( int  n,
int  nfreq,
const double *  mass,
int  ldm,
const double *  damp,
int  ldc,
const double *  stiff,
int  ldk,
const double *  freq,
const c_modal_excite  frc,
double complex *  rsp,
int  ldr,
int *  ranks,
void *  user_data 
)

Compute a general-damping frequency response at explicit frequencies.

Matrices and response use column-major storage.

Parameters
nSystem order.
nfreqFrequency count.
massMass matrix.
ldmLeading dimension of mass.
dampGeneral damping matrix.
ldcLeading dimension of damp.
stiffStiffness matrix.
ldkLeading dimension of stiff.
freqFrequencies in radians per second.
frcForce callback.
rspOutput complex response matrix.
ldrLeading dimension of rsp.
ranksOutput rank of each dynamic stiffness matrix.
user_dataOpaque caller data forwarded to frc.

◆ c_frf_general_damp_2()

void c_frf_general_damp_2 ( int  n,
int  nfreq,
double  freq1,
double  freq2,
const double *  mass,
int  ldm,
const double *  damp,
int  ldc,
const double *  stiff,
int  ldk,
const c_modal_excite  frc,
double complex *  rsp,
int  ldr,
int *  ranks,
void *  user_data 
)

Compute a general-damping frequency response over an evenly spaced interval.

Matrices and response use column-major storage.

Parameters
nSystem order.
nfreqFrequency count, at least 2.
freq1Starting frequency in radians per second.
freq2Ending frequency in radians per second.
massMass matrix.
ldmLeading dimension of mass.
dampGeneral damping matrix.
ldcLeading dimension of damp.
stiffStiffness matrix.
ldkLeading dimension of stiff.
frcForce callback.
rspOutput complex response matrix.
ldrLeading dimension of rsp.
ranksOutput rank of each dynamic stiffness matrix.
user_dataOpaque caller data forwarded to frc.

◆ c_compute_modal_damping()

double c_compute_modal_damping ( double  lambda,
double  alpha,
double  beta 
)

Compute modal damping from Rayleigh coefficients.

Parameters
lambdaModal eigenvalue.
alphaMass-proportional coefficient.
betaStiffness-proportional coefficient.
Returns
Modal damping ratio.

◆ c_chirp()

double c_chirp ( double  t,
double  amp,
double  span,
double  f1Hz,
double  f2Hz 
)

Evaluate a swept-frequency chirp signal.

Parameters
tTime.
ampAmplitude.
spanSweep span.
f1HzInitial frequency in hertz.
f2HzFinal frequency in hertz.
Returns
Signal value.

◆ c_modal_response()

void c_modal_response ( int  n,
const double *  mass,
int  ldm,
const double *  stiff,
int  ldk,
double *  freqs,
double *  modeshapes,
int  ldms 
)

Compute modal frequencies and mass-normalized mode shapes.

Parameters
nSystem order.
massMass matrix.
ldmLeading dimension of mass.
stiffStiffness matrix.
ldkLeading dimension of stiff.
freqsOutput modal frequencies.
modeshapesOutput mode shapes.
ldmsLeading dimension of modeshapes.

◆ c_normalize_mode_shapes()

void c_normalize_mode_shapes ( int  n,
double *  x,
int  ldx 
)

Normalize mode-shape columns.

Parameters
nNumber of rows or modes.
xMode-shape matrix, updated in place.
ldxLeading dimension of x.

◆ c_frf_sweep()

void c_frf_sweep ( int  n,
int  nfreq,
c_harmonic_ode  fcn,
const double *  freq,
const double *  iv,
int  solver,
double complex *  rsp,
int  ldr,
const c_frequency_sweep_controls *  opts,
void *  user_data 
)

Perform a nonlinear harmonic frequency sweep.

Parameters
nState dimension.
nfreqFrequency count.
fcnHarmonic ODE callback.
freqFrequencies.
ivInitial values.
solverIntegration method.
rspOutput complex response.
ldrLeading dimension of rsp.
optsSweep controls.
user_dataOpaque caller data forwarded to fcn.

◆ c_set_frequency_sweep_defaults()

void c_set_frequency_sweep_defaults ( c_frequency_sweep_controls *  x)

Fill frequency-sweep controls with defaults.

Parameters
xControls updated in place.

◆ c_evaluate_accelerance_frf_model()

void c_evaluate_accelerance_frf_model ( int  n,
int  norder,
const double *  mdl,
const double *  omega,
double complex *  h 
)

Evaluate an accelerance rational FRF model.

Parameters
nFrequency count.
norderModel order.
mdlModel coefficients.
omegaAngular frequencies.
hOutput complex FRF values.

◆ c_evaluate_receptance_frf_model()

void c_evaluate_receptance_frf_model ( int  n,
int  norder,
const double *  mdl,
const double *  omega,
double complex *  h 
)

Evaluate a receptance rational FRF model.

Parameters
nFrequency count.
norderModel order.
mdlModel coefficients.
omegaAngular frequencies.
hOutput complex FRF values.

◆ c_set_iteration_controls_defaults()

void c_set_iteration_controls_defaults ( c_iteration_controls *  x)

Fill nonlinear iteration controls with defaults.

Parameters
xControls updated in place.

◆ c_fit_frf()

void c_fit_frf ( int  n,
int  norder,
int  method,
const double *  freq,
const double complex *  rsp,
const double *  maxp,
const double *  minp,
const c_iteration_controls *  controls,
double *  mdl,
c_regression_statistics *  stats 
)

Fit an FRF model to measured data.

Parameters
nData count.
norderModel order.
methodModel or update method.
freqFrequencies.
rspMeasured complex response.
maxpParameter upper bounds.
minpParameter lower bounds.
controlsIteration controls.
mdlOutput fitted parameters.
statsOutput regression statistics.

◆ c_siso_frequency_response()

void c_siso_frequency_response ( int  n,
int  nf,
const double *  x,
const double *  y,
double  fs,
int  winsize,
c_window_function  winfun,
int  method,
double *  freq,
double complex *  rsp,
void *  user_data 
)

Estimate a SISO frequency response from input and output records.

Parameters
nSample count.
nfFrequency-bin count.
xInput samples.
yOutput samples.
fsSampling frequency.
winsizeWindow size.
winfunWindow callback.
methodH1 or H2 estimator.
freqOutput frequencies.
rspOutput complex response.
user_dataOpaque caller data forwarded to winfun.

◆ c_cross_product()

void c_cross_product ( const double  x[3],
const double  y[3],
double  z[3] 
)

Compute the cross product of two three-vectors.

Parameters
xFirst vector.
ySecond vector.
zOutput vector.

◆ c_to_skew_symmetric()

void c_to_skew_symmetric ( const double  x[3],
double *  y,
int  ldy 
)

Form a skew-symmetric matrix from a three-vector.

Parameters
xInput vector.
yOutput matrix.
ldyLeading dimension of y.

◆ c_vector_angle()

double c_vector_angle ( const double  x[3],
const double  y[3] 
)

Compute the angle between two vectors.

Parameters
xFirst vector.
ySecond vector.
Returns
Angle in radians.

◆ c_scalar_projection()

double c_scalar_projection ( const double  x[3],
const double  y[3] 
)

Compute the scalar projection of one vector onto another.

Parameters
xVector being projected.
yReference vector.
Returns
Scalar projection.

◆ c_vector_projection()

void c_vector_projection ( const double  x[3],
const double  y[3],
double  z[3] 
)

Project one vector onto another.

Parameters
xVector being projected.
yReference vector.
zOutput projection.

◆ c_vector_magnitude()

double c_vector_magnitude ( int  n,
const double *  x 
)

Compute a vector magnitude.

Parameters
nVector length.
xVector.
Returns
Euclidean magnitude.

◆ c_vector_normalize()

void c_vector_normalize ( int  n,
double *  x 
)

Normalize a vector in place.

Parameters
nVector length.
xVector updated in place.

◆ c_dot_product()

double c_dot_product ( int  n,
const double *  x,
const double *  y 
)

Compute a dot product.

Parameters
nVector length.
xFirst vector.
ySecond vector.
Returns
Dot product.

◆ c_is_symmetric()

bool c_is_symmetric ( int  m,
int  n,
const double *  a,
int  lda 
)

Test whether a matrix is symmetric to within a small relative tolerance.

Parameters
mRow count.
nColumn count.
am-by-n matrix.
ldaLeading dimension of a.
Returns
true when a is square and symmetric; else, false.

◆ c_siso_model_fit_least_squares()

void c_siso_model_fit_least_squares ( int  nsets,
int  nparams,
int  neqns,
const c_ode_fit  fcn,
const c_dynamic_system_measurement *  x,
const double *  ic,
double *  p,
int  integrator,
int  ind,
const double *  maxp,
const double *  minp,
const c_iteration_controls *  controls,
const c_lm_solver_options *  opts,
int  nconstraints,
const double *  xc,
const double *  yc,
const c_constraint_equations  constraints,
int  nweights,
const double *  weights,
c_regression_statistics *  stats,
c_iteration_behavior *  info,
void *  user_data 
)

Fit an ODE model to dynamic-system measurements by constrained least squares.

Parameters
nsetsNumber of measurement sets.
nparamsNumber of parameters.
neqnsNumber of model equations.
fcnODE callback.
xMeasurement records.
icInitial conditions.
pParameters, updated in place.
integratorODE integration method.
indIntegration direction or index.
maxpUpper parameter bounds.
minpLower parameter bounds.
controlsIteration controls.
optsLevenberg-Marquardt options.
nconstraintsConstraint count.
xcConstraint inputs.
ycConstraint outputs.
constraintsConstraint callback.
nweightsWeight count.
weightsResidual weights.
statsOutput regression statistics.
infoOutput iteration statistics.
user_dataOpaque caller data forwarded to fcn and constraints.

◆ c_set_lm_solver_options_defaults()

void c_set_lm_solver_options_defaults ( c_lm_solver_options *  x)

Fill Levenberg-Marquardt options with defaults.

Parameters
xOptions updated in place.

◆ c_alloc_dynamic_system_measurement()

int c_alloc_dynamic_system_measurement ( int  n,
c_dynamic_system_measurement *  x 
)

Allocate one dynamic-system measurement record.

Parameters
nSample count.
xRecord initialized by the routine.
Returns
Zero on success; nonzero on allocation failure.

◆ c_free_dynamic_system_measurement()

void c_free_dynamic_system_measurement ( c_dynamic_system_measurement *  x)

Release one dynamic-system measurement record.

Parameters
xRecord to release.

◆ c_alloc_dynamic_system_measurement_array()

c_dynamic_system_measurement * c_alloc_dynamic_system_measurement_array ( int  n,
const int *  ptsper 
)

Allocate an array of measurement records.

Parameters
nNumber of records.
ptsperSamples per record.
Returns
Allocated array, or NULL on failure.

◆ c_free_dynamic_system_measurement_array()

void c_free_dynamic_system_measurement_array ( int  n,
c_dynamic_system_measurement *  x 
)

Release an array of measurement records.

Parameters
nNumber of records.
xArray to release.