CODE¶
Severity Implementation — Frequency Shift → Stiffness Loss → Classification
void tiny_damage_assess(const tiny_sysid_result_t *cur, tiny_damage_assess_t *out)
{
memset(out, 0, sizeof(*out));
if (!g_has_baseline || !cur) return;
int nm = min(cur->n_modes, g_baseline.n_modes);
float sum = 0; int nv = 0;
for (int m = 0; m < nm; m++) {
float fd = 100.0f * (cur->frequencies[m] - g_baseline.frequencies[m])
/ g_baseline.frequencies[m];
if (fabsf(fd) < 0.1f) continue;
float dk = -2.0f * fd;
if (dk < 0) dk = 0;
sum += dk; nv++;
}
float loss = (nv > 0) ? (sum / nv) : 0;
out->stiff_loss = (loss < 0) ? 0 : loss;
if (loss < 5.0f) { out->level = DMG_NONE; out->confidence = 0.3f; }
else if (loss < 20.0f) { out->level = DMG_MILD; out->confidence = 0.6f; }
else if (loss < 50.0f) { out->level = DMG_MODERATE; out->confidence = 0.8f; }
else { out->level = DMG_SEVERE; out->confidence = 0.9f; }
}