What I do and when to use me
Create fmdtools models of systems where there are important interactions between system behaviors
When the
FunctionArchitectureActionArchitectureorComponentArchitectureclasses are to be used.
Instructions
Determining type of model
Be default, use a
FunctionArchitectureclassIf the model is a sequence of actions
ActionArchitectureclasses may be built out ofActionclasses insteadUse a
ComponentArchitectureclass if the user specifies
Function Architectures
Determine the type of model per Structuring a Model Best Practices. Apply this structure going forward.
See the relevant code template in Intro_to_fmdtools.md
Note that the goal of the functional architecture is to propagate behaviors between different functions using flows. If there are no interacting behaviors, there isn’t a reason to use a FunctionArchitecture
Generally, interactions will be executed in the individual function level and propagated between each other. As a result, architecture-level behavior methods are not often used.
Simple Systems Models
Some of the relevant examples would be:
examples/electric_power_systemexamples/water_pump
Systems Models
Some of the relevant examples would be:
examples/cooling_tankexamples_multirotor_droneexamples/navigating_rover
System of Systems models
Identify the relevant fmdtools classes:
Agents, the System, and Environmental Behaviors would be
FunctionclassesThe data structure representing the shared environment would inherit from the
fmdtools.define.environmentclass with internalGeometryArchitectureandCoordsclasses (if needed)Communications would be
CommsFlowclasses while Perceptions would beMultiFlowclasses and standard shared variables would beFlowclasses
Some of the relevant examples of system-of-systems models are in:
examples/airport_taxiway, for multi-aircraft operations on a shared runwayexamples/airspacelib, for multi-drone operations interacting with an environment,GeometryArchitectureandCoordsclasses, and structuring a more complex library of modelsexamples/navigating_rover, for a single system operating in a larger environmentexamples/state_communication, for usage ofCommsFlow
Action Architectures
Some of the relevant examples would be:
examples/navigating_rover/model_human.pyexamples/human_hazard_mitigation/model_main.pyexamples/cooling_tank/model_main.py
Component Architectures
Some of the relevant examples would be:
examples/multirotor_drone/model_hierarchical.py