Logo
  • Overview
    • Demo Portfolio
    • 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
      • Overview {.smaller}
      • 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: {.smaller}
      • 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 {.smaller}
      • Analysis Workflow/Structure
      • Defining a Model {.smaller}
      • Defining a Model
      • Concept: Static Propagation
      • Concept: Propagation over Time {.smaller}
      • Python Concept: Classes and Object-Oriented Programming {.smaller}
      • Why classes and objects? {.smaller}
      • Python dataclasses (and similar) {.smaller}
      • Containers - The building blocks of simulations {.smaller}
      • Class aggregation in fmdtools BaseObject {.smaller}
      • Main classes in fmdtools {.smaller}
      • Flow Code Template
      • Function Code Template
      • Function Architecture Code Template
      • Demo Model Activity: {.smaller}
      • Why do we structure models this way? {.smaller}
      • More Resources for Model Definition {.smaller}
      • Notebook Activity: {.smaller}
      • Simulation Concepts: Types of Simulations
      • Simulation Concepts: Sampling Approaches {.smaller}
      • Simulation Concepts: Things to Consider {.smaller}
      • Activity: Simulate the Model {.smaller}
      • Analysis Modules - see docs for fmdtools.analyze
      • Analysis Activity {.smaller}
      • Starting your own repo/project {.smaller}
      • Conclusions/Summary {.smaller}
      • Further Reading/Links {.smaller}
    • 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
      • Use model constructs to simplify your code
      • 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
      • Structuring your Project Repository
      • Style advice
      • See also
  • Examples
    • Airport Taxiway
      • Overview: Taxiway Model
        • Motivation
        • Model Structure {.smaller}
        • Environment
        • Hazard Simulation - Incorrect Requests {.smaller}
        • Analysis of Distributed Situation Awareness {.smaller}
        • Conclusions
      • Paper[jcise]: Modeling Distributed Situation Awareness
        • Model Simulation
        • Fault Simulation and Analysis
      • Package Structure
    • Airspace Resilience Modeling Library
      • Overview: Wildfire Response Model
        • Why - Understanding 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 {.smaller}
        • Conclusions for fmdtools {.smaller}
      • Demo: Wildfire Response Simulation and Optimization
        • Model Overview
      • Paper[aiaa]: Determining Optimal Asset Locations
        • Optimization
        • Verification
      • Overview: Drone Contingency Management Model
        • 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
      • Demo: Contingency Management Drone Model
        • Environment
        • Simulation
        • Fault Scenarios
        • Statistical Simulation
        • Different Mission
      • Demo: Drone Proximity to Threat Evaluation
      • Package Structure
    • Cooling Tank
      • Demo: Cooling Tank Model
        • Tank Architecture(s)
        • Tank Analysis
      • Paper[jmd]: Optimization Architecture Comparison over Cooling Tank Problem
        • Simulation
      • Package Structure
        • Notebooks
    • Electric Power System
      • EPS Example Notebook
      • Package Structure:
    • Human Hazard Mitigation
      • Package Structure:
    • Multirotor Drone
      • Overview: Multirotor Drone Model
        • Motivation
        • Model Setup
        • Study: Original fmdtools Paper
        • Study: Optimization Architectures
        • Extension to Urban Flight
        • Conclusions/Relevance
      • Tutorial: fmdtools basics
        • Overview
        • Multorotor Drone folder
        • Multirotor Drone Structure
        • Drone Functions
        • Drone Flows
        • Drone model file
        • Drone Architecture
        • Interacting with a FunctionArchitecture
        • Viewing the drone architecture
        • Making the graph pretty(er)
        • Simulation
        • Simulation Limitation
        • Simulation Parameter and History
        • Simulation: A more interesting case
        • Examining Simulation States
        • Using the sim.propagate module
        • Verifying nominal outputs
        • Verifying nominal trajectories
        • Simulating a fault scenario
        • Examining fault scenario results
        • Fault Graphs
        • More fault returns
        • More on single-scenario simulation
        • Simulating many scenarios
        • Visualizing many faults
        • Grouping scenarios
        • Aggregating results
        • Specifying Scenarios to Simulate
        • Defining a FaultDomain
        • Defining a FaultSample
        • Simulating a FaultSample
        • Visualizing Fault Groups
        • Tabular Comparison
        • Navigating computationally-expensive simulations
        • How to Learn More
      • fmdtools Paper Demonstration
        • Initial Network Model
        • Setting Node Positions
        • Static Model
        • Dynamic Model
        • Hierarchical Model
      • Demonstration: Urban Flight
        • Model Overview
        • Nominal Simulation
        • Resilience model
        • Systematic Fault Injection
      • Integrated Resilience Optimization Architectures
        • Design Model
        • Operational Model
        • Resilience Model
        • Combined Simulation/Optimization
      • Package Structure:
    • Navigating Rover
      • Overview: Navigating Rover Model
        • Why: Understanding (More) Autonomous Systems Resilience {.smaller}
        • Rover Model Structure {.smaller}
        • Rover Environment
        • Human Modeling
        • Human Modeling
        • Degradation Modeling {.smaller}
        • Failure Mode Exploration {.smaller}
        • Conclusions {.smaller}
      • Demo: Rover Model
        • Model Setup
        • Model simulation
      • Demo: Degradation Modelling
        • Drive Degradation
        • Human Degradation
        • Combined Degradation
      • Demo: Rover Response Optimization
        • Optimization
      • Tutorial: Model Structure Visualization
        • Basics
        • Model Setup
        • Graph Views
        • Object Graphs
        • Full Model Containment Graph
        • Run Order
        • Behavior/Fault Visualization
        • Graph Metrics and Analysis
      • Tutorial: FaultSample
        • Basics
        • Model Setup
        • Setting up a FaultSample
        • Propagating Faults
        • Parameteric Fault Samples
      • Tutorial: ParameterSample
        • Quantifying probabilities
        • Nested Scenario Sampling
      • Paper [IFAC]: Human Failure Analyses
      • Paper [IDETC]: Human Failure Representation
        • Testing behavioral simulation
        • Testing Faults
        • Examining Performance Shaping Factors
      • Paper [JMD]: Synthetic Mode Generation
        • Analysis
        • Cluster Analysis
      • Paper [AIAA]: Uncovering Hazards using Multi-Objective Optimization
        • Performance Comparison
        • Comparing Solutions over weights - Fault-Space Formulation
        • Comparing Solutions over weights - Result-Space Formulation
      • Package Structure:
      • Notices
    • State Communications
      • Package Structure:
    • Water Pump
      • Tutorial: fmdtools Basics
        • 1.) Loading the environment and model
        • 2.), 3.), and 4.) Simulate and visualize the results!
        • 5.) Saving Work
      • Demo: Fault Simulation and Analysis
        • 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
      • Tutorial: Using Parallel Computing with fmdtools
        • Model Checks
        • Using Parallelism in Simulation
        • Performance Comparison
        • Comparison: Lower Tracking Time Resolution
        • Comparison Conclusions:
        • Further Computational Cost Reduction via Profiling
      • Tutorial: Optimization using fmdtools.sim.search classes
        • Problem Setup
        • Problem interfaces
        • Optimization:
        • Multi-scenario Optimization
      • Tutorial: Stochastic Behavior
        • Model Setup
        • Simulation and Analysis
      • Package Structure
  • 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
        • Environment
    • fmdtools.sim
      • fmdtools.sim.propagate
        • BaseSimContainer
        • BaseSimulation
        • MultiEventSimulation
        • MultiSimulation
        • NestedSimulation
        • SimEvent
        • Simulation
        • close_pool()
        • exec_fault_sim()
        • exec_sim()
        • fault_sample()
        • fault_sample_from()
        • get_mdl_kwargs()
        • get_sim_call_kwargs()
        • nested_sample()
        • nominal()
        • one_fault()
        • parameter_sample()
        • sequence()
        • single_faults()
      • fmdtools.sim.scenario
        • BaseScenObj
        • BaseScenario
        • Injection
        • JointFaultScenario
        • ParameterScenario
        • Scenario
        • Sequence
        • SingleFaultScenario
        • create_scenname()
      • fmdtools.sim.sample
        • BaseSample
        • ExNestedParam
        • FaultDomain
        • FaultSample
        • JointFaultSample
        • ParameterDomain
        • ParameterHistSample
        • ParameterResultSample
        • ParameterSample
        • SampleApproach
        • combine_orthogonal()
        • combine_random()
        • pass_var()
        • same_mode()
        • sample_times_even()
        • sample_times_quad()
        • x_to_kwargs()
      • fmdtools.sim.search
        • BaseConnector
        • BaseObjCon
        • BaseProblem
        • BaseSimProblem
        • Constraint
        • ConstraintConnector
        • DisturbanceProblem
        • DynamicInterface
        • ExScenProb
        • ExampleDisturbanceProblem
        • ExampleParameterSimProblem
        • ExampleProblemArchitecture
        • ExampleSimpleProblem
        • HistoryConstraint
        • HistoryObjective
        • Objective
        • ObjectiveConnector
        • ParameterSimProblem
        • ProblemArchitecture
        • ResponseCoords
        • ResultConstraint
        • ResultObjective
        • ScenarioProblem
        • SimpleProblem
        • SingleFaultScenarioProblem
        • VariableConnector
        • obj_name()
    • fmdtools.analyze
      • fmdtools.analyze.graph
        • fmdtools.analyze.graph.label
        • fmdtools.analyze.graph.style
        • fmdtools.analyze.graph.base
        • fmdtools.analyze.graph.model
      • fmdtools.analyze.common
        • add_title_xylabs()
        • auto_filetype()
        • calc_average()
        • calc_expected()
        • calc_metric()
        • calc_metric_ci()
        • calc_percent()
        • calc_rate()
        • calc_sum()
        • calc_total()
        • clear_prev_figure()
        • consolidate_legend()
        • create_indiv_filename()
        • diff()
        • file_check()
        • get_sub_include()
        • join_key()
        • load_folder()
        • mark_times()
        • metric_preamble()
        • multiplot_helper()
        • multiplot_legend_title()
        • phase_overlay()
        • plot_err_hist()
        • plot_err_lines()
        • prep_animation_title()
        • set_empty_multiplots()
        • setup_plot()
        • suite_for_plots()
        • to_include_keys()
        • unpack_plot_values()
      • fmdtools.analyze.result
        • Result
        • check_include_error()
        • check_include_errors()
        • clean_resultdict_keys()
        • clean_to_return()
        • fromdict()
        • get_dict_attr()
        • load()
        • load_csv()
        • load_json()
      • fmdtools.analyze.history
        • History
        • inc_color()
        • init_dicthist()
        • prep_hists()
      • fmdtools.analyze.tabulate
        • BaseComparison
        • BaseTab
        • Comparison
        • FMEA
        • NestedComparison
        • NominalEnvelope
        • result_summary()
        • result_summary_fmea()
      • fmdtools.analyze.phases
        • PhaseMap
        • find_interval_overlap()
        • from_hist()
        • join_phasemaps()
        • phaseplot()
        • samplemetric()
        • samplemetrics()
  • Contributions
    • Contributors
      • NASA Contributors
      • External Contributors
      • Alumni and Interns
      • fmdtools at OSU
    • fmdtools Publication List
    • How to Contribute
      • Development Installation
      • 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
        • Why Perform Hazard Analysis? {.smaller}
        • How do you perform hazard analysis? Depends on the process or standard! {.smaller}
        • What a generic hazard assessment process looks like: {.smaller}
        • Constructing a hazard table (at its most basic) {.smaller}
        • What is FRDL (and why use it for hazard analysis)? {.smaller}
        • What does an FRDL diagram look like?
        • How do you analyze hazards with an FRDL diagram? {.smaller}
        • Example - Step 1
        • Example - Step 2
        • Example - Step 1 (again)
        • Example - Step 2 (again)
        • Some Takeaways {.smaller}
        • More Examples
        • More Helpful Information {.smaller}
    • 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.