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.

@jeguerra-2025

Copy link
Copy Markdown
Collaborator

Hello @robertmullis, we've done an initial review of your contributions and certainly like what you're proposing. Here are some points to consider moving forward:

  1. Please wrap the new routines with more verbose comments including details about where these came from (LAPACK source, version, repo, etc.) and about their interface.
  2. What is your availability in the future to get this PR finished? This will help us set a scope for what you can do where the hand-off to us will be.
  3. Please provide more details about the tests that you have done. These routines are quite fundamental MPAS and touch a variety of processes. We will require a more thorough test harness (see point 2.).

Otherwise, we welcome this idea and greatly appreciate how thoughtful and concise this proposed solution is.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants