__________ __ __ ^
\______ \ ____ ____ | | __ _____/ |_ / \
| _// _ \_/ ___\| |/ // __ \ __\ | |
| | ( <_> ) \___| <\ ___/| | /| |\
|____|_ /\____/ \___ >__|_ \\___ >__| /_| |_\
\/ \/ \/ \/ vvv
_________ __ ***
/ _____/ ____ |__| ____ ____ ____ ____ *
\_____ \_/ ___\| |/ __ \ / \ / ___\/ __ \ .
/ \ \_ | | ___/| | \ \__| __/
/_______ /\___/ |__|\____ |___| /\___/ \____
This repository contains
- A modern mini-application for simulating solid rocket motors using an object-oriented, functional programming style in Fortran 2018.
- A legacy motor simulator demonstrating the solution of the same governing equations using a procedural programming style in Fortran 77/90.
- A refurbished motor simulator demonstrating one modernization path for making the legacy solver object-oriented but without the radical redesign that affords the above purely functional programming style.
The simulator includes a capability for launching gnuplot to compare results of the three solvers.
This code was developed with the following compiler and parallel runtime library:
- GNU Compiler Collection Fortran compiler (v. 10.2.0).
- OpenCoarrays parallel runtime library (v. 2.9.0).
- [CMake] for building and testing (v. 3.17).
- gnuplot for graphic results (v. 5.4).
Earlier versions might work also.
The current version of rocket-science does not yet explicitly rely upon OpenCoarrays, but building with OpenCoarrays would facilitate parallelization for parametric studies.
The following are the systems on which this rocket-science
is expected
to build:
- Linux (Sourcery Institute Fortran 2018 Development Enviroment),
- macOS (macOS 10.15.6 Catalina), and
- Windows Subsystem for Linux (Windows 10)
Earlier versions of each might work as well.
git clone https://github.com/sourceryinstitute/rocket-science
mkdir -p rocket-science/build
cd rocket-science/build
cmake ..
make
ctest
which puts graphs of the results in the app
subdirectory of the build tree.
An example thrust history plot is below. If the run completed successfully,
the modern, legacy and refurbished curves will be indistinguishable.