Supports the CoFFE analysis presented in ARP4761A/ED-135.
Project description
CoFFE Analyzer
This package supports the CoFFE analysis presented in ARP4761A/ED-135.
CoFFE stands for Combinational Functional Failures Effects. One method of performing this analysis is through a table. Each row of that table represents a combination of failures leading to a certain result.
This package analyze that table and returns a simplified boolean expression for each relevant CoFFE result (Failure Condition), that helps to develop its related preliminary Fault Tree Analysis (FTA).
Installation
For installing CoFFE Analyzer, just run this command in your shell:
pip install coffe-analyzer
Usage example
Section Q.4.4.1 of ARP4761A shows an example of a CoFFE analysis that assess the loss of ability to decelerate with crew aware. Combination of failures from four different systems are identified (Wheel Brake, Ground Spoiler, Thrust Reverser, and Flap), and three failure states are contemplated for each of them (Total Loss - F, Partal Loss - D, and Nominal Operation - O). The results after combining those failure states are: High-speed overrun, Low-speed overrun, and No overrun. Only High-speed overrun is considered relevant as Failure Condition.
Last paragraph of Section Q.4.4.1 states the solution:
Through the CoFFE analysis it can be concluded that “the total loss of wheel brake function in addition to the partial (or total) loss of any ground spoiler or thrust reverser or flap functions” might result in high-speed overruns.
CSV as source of data
Considering that Table Q.4.6 is stored in a csv file, the following code is executed:
>>> from coffeanalyzer import CoffeInstance
>>> path_csv = 'path/to/csv/file.csv'
>>> # The CSV wil contain one column per each analyzed system indicating the failed states.
>>> # The last column is reserved for the result of the combinated failed states:
>>> # F;F;F;F;High-speed overrun
>>> # F;O;O;O;Low-speed overrun
>>> # ...
>>> coffe = CoffeInstance(
... ignored_states=['O'],
... ignored_results=['No overrun', 'Low-speed overrun'],
... custom_headers=['WBrake', 'GrndSpoiler', 'ThrustRev', 'Flap']
... )
>>> coffe_results = coffe.get_simplified_expression_from_csv(path_csv)
>>> print(coffe_results)
WBrake_F AND (Flap_D OR Flap_F OR GrndSpoiler_D OR GrndSpoiler_F OR ThrustRev_D OR ThrustRev_F)
[!IMPORTANT] The resulting boolean expression does not pretend to substitute the safety engineer to perform the FTAs.
E.g., in this example the boolean expression can be further developed since an OR gate between a total loss and a partial loss is equal to partial loss, so the final expression to use in the corresponding FTA is:
WBrake_F AND (Flap_D OR GrndSpoiler_D OR ThrustRev_D)
Release History
- 1.0.0
- First release
Roadmap
- Capability to obtain the boolean expression from a csv file.
- Compatibility with python4capella.
Contributing
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork it (https://github.com/samuelglorente/coffe_analyzer/fork)
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -am 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Create a new Pull Request
License
Distributed under the GPL-3.0 license. See LICENSE
for more information.
Contact
Samuel García Lorente
Acknowledgments
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for coffe_analyzer-1.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b15aced9d383cdfe859ab3c45bed387c967b3982a3721e5841d8abbef1c40c9b |
|
MD5 | 4a352b1c900e997f0bf0f1560dcbaf52 |
|
BLAKE2b-256 | 3ec34850eda9f3df17a2dea6402a2266eed15539fefd8ad6817f7c7a4059e345 |