Skip to content

Add value normalization range to s3d file #16546

Description

@rjokonski

Is your feature request related to a problem? Please describe.
In our Results application for PyroSim and Pathfinder we read the s3d files in order to render smoke/fire and perform visibility calculations for occupants. In FDS 6.11.1, the soot density s3d file changed so that it includes per-frame normalized density values.

This is a great change; however, in order to determine the normalization range of soot density (i.e. the per-frame max value), we now also have to read the accompanying sz file. This causes a few issues:

  • In the past, I've noticed that the sz file can become out of sync with the s3d file, perhaps because of different FDS runs, restarts, file corruption, etc. This can lead to incorrect de-normalization. In addition, a customer may need to share results. If they omit this file, we'll have incomplete data.
  • The s3d file is binary while the sz file is text. This can create issues with lining up times between the two files because a parsed text time may end up slightly different than the binary time. We can build in a tolerance, but it's difficult to know what the tolerance should be.
  • If we try to visualize while a simulation is running, the s3d file may get ahead of the sz file (perhaps because of internal buffer sizes or just that we end up reading them at slightly different times), so we can't just assume a one-to-one correspondence between frames.

Describe the solution you'd like
In the s3d file, in addition to writing NCHARS_IN and NCHARS_OUT for each frame, also write the normalization range for the values in that frame (e.g. 0 -> max_density for soot density or TEMP_MAX_SMV -> TEMP_MIN_SMV for flame temperature).

This would also require incrementing the file version (second parameter written in the file) so parsers can tell the files apart.

[optional] If a normalization range hasn't been specified in the FDS file (e.g. HRRPUV_MAX_SMV, TEMP_MAX_SMV, etc.), automatically calculate a normalization range for each frame based on the values in the mesh. This could provide a nice boost in precision.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions