visualdynamics.core.correlate¶
correlate
¶
Test-analysis correlation: FEM shapes sampled at the test's DOFs.
A finite element model has a dense mesh with three or more DOFs per
node; the test measured a smaller set of directions at its own nodes.
Comparing the two starts by projecting the model onto the test: each
test node is matched to its nearest FEM node, the FEM displacement
there (already in global coordinates, from deform) is taken, and its
dot product with the test DOF's global direction is the projected
value. That handles uniaxial measurements and local coordinate systems
in one step. The result is an ordinary ShapeSet at the test's DOFs, so
cross-MAC, overlay animation and reports work on it unchanged.
Both geometries must already be in the same frame; this module does not align them.
References
The projection here is ordinary; these are where the comparison it feeds is set out.
- Allemang, R. J., & Brown, D. L. (1982). "A Correlation Coefficient for Modal Vector Analysis." Proceedings of the 1st International Modal Analysis Conference (IMAC). The Modal Assurance Criterion.
- Allemang, R. J. (2003). "The Modal Assurance Criterion - Twenty Years of Use and Abuse." Sound and Vibration. What the number does and does not say, including why a high MAC between a model and a test is not by itself agreement.
- Ewins, D. J. (2000). Modal Testing: Theory, Practice and Application, 2nd ed. Research Studies Press. Comparing a model with a test, and reducing one to the other's degrees of freedom.
Functions:
| Name | Description |
|---|---|
project_shapes |
|
Classes¶
Functions:¶
project_shapes
¶
project_shapes(fem_shapes: ShapeSet, fem_geometry: Geometry, test_shapes: ShapeSet, test_geometry: Geometry, tolerance: float = 0.02) -> tuple[ShapeSet, dict[str, Any]]
fem_shapes reduced to the DOFs of test_shapes.
tolerance is a fraction of the test geometry's extent (the
largest distance of a test node from the nodes' mean position): a
test node whose nearest FEM node is further away is not matched,
and its DOFs are dropped from the result rather than estimated.
When the FEM geometry has units defined and its element groups give
plate thicknesses, half the thickest plate is added to that limit,
because sensors are on surfaces and plate nodes are on
mid-surfaces.
Returns (shape_set, report): the projected ShapeSet and a dict with 'matched' and 'total' test node counts, the 'worst' matched distance and the 'limit' (both in meters when the units are defined), and 'dropped', the test DOFs that could not be projected (those that are not translations on the test geometry, and those at unmatched nodes).
Raises ValueError when only one geometry has units defined, when either has no nodes, when none of the test DOFs are translations on the test geometry, or when no test node is matched.
Source code in src/visualdynamics/core/correlate.py
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 | |