Clamp Data
Clamp Data
Restricting the displacements of nodal coordinates to prevent "shooting nodes" causing a problem
Also "clamping" the magnitude of data values generally to prevent rogue values obscuring valid data.
Clamp nodal coordinates
Generally displacements in a model are not large compared to the overall
model dimensions, however it is sometimes the case that elements are deleted
and their associated nodes become unrestrained. Isolated nodes have only
minimal mass, so if any force continues to be applied to them they can
rapidly acquire enormous displacements, a process which is generally referred
to as the "shooting nodes" problem.
This can cause problems during post-processing since the auto-scaling process may consider these nodes if there is still something "structural" attached to them. Alternatively if the scale is reset to show the wanted parts of the model they can cause a freeze or even a crash in the graphics card as it tries to render items which are in a different galaxy at the current scale. (This is not an exaggeration: 1 light-year is approximately 9.5e15 meters. A single precision floating point value has a maximum value of ~1e38, so even if a model uses mm units a node with this displacement value is around 1e20 light years away. There is some disagreement about the size of the universe, but our nearest galaxy, Andromeda, is "only" ~2.5e6 light-years away.)
In order to try to prevent this problem D3PLOT 11 onwards now clamps nodal coordinate values to a Bounding Box Factor (a multiple) of the size of the bounding box round the model's undeformed geometry, with 1000x being the default value. Nodal coordinates outside this range are reset to the model's centre centre coordinate. A multiple has been chosen in preference to an absolute value since it relates the clamping value to the size, and hence units, of the model. Any multiple value >= 1 may be used.
This option is turned on by default, however both on/off switch and bounding box factor may be controlled by the following preferences:
| d3plot*clamp_nodes: | TRUE or FALSE |
| d3plot*clamp_node_factor: | Integer >= 1 |
Reread all coordinates
The clamping process only takes place on nodal coordinates when they are read from disk into memory, meaning that any coordinates currently in memory will not be affected by a change to the bounding box factor. If you want to apply a revised factor to the current image then use to force D3PLOT to delete and reread all nodal coordinates afresh. This is carried out as follows:
- All existing nodal coordinates, for all models , are deleted from memory
- Coordinates are reread "on demand" as and when they are required - generally to render new images.
Clamp rogue values
A separate, albeit related, problem is that analyses that have gone wrong or "blown up" in some way can generate very large data values which can obscure wanted, typically much smaller, values by extending automatic contour bands to ridiculously large max/min values. D3PLOT V11 onwards can now detect and "clamp" these values to limit the effects of this problem. The process works as follows:
- Whenever floating point data is read from disk each value's magnitude is compared against the specified limiting magnitude.
- If it exceeds this value it is "clamped" either to that magnitude times its sign (i.e. -1e20 would be clamped to -1e18 in the default case), or to zero if has been selected.
This setting is not turned on by default, otherwise it might obscure problems in a model - especially if is in force. The default magnitude of 1e18 has been chosen because of the possibility that some data values might be squared during processing, for example to calculate a vector length, and 1e18 squared is 1e36 which gives a bit of protection against floating overflow given the single precision floating point limit of ~1e38.
This option can be controlled by the following preferences:
| d3plot*clamp_data: | TRUE or FALSE |
| d3plot*clamp_max_value: | Floating point value > 0.0 |
| d3plot:clamp_to_zero: | TRUE or FALSE |
Reread all data
As with coordinates above data clamping is only applied when data are read from disk into memory, so to apply clamping retrospectively to values already in memory use which works as follows:
- All existing data (including nodal coordinates), for all models , are deleted from memory
- Data are reread "on demand" as and when they are required