---
project: Morfeus Framework
summary: A toolkit for constructing parallel PDE solvers using finite volume and finite difference methods.
src_dir: src/FD
src/FV/src
exclude_dir: src/FV/src/unit-tests
src/FD/tests
API-doc
output_dir: API-doc
media_dir: developer-doc/media
extra_filetypes: txt #
page_dir: developer-doc
preprocess: true
macro: FORD
preprocessor: gfortran-8 -E
display: public
protected
private
source: true
graph: true
md_extensions: markdown.extensions.toc
css: API-doc-style.css
coloured_edges: true
sort: permission-alpha
extra_mods: iso_fortran_env:https://gcc.gnu.org/onlinedocs/gfortran/ISO_005fFORTRAN_005fENV.html
iso_c_binding:https://gcc.gnu.org/onlinedocs/gfortran/ISO_005fC_005fBINDING.html#ISO_005fC_005fBINDING
lower: true
print_creation_date: true
creation_date: %Y-%m-%d %H:%M %z
project_github: https://github.com/sourceryinstitute/MORFEUS-Source
project_download: https://github.com/sourceryinstitute/MORFEUS-Source/releases
license: bsd
author: Guide Star Engineering, LLC
email: [email protected]
author_description: An engineering services company specializing in hardware & software engineering design, R&D, testing, and systems integration.
author_pic: media/GSElogo.png
favicon: developer-doc/media/gsellcfavicons.png
github: https://github.com/sourceryinstitute/MORFEUS-Source
website: https://gsellc.com
---
[TOC]
@warning The Morfeus finite volume (FV) capability is mature. The finite difference (FD) capability is a work in progress and uses Fortran 2018 features that are nominally supported by the Intel, GNU, Cray, and NAG compilers. With GNU, however, parallel communication will work only after a reported gfortran issue and a related OpenCoarrays issue have been fixed.
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.
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.
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.
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)
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.