Core Concepts¶
This page introduces the main parameter models, result objects, and workflow
conventions used across fdscore.
Parameter Models¶
The public API is built around a small set of frozen dataclasses that define fatigue, oscillator, PSD, and inversion settings.
SNParams¶
SNParams defines the S-N fatigue curve used by Miner damage accumulation.
from fdscore import SNParams
sn = SNParams.normalized(slope_k=6.0)
sn_physical = SNParams(slope_k=6.0, ref_stress=120.0, ref_cycles=1e6)
Key ideas:
slope_kcontrols the fatigue exponent.ref_stressandref_cyclesdefine the reference point of the S-N curve.amplitude_from_rangecontrols whether rainflow ranges are interpreted as2 * amplitudeor as amplitude directly.
SDOFParams¶
SDOFParams defines the oscillator bank used by FDS, ERS, SRS, and PVSS
workflows.
from fdscore import SDOFParams
sdof = SDOFParams(q=10.0, metric="pv", fmin=10.0, fmax=200.0, df=10.0)
The main fields are:
q: quality factor, with damping ratiozeta = 1 / (2Q).metric:"pv","acc","vel", or"disp".frequency definition: either explicit
for linearfmin,fmax,df.
PSDParams¶
PSDParams configures Welch PSD estimation and related spectral preprocessing
choices used by workflows such as compute_psd_welch(...) and
compute_fds_spectral_time(...).
IterativeInversionParams¶
IterativeInversionParams controls the multiplicative update logic used by
the iterative inversion engines. It groups convergence, smoothing, prior, and
regularization settings into one explicit object instead of scattering them
across many keyword arguments.
SineDwellSegment¶
SineDwellSegment defines one harmonic dwell used by deterministic mission
profiles and dwell-discretized sine sweeps.
Result Objects¶
The library returns frozen dataclasses rather than ad-hoc dictionaries. The main public result types are:
Object |
Role |
|---|---|
|
Miner damage spectrum over oscillator frequency |
|
Extreme response spectrum for the selected metric |
|
One-sided acceleration PSD plus diagnostics |
|
Scalar PSD-derived metrics such as RMS and peak estimates |
|
Explicit negative/positive sided shock spectrum pair |
|
Detected shock windows and detector metadata |
|
Event-by-event stacked spectra |
|
Equivalent half-sine pulse fit |
|
Reusable FFT-domain transfer plan for repeated FDS calls |
Compatibility Metadata¶
Most results expose a structured compatibility signature in meta["compat"].
This signature is used to validate safe composition and inversion.
Examples:
sum_fds(...)requires compatible FDS semantics and the same oscillator grid.invert_fds_closed_form(...)requires compatible fatigue semantics but does not require the candidate PSD grid to match the FDS grid.shock envelope helpers require compatible shock-spectrum semantics.
See compatibility.md for the detailed rules.
Normalized and Physical Workflows¶
fdscore supports two equally valid fatigue parameterizations.
Normalized Workflow¶
Use a normalized S-N definition when the main interest is FDS shape, comparison, and equivalent PSD inversion.
sn = SNParams.normalized(slope_k=4.0)
In this case, p_scale=1.0 is the natural default.
Physical Workflow¶
Use a physical S-N definition when the absolute Miner damage level matters.
sn = SNParams(slope_k=6.0, ref_stress=120.0, ref_cycles=1e6)
p_scale_physical = 300.0
For fixed slope_k, the combination of ref_stress, ref_cycles, and
p_scale acts as a global damage scaling factor. It changes the magnitude of
the FDS but not its relative shape.
Reusable Transfer Plans¶
FDSTimePlan exists for repeated time-domain FDS evaluations on signals that
share the same sampling setup and oscillator definition.
from fdscore import prepare_fds_time_plan
plan = prepare_fds_time_plan(fs=fs, n_samples=len(x), sdof=sdof)
The plan stores the full FFT-domain transfer matrix H, which improves reuse
performance at the cost of memory. This is usually worthwhile when evaluating
multiple channels or repeated realizations over the same grid.
Spectrum Families in fdscore¶
The library uses several related but distinct spectrum concepts:
FDS: accumulated fatigue damage per oscillator.ERS: extreme response spectrum for a selected response metric.SRS: shock response spectrum, implemented through a dedicated recursive shock backend and restricted tosdof.metric="acc".PVSS: pseudo-velocity shock spectrum, also implemented through the shock backend and restricted tosdof.metric="pv".PSD: one-sided acceleration power spectral density.
Those objects are intentionally separate because they serve different physical purposes and obey different composition rules.