C++ Perl Fortran M4 Makefile C Other
Clone or download
roystgnr Merge pull request #50 from nicholasmalaya/master
Make f_insh optional test contingent upon MetaPhysicL
Latest commit e778597 Jan 10, 2018
Failed to load latest commit information.
doxygen Supply manual bibitem short forms Jul 19, 2016
examples adding conditionals to express that incompressible NS should not run … Jan 10, 2018
m4 Remove use of deprecated AC_PROG_LIBTOOL Jan 11, 2017
tests Adding a CNS with LES MMS. Jul 24, 2017
tutorial Update src license headers for 2013 - Issue #14. Nov 22, 2013
.gitattributes [masa]: adding fortran label for git language statistics Mar 17, 2015
.gitignore Adding a CNS with LES MMS. Jul 24, 2017
.travis.yml Fortran isn't optional for MASA (yet...) Feb 14, 2014
AUTHORS Adding a CNS with LES MMS. Jul 24, 2017
CHANGES appending to changelog to reflect #50 Jan 10, 2018
COPYING [masa]: include versioning routines and #defines in header Aug 31, 2010
INSTALL adding docs to remove warning May 27, 2010
LICENSE Update src license headers for 2013 - Issue #14. Nov 22, 2013
Makefile.am [masa]: deprecating svn version info Nov 12, 2013
README Adding hook to online readme Apr 21, 2015
README.md Update README.md Jul 5, 2017
bootstrap Updating bootstrap files - apparently autoconf is supposed to run Nov 9, 2010
configure.ac adding conditional to permit defining METAPHYSICL configuration Jan 10, 2018
masa.pc.in [masa]: feature #1565 pkg-config support Mar 29, 2011
masa.spec.in [masa]: update rpm .spec to use rpm includes for multiple compiler co… Sep 11, 2010



Build Status Join the chat at https://gitter.im/manufactured-solutions/

Method of Manufactured Solutions Repository

MASA (Manufactured Analytical Solution Abstraction) is a library written in C++ (with C, python and Fortran90 interfaces) which provides a suite of manufactured solutions for the software verification of partial differential equation solvers in multiple dimensions. Example formulations include:

Heat Equation
Laplace's Equation
Euler Equations (with and without thermal equilibrium chemistry)
Navier-Stokes Equations
Reynolds Averaged Navier Stokes with Various Turbulence Models


Code verification focuses on identifying failures of the code to correctly implement a desired numerical algorithm. When performing code verification, analytical solutions to mathematical equations are used to calculate error in a corresponding approximate solution.

There are many techniques common in the software engineering community that can assist code verification; for example, in design and construction of unit and module tests that exercise specific subsets of the software, regression tests that exercise fixes for previously discovered software errors, code coverage analysis, etc. In the realm of mathematical modeling, one should also exercise the software to ensure that exact solutions to the desired equations can be recovered when the code is given the corresponding inputs. This process was termed the “method of exact solutions”. However, one is often limited by the availability of analytical solutions; there will almost certainly be no non-trivial analytical solutions available when the physics and/or geometry become complex.

An important tool that has emerged over the past decade to assist in the code verification process is the Method of Manufactured Solutions (MMS). MMS, instead of relying upon the availability of an exact solution to the governing equations, specifies a solution. This artificial solution is then substituted into the equations. Naturally, there will be a residual term since the chosen function is unlikely to be an exact solution to the equations. This residual can then be added to the code as a source term; the MMS test then uses the code to solve the modified equations and checks that the chosen function is recovered. Although previous work has focused mainly on partial differential equations (PDE’s), this idea applies to a broad range of systems in mathematical physics including nonlinear equations, systems of algebraic equations, and ordinary differential equations.

MASA began as a centralized repository for the MMS generated across the Center for Predictive Engineering and Computational Science (PECOS) at the Institute for Computational Engineering and Sciences (ICES) at the University of Texas for use with verification. Given that there appears to be no openly available, application-independent software package that provides generated MMS source terms, solutions, etc., it was decided to centralize the Center’s MMS efforts into one library to enhance reusability and consistency across the various software packages. The library is written in C++ (with C, Fortran90 and python interfaces) and provides a suite of manufactured solutions for the software verification of partial differential equation solvers in multiple dimensions.

Citing MASA

Should you use MASA in your research, please provide a citation of the library through the paper, MASA: a library for verification using manufactured and analytical solutions published in Engineering with Computers


journal={Engineering with Computers},
title={MASA: a library for verification using manufactured and analytical solutions},
keywords={Verification; Manufactured solutions; Partial differential equations; Finite elements},
author={Malaya, Nicholas and Estacio-Hiroms, Kemelli C. and Stogner, Roy H. and Schulz, Karl W. and Bauman, Paul T. and Carey, Graham F.},

For more information on the use of MASA and a brief introduction to verification, consult the following repository of recent MASA presentations

Online Documentation

Please check out github.io pages at: http://manufactured-solutions.github.io/MASA/

Adding Manufactured Solutions to MASA

MASA provides two methods to import manufactured solutions into the library. Users can either generate their own source terms, or they can use the automatic differentiation capabilities provided in MASA. The method by which solutions can be added to is provided by the "MASA-import" script. Please consult the MASA documentation for more details. The MASA development team will gladly add manufactured solutions to the library, for use in the verification community. If you would like to incorporate an MMS in the library, start a github ticket with the following information:

Model document (written in LaTeX) detailing the equations, manufactured analytical terms
C-code used to import the manufactured solutions into masa, using the "masa-import" feature.

Please recall that MASA is an open-source library, and all MMS are publicly available.


We welcome any feedback regarding MASA and bugs in the code and errors or omissions in the documentation can be reported as a ticket on github. Requests and contributions are welcome at the location. Ideally, please include the following information:

the version number of the MASA library (versioning information can be obtained by running the masa_version binary located in the bin/ directory of a local MASA installation)
the hardware and operating system
the local compiler version number
a description of the bug behavior
a short program which reproduces the bug.