A toolkit for constructing parallel PDE solvers using finite volume and finite difference methods.

Find us on…

GitHub Download the Source

Morfeus Framework

Morfeus Developer Documentation

Welcome to the Morefeus Framework developer documentation. This online documentation is automatically generated from inline comments and static analysis using the FORD tool. Please keep reading to learn how to best use this documentation to become more familiar with the Morfeus Framework and how to get started building an application or modifying one that uses this framework.

Organization

The FORD tool is used to document modern Fortran source code. At first, browsing the documentation can be overwhelming, but understanding the structure of the documentation and consulting the Getting started and high-level API documentation pages provides an initial orientation.

Top Navigation Bar

The chief means of navigating through the source code is by using the black navigation bar at the top of this landing page. In addition to the search box on the right side of the top navbar, the following links are available:

  • Morfeus Framework:
    This link takes the viewer back to this developer documentation homepage.
  • Developer Documentation:
    Visit the high-level developer documentation which outlines
    • How to get started,
    • Procedures and classes most relevant to creating or modifying a PDE solver, and
    • Instructions for building the Morfeus Framework library
    • A high-level overview of the CMake based build system
  • Source Files:
    This landing page enumerates the source files associated with the project, includes a graph depicting their interdependencies and links to their dedicated pages. You probably do not want to start with Source Files because much of the information is redundant with the Modules landing page.
  • Modules:
    The landing page enumerating and describing all the modules and submodules in the project. More useful than the Source Files page, as it groups submodules with their parent modules and provides some description for what each one does.
  • Procedures:
    Enumerates all procedures including generic overloaded interfaces, operators, module procedures, functions and subroutines. The table includes a link to which module the procedure is defined in, and a description of what type of procedure it is. Interface denotes an overloaded procedure or operator, or a module procedure with the interface defined in a module and the implementation defined in a submodule. This is a decent place to start if you are looking for a particular procedure, and where to find the specific implementation.
  • Abstract Interfaces:
    Enumerates abstract procedures defined, with links to the modules in which they are defined. Abstract procedures only serve as prototypes for other code to implement, or are used to specify deferred type bound procedures.
  • Derived Types:
    A list enumerating the derived types or classes defined within Morfeus. The list includes links to the type definitions, a link to any type they extend and a link to the module in which they are defined. This is one of the better places to start when trying to understand a particular object, its type bound procedures, where it is defined, and whether there are any types that extend it or types which it extends.

Developer Documentation

Navigating to the Developer Documentation page using the top navbar provides information, written in prose using Markdown, to help orient developers to the Morfeus Framework. The two most important pages to visit in this section are the Getting Started page and the High-level FV API and Usage page.

The Getting Started page contains information about:

  • Prerequisites
  • software
  • compilers
  • OSes
  • Configuring with CMake
  • Building (compiling) the library
  • Running tests

In addition, projects utilizing the Morfeus Framework are encouraged to provide instructions for obtaining, configuring, and compiling the project in question in a README file distributed with the source code. These files are typically rendered to HTML and displayed prominently on version control websites like Github, Gitlab or BitBucket to name a few.

The High-level FV API and Usage page provides:

  • an overview and references for the numerical algorithms used
  • input files and entries therein to control the mesh, governing PDEs, boundary conditions and input/output
  • a list of high-level classes used in constructing a solver with links to the detailed FORD documentation for each
  • sub-lists of the most importand methods each class provides and links to their detailed documentation
  • a list of other high-level procedures that are not type bound procedures (methods)

Getting Help

If you encounter a problem, have a suggestion, or want to ask a question, we encourage you to post an issue in this projects Github repository by opening a new issue. Every effort will be made to respond to your inquiry in a timely fashion.

Developer Info

Guide Star Engineering, LLC

Developer picture

An engineering services company specializing in hardware & software engineering design, R&D, testing, and systems integration.