Skip to main content

Connector to allow you to easily add Simvue tracking and monitoring to FDS (Fire Dynamics Simulator) simulations.

Project description

Simvue Integrations - FDS


Simvue

Allow easy connection between Simvue and FDS (Fire Dynamics Simulator), allowing for easy tracking and monitoring of fire simulations in real time.

Website

Implementation

A customised FDSRun class has been created which automatically does the following:

  • Uploads your FDS input file as an input artifact
  • Uploads information from the FDS input file as metadata
  • Uploads other important metadata, such as the FDS and compiler versions used
  • Tracks the FDS simulation itself, alerting the user via the web UI if the simulation crashes unexpectedly
  • Tracks the log file produced by the simulation, uploading data produced as metadata and events
  • Tracks variable values output in the DEVC and HRR CSV files after each step, logging them as metrics
  • Tracks the DEVC and CTRL log, recording activations as metadata and events
  • Uploads results files as Output artifacts
  • Optionally parses 2D slice files and uploads the slice as a 3D metric, as well as summary metrics as 1D metrics

The FDSRun class also inherits from the Run() class of the Simvue Python API, allowing for further detailed control over how your simulation is tracked.

Installation

To install and use this connector, first create a virtual environment:

python -m venv venv

Then activate it:

source venv/bin/activate

And then use pip to install this module:

pip install simvue-fds

Configuration

The service URL and token can be defined as environment variables:

export SIMVUE_URL=...
export SIMVUE_TOKEN=...

or a file simvue.toml can be created containing:

[server]
url = "..."
token = "..."

The exact contents of both of the above options can be obtained directly by clicking the Create new run button on the web UI. Note that the environment variables have preference over the config file.

Usage example

from simvue_fds.connector import FDSRun

...

if __name__ == "__main__":

    ...

    # Using a context manager means that the status will be set to completed automatically,
    # and also means that if the code exits with an exception this will be reported to Simvue
    with FDSRun() as run:

        # Specify a run name, along with any other optional parameters:
        run.init(
          name = 'my-fds-simulation',                                   # Run name
          metadata = {'number_fires': 3},                               # Metadata
          tags = ['fds', 'multiple-fires'],                             # Tags
          description = 'FDS simulation of fires in a parking garage.', # Description
          folder = '/fds/parking-garage/trial_1'                        # Folder path
        )

        # Set folder details if necessary
        run.set_folder_details(
          metadata = {'simulation_type': 'parking_garage'},             # Metadata
          tags = ['fds'],                                               # Tags
          description = 'FDS simulations with fires in different areas' # Description
        )

        # Can use the base Simvue Run() methods to upload extra information, eg:
        import os
        run.save_file(os.path.abspath(__file__), "code")

        # Can add alerts specific to your simulation, eg:
        run.create_metric_threshold_alert(
          name="visibility_below_five_metres",    # Name of Alert
          metric="eye_level_visibility",          # Metric to monitor
          frequency=1,                            # Frequency to evaluate rule at (mins)
          rule="is below",                        # Rule to alert on
          threshold=5,                            # Threshold to alert on
          notification='email',                   # Notification type
          trigger_abort=True                      # Abort simulation if triggered
        )

        # Launch the FDS simulation
        run.launch(
            fds_input_file_path='path/to/my/input_file.fds', # Path to your FDS input file
            workdir_path='path/to/my/results_dir',      # Path where results should be created
            run_in_parallel=True,                       # Whether to run in parallel using MPI
            num_processors=2                            # Number of cores to use if in parallel
            slice_parse_enabled=True                    # Whether to parse and upload 2D slices
            slice_parse_quantities=["TEMPERATURE"]      # Parse 2D slices of temperature data
            )

You can also load results from previously run FDS simulations in a similar way:

from simvue_fds.connector import FDSRun

...

if __name__ == "__main__":

    ...
    # Use a context manager to automatically close the object once loading is complete
    with FDSRun() as run:

        # Specify a run name, along with any other optional parameters:
        run.init(
          name = 'my-fds-simulation',                                   # Run name
          metadata = {'number_fires': 3},                               # Metadata
          tags = ['fds', 'multiple-fires'],                             # Tags
          description = 'FDS simulation of fires in a parking garage.', # Description
          folder = '/fds/parking-garage/trial_1'                        # Folder path
        )

        # Can use the base Simvue Run() methods to upload extra information, eg:
        run.save_file(os.path.abspath(__file__), "code")

        # Load FDS simulation results into Simvue
        run.load(
            results_dir='path/to/my/results_dir',      # Path where results are located
            slice_parse_enabled=True                    # Whether to parse and upload 2D slices
            slice_parse_quantities=["TEMPERATURE"]      # Parse 2D slices of temperature data
        )

License

Released under the terms of the Apache 2 license.

Citation

To reference Simvue, please use the information outlined in this citation file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simvue_fds-2.0.8.tar.gz (30.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simvue_fds-2.0.8-py3-none-any.whl (29.6 kB view details)

Uploaded Python 3

File details

Details for the file simvue_fds-2.0.8.tar.gz.

File metadata

  • Download URL: simvue_fds-2.0.8.tar.gz
  • Upload date:
  • Size: 30.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for simvue_fds-2.0.8.tar.gz
Algorithm Hash digest
SHA256 1b5dddfc5a244a1abbcb9cb0744d407e7caa686bf2b91f2b419f0dc01024c285
MD5 479d4babba710ea03c88cd3d5ead0d1a
BLAKE2b-256 80b65fd43cf5ffd3dc9bb2ff9e1c300e8fb6a40c20d0701453c07cf368c43cb2

See more details on using hashes here.

Provenance

The following attestation bundles were made for simvue_fds-2.0.8.tar.gz:

Publisher: deploy.yaml on simvue-io/connectors-fds

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file simvue_fds-2.0.8-py3-none-any.whl.

File metadata

  • Download URL: simvue_fds-2.0.8-py3-none-any.whl
  • Upload date:
  • Size: 29.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for simvue_fds-2.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 5b40129a55b610e7953d7c7a8e91cb555220e24f14e6ed5c3f8cbd9f7418b4b2
MD5 6228c13bb8a1f3c5a89b958777cf82b4
BLAKE2b-256 348b7824911175011443aa0c98e83da90d96b343bf049e9c23385c6598194e4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for simvue_fds-2.0.8-py3-none-any.whl:

Publisher: deploy.yaml on simvue-io/connectors-fds

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page