Logo
  • 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.1.2
      • Overview
      • Prerequisites
      • Motivation: Modeling System Resilience
      • Why is Resilience Important?
      • Enabling proactive design process
      • 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
      • Containers - The building blocks of simulations
      • Flow Code Template
      • Function Code Template
      • Model Code Template
      • Demo Model Activity: examples/pump/ex_pump.py
      • More Resources for Model Definition
      • Notebook Activity:
      • Simulation Concepts: Static/Undirected Propagation
      • Simulation Concepts: Propagation over Time
      • Simulation Concepts: Types of Simulations
      • Simulation Concepts: Sampling Approaches
      • Simulation Concepts: Things to Consider
      • Activity: Simulate the Model
      • Analysis Modules
      • Analysis Activity
      • 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
      • 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
        • Verifying the nominal state:
        • History
        • What happens under component faults?
        • What about human-induced faults?
        • Evaluating Joint Component-Human fault modes
        • Testing different reaction times
      • Cooling Tank Model Optimization
      • Simulation
        • Verifying the nominal state:
        • What happens under component faults?
        • Full set of modes
        • Defining Optimization Problem
        • Optimization
    • 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
      • Defining Fault Sampling Approaches in fmdtools
        • Basics
        • Model Setup
        • Setting up a FaultSample
        • Propagating Faults
      • 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
        • Perception Fault - AC Vision Fault
        • Communications Fault - Poor land command by ATC
  • 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()
        • gen_timerange()
        • get_code_attrs()
        • get_inheritance()
        • get_memory()
        • get_methods()
        • get_obj_name()
        • 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
        • check_end_condition()
        • check_hist_memory()
        • check_mdl_memory()
        • check_overwrite()
        • close_pool()
        • exec_nom_helper()
        • exec_nom_par()
        • exec_scen()
        • exec_scen_par()
        • fault_sample()
        • fault_sample_from()
        • gen_sampleapproach()
        • get_endclass_vars()
        • get_result()
        • list_init_faults()
        • mult_kwargs
        • nested_sample()
        • nom_helper()
        • nominal()
        • one_fault()
        • pack_mult_kwargs()
        • pack_run_kwargs()
        • pack_sim_kwargs()
        • parameter_sample()
        • process_nominal()
        • prop_one_scen()
        • run_kwargs
        • save_helper()
        • scenlist_helper()
        • sequence()
        • sim_kwargs
        • single_faults()
        • unpack_mult_kwargs()
        • unpack_res_list()
        • unpack_sim_kwargs()
      • 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_func_kwargs()
        • 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()
        • fromdict()
        • get_dict_attr()
        • load()
        • load_csv()
        • load_json()
      • fmdtools.analyze.history
        • History
        • 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
      • 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
    • 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.