Logo
2.3.0
  • Overview
    • About
      • Flexible Modelling Paradigm
      • Powerful Simulation Techniques
      • Efficient Analysis Process
    • Getting Started
      • Python version compatibility
      • Set up python tooling environment
      • Install fmdtools
        • Editable Development Install
        • Dependencies
      • Explore Tutorials and Resources
    • Contributions
      • Contributors
    • Citing this repository
    • License/Notices
  • Development Guide
    • Why fmdtools?
    • Introductory Tutorial
      • Intro to resilience modeling, simulation, and visualization in Python with fmdtools.
        • Author: Daniel Hulse
        • Version: 2.3.0
        • Overview
        • Prerequisites
        • Motivation: Modeling System Resilience
        • Why is Resilience Important?
        • Enabling a proactive design process - especially when we don’t have data
        • Why fmdtools? Possible Competitors:
        • Why fmdtools? Pros:
        • Why not fmdtools? Cons:
        • What is fmdtools? A Python package for design, simulation, and analysis of resilience.
        • What is fmdtools? Repo Structure
        • Activity: Download and Install fmdtools
        • Analysis Workflow/Structure
        • Defining a Model
        • Defining a Model
        • Concept: Static Propagation
        • Concept: Propagation over Time
        • Python Concept: Classes and Object-Oriented Programming
        • Why classes and objects?
        • Python dataclasses (and similar)
        • Containers - The building blocks of simulations
        • Class aggregation in fmdtools BaseObject
        • Main classes in fmdtools
        • Flow Code Template
        • Function Code Template
        • Function Architecture Code Template
        • Demo Model Activity: examples/pump/ex_pump.py
        • Why do we structure models this way?
        • More Resources for Model Definition
        • Notebook Activity:
        • Simulation Concepts: Types of Simulations
        • Simulation Concepts: Sampling Approaches
        • Simulation Concepts: Things to Consider
        • Activity: Simulate the Model
        • Analysis Modules - see docs for fmdtools.analyze
        • Analysis Activity
        • Starting your own repo/project
        • Conclusions/Summary
        • Further Reading/Links
    • Glossary
    • Model Development Best Practices
      • Pay attention to and document the fmdtools version
      • Plan your model to avoid technical debt
      • Make and FRDL Diagram First
      • Don’t copy, inherit and functionalize
      • Document your code, sometimes before your write it
      • Don’t get ahead of yourself–try to get a running simulation first
      • Preserve your prototype setup by formalizing it as a test
      • Edit your code
      • Structuring a model
      • Use model constructs to simplify your code
      • Style advice
      • See also
  • Examples
    • Pump
      • Overview
        • Models
        • Scripts and tests:
        • Notebooks
        • References
      • fmdtools Tutorial
        • 1.) Loading the environment and model
        • 2.), 3.), and 4.) Simulate and visualize the results!
        • 5.) Saving Work
      • Pump Example Notebook
        • Initial Model Checks
        • History
        • Propagating and Viewing Results for Individual Faults
        • Visualization of resilience metrics
        • Running a List of Faults
        • Running a Fault Sampling Approach
        • Save/Load
      • Using Parallel Computing in fmdtools
        • Model Checks
        • Using Parallelism in Simulation
        • Performance Comparison
        • Comparison: Lower Tracking Time Resolution
        • Comparison Conclusions:
        • Further Computational Cost Reduction via Profiling
      • Optimization using the ProblemInterface class
        • Problem Setup
        • Problem interfaces
        • Optimization:
        • Multi-scenario Optimization
      • Stochastic Modelling in fmdtools
        • Model Setup
        • Simulation and Analysis
    • Multirotor
      • Overview
        • Models
        • Scripts and tests:
        • Notebooks
        • References
      • fmdtools Paper Demonstration
        • Initial Network Model
        • Setting Node Positions
        • Static Model
        • Dynamic Model
        • Hierarchical Model
      • Urban Drone Demo
        • Model Overview
        • Nominal Simulation
        • Resilience model
      • Integrated Resilience Optimization Architectures
        • Design Model
        • Operational Model
        • Resilience Model
        • Combined Simulation/Optimization
    • Tank
      • Overview
        • Models
        • Scripts and tests:
        • Notebooks
        • References
      • Hold-up Tank Model
        • Tank Architecture(s)
        • Tank Analysis
      • Cooling Tank Model Optimization
        • Simulation
    • EPS
      • Overview
        • Models
        • Scripts and tests:
        • Notebooks
        • References
      • EPS Example Notebook
    • Action Sequence Graph
      • Overview
        • Models
        • Scripts and tests:
        • Notebooks
      • Action Sequence Graph Tutorial
        • Function-level Simulation
        • Model Simulation
        • Fault Simulation
    • Rover
      • Overview
        • Models
        • Scripts and tests:
        • Notebooks
        • References
        • Notices
      • Rover Model Explanation and Preliminaries
        • Model Setup
        • Model simulation
      • Defining and Visualizing fmdtools Model Structures
        • Basics
        • Model Setup
        • Graph Views
        • Object Graphs
        • Full Model Containment Graph
        • Run Order
        • Behavior/Fault Visualization
        • Graph Metrics and Analysis
      • Defining Fault Sampling Approaches in fmdtools
        • Basics
        • Model Setup
        • Setting up a FaultSample
        • Propagating Faults
        • Parameteric Fault Samples
      • Defining Parameter Samples in fmdtools
        • Quantifying probabilities
        • Nested Scenario Sampling
      • More Human Failure Analyses
      • Human Failure Representation
        • Testing behavioral simulation
        • Testing Faults
        • Examining Performance Shaping Factors
      • Degradation Modelling
        • Drive Degradation
        • Human Degradation
        • Combined Degradation
      • Synthetic Mode Generation
        • Analysis
        • Cluster Analysis
      • Faulty State-Space Search Method Comparison
        • Performance Comparison
        • Comparing Solutions over weights - Fault-Space Formulation
        • Comparing Solutions over weights - Result-Space Formulation
      • Rover Response Optimization
        • Optimization
    • Multiflow Demo
      • MultiFlow Demo Model
        • Models
        • Scripts and tests:
        • Notebooks
        • References
    • Taxiway
      • Overview
        • Models
        • Scripts and tests:
        • Notebooks
        • References
      • Taxiway Model Overview
        • Model Simulation
        • Fault Simulation and Analysis
    • Airspace Library
      • Overview
        • Structure
        • References
      • Wildfire Response Model Overview
        • Why - Understanding Effectiveness of Drones in Wildfire response
        • What are we trying to do?
        • Setup: Model Structure
        • Setup: Environment and Mission
        • How effective are different numbers of aircraft?
        • What if we move the location of the air base?
        • What about alternative fire scenarios?
        • Conclusions and Path(s) from here
        • Conclusions for fmdtools
      • Base Optimization Project
        • Model Overview
      • Drone Contingency Management Model Overview:
        • Why - Understanding drone safety in shared airspace
        • What are we trying to do?
        • Setup: Model Structure
        • Setup: Environment and Mission
        • Setup: Path planning and reconfiguration
        • How resilient is the drone to airspace intrusion?
        • Would the drone still be resilient to airspace intrusion in a different scenario?
        • How resilient is the drone to battery depletion?
        • How resilient is the drone to battery depletion overall?
        • How resilient is the drone to battery depletion overall?
        • Would the drone still be resilient in a different mission?
        • Analysis Conclusions
        • Potential Future Work
        • Drone Resilience Library Conclusions
      • Contingency Management Drone Model
        • Environment
        • Simulation
        • Fault Scenarios
        • Statistical Simulation
        • Different Mission
      • ProxThreat Demonstration
  • Module Reference
    • fmdtools.define
      • fmdtools.define.architecture
        • fmdtools.define.architecture.base
        • fmdtools.define.architecture.action
        • fmdtools.define.architecture.component
        • fmdtools.define.architecture.function
        • fmdtools.define.architecture.geom
      • fmdtools.define.block
        • fmdtools.define.block.base
        • fmdtools.define.block.action
        • fmdtools.define.block.component
        • fmdtools.define.block.function
      • fmdtools.define.container
        • fmdtools.define.container.base
        • fmdtools.define.container.mode
        • fmdtools.define.container.state
        • fmdtools.define.container.parameter
        • fmdtools.define.container.rand
        • fmdtools.define.container.time
      • fmdtools.define.flow
        • fmdtools.define.flow.base
        • fmdtools.define.flow.multiflow
        • fmdtools.define.flow.commsflow
      • fmdtools.define.object
        • fmdtools.define.object.base
        • fmdtools.define.object.timer
        • fmdtools.define.object.geom
        • fmdtools.define.object.coords
      • fmdtools.define.base
        • array_x()
        • eq_units()
        • filter_kwargs()
        • gen_timerange()
        • get_code_attrs()
        • get_dict_repr()
        • get_inheritance()
        • get_memory()
        • get_methods()
        • get_obj_name()
        • get_repr()
        • get_var()
        • is_bool()
        • is_iter()
        • is_known_immutable()
        • is_known_mutable()
        • is_numeric()
        • nan_to_x()
        • nest_dict()
        • remove_para()
        • round_float()
        • set_arg_as_type()
        • set_var()
        • t_key()
        • unpack_x()
      • fmdtools.define.environment
    • fmdtools.sim
      • fmdtools.sim.propagate
      • fmdtools.sim.scenario
      • fmdtools.sim.sample
      • fmdtools.sim.search
    • fmdtools.analyze
      • fmdtools.analyze.graph
        • fmdtools.analyze.graph.label
        • fmdtools.analyze.graph.style
        • fmdtools.analyze.graph.base
        • fmdtools.analyze.graph.model
      • fmdtools.analyze.common
      • fmdtools.analyze.result
      • fmdtools.analyze.history
      • fmdtools.analyze.tabulate
      • fmdtools.analyze.phases
  • Contributions
    • Contributors
      • NASA Contributors
      • External Contributors
      • Alumni and Interns
      • fmdtools at OSU
    • fmdtools Publication List
    • How to Contribute
      • Repository Structure
      • Git Structure and Setup
      • Git Development Workflow
      • Release Process
      • Roles
      • Documentation
      • Style/Formatting
      • Headers
      • Testing
  • FRDL
    • Overview
      • What can you use FRDL for?
      • Why FRDL?
      • Relationship with fmdtools
      • Intro to FRDL
        • Intro to Hazard Analysis with the Functional Reasoning Design Language (FRDL)
        • Why Perform Hazard Analysis? - The Need for Safety
        • How do you perform hazard analysis? Depends on the process or standard!
        • What a generic hazard assessment process looks like:
        • Constructing a hazard table (at its most basic)
        • What is FRDL (and why use it for hazard analysis)?
        • What does an FRDL diagram look like? (see FRDL spec)
        • How do you analyze hazards with and FRDL diagram?
        • Example - Step 1
        • Example - Step 2
        • Example - Step 1 (again)
        • Example - Step 2 (again)
        • Some Takeaways
        • More Examples
        • More Helpful Information
    • Specification
      • Primitives
        • Blocks
        • Flows
        • Relationships
        • Annotations
      • Architectures
        • Functional Architectures
        • Action Architectures
        • Component Architectures
      • Usage
        • Modelling
        • Analysis
    • Guide
      • Concepts
        • Function/Action Relationship
        • Function/Component Relationship
        • Flows as Nodes
      • Correspondence with other methods
        • Versus F/FA
        • Versus STAMP/STPA
        • Versus SysML/UML
      • Examples
        • Bread Making
        • Circuit
        • Further Examples
fmdtools
  • Search


© Copyright 2024, United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved.

Built with Sphinx using a theme provided by Read the Docs.