Skip to content

Replaced linear system matrix operation functions with modified LAPACK implementations.#1487

Open
robertmullis wants to merge 2 commits into
MPAS-Dev:developfrom
robertmullis:matrix_operation_fixes
Open

Replaced linear system matrix operation functions with modified LAPACK implementations.#1487
robertmullis wants to merge 2 commits into
MPAS-Dev:developfrom
robertmullis:matrix_operation_fixes

Conversation

@robertmullis

Copy link
Copy Markdown

This is a fix to replace the current implementation of the functions for solving a linear system by LU factorization with LAPACK versions with BSD3 licensing: https://github.com/Reference-LAPACK/lapack/tree/master. The two functions being added are mpas_getrf and mpas_getrs, which are modified versions of LAPACK's DGETF2 and DGETRS. mpas_migs and mpas_legs were also updated to act as a wrapper for these functions, and they are called through the src files.

Unit testing was performed by using a test set of values and comparing the LAPACK implementations with the legacy versions and Wolfram Alpha. The tests resulted in outputs with a difference within ~1.0e-15 of the original implementation and ~4.0e-14 of Wolfram Alpha.

Linking the LAPACK library for performance was considered, but adding timers to the mpas_migs and mpas_legs functions revealed that they add a negligible amount of time. On a 1-degree test case that lasted 150.58s, the updated functions contributed only 0.009s.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant