Skip to content

everythingfunctional/rocket-science

Repository files navigation

Rocket Science

__________               __           __          ^
\______   \ ____   ____ |  | __ _____/  |_       / \
 |       _//  _ \_/ ___\|  |/ // __ \   __\      | |
 |    |   (  <_> )  \___|    <\  ___/|  |       /| |\
 |____|_  /\____/ \___  >__|_ \\___  >__|      /_| |_\
        \/            \/     \/    \/            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.

Prerequisites

Compiler

This code was developed with the following compiler and parallel runtime library:

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.

Supported operating systems

The following are the systems on which this rocket-science is expected to build:

Earlier versions of each might work as well.

Download, Build, and Graph

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.

Thrust history

About

A case study in modernizing legacy Fortran software

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published