BELFEM 0.9.0
Berkeley Lab Finite Element Framework
Loading...
Searching...
No Matches
mumpstools.f90 File Reference

Modules

module  mumpstools_common
 List of Parameters see Parameter list in mumpstools.hpp.

Functions/Subroutines

subroutine mumpstools_create_solver (asolverid, ainfo, ahostisworking, asymmetrymode)
 Creates a new MUMPS solver instance Initializes the solver structure and reserves a slot in the global solver array.
subroutine mumpstools_free_solver (asolverid, ainfo)
 Frees a MUMPS solver instance and releases its resources Calls MUMPS with JOB=-2 to destroy the solver instance If all solvers are freed, deallocates the global solver arrays.
subroutine mumpstools_num_solvers (acount)
 Number of live solver instances ( pool occupancy ) on this process.
subroutine mumpstools_solve (aiparameters, arparameters, an, annz, anrhs, arowindices, acolindices, avalues, ax, ay, ainfo, ainfog, arinfog)
 Solves a linear system using MUMPS Supports analysis, factorization, and solution phases based on JOB parameter JOB=1: analysis, JOB=2: factorization, JOB=3: solve, JOB=5: factorization+solve with same structure JOB=6: analysis+factorization+solve (all-in-one).

Variables

integer, parameter mumpstools_common::int_t = C_INT64_T
type(dmumps_struc), dimension(:), allocatable, target, save mumpstools_common::gsolvers
integer, dimension(:), allocatable, save mumpstools_common::goccupied
integer(int_t), save mumpstools_common::gmaxnumsolvers = 8
integer(int_t), save mumpstools_common::gnumsolvers = 0

Function/Subroutine Documentation

◆ mumpstools_create_solver()

subroutine mumpstools_create_solver ( integer( int_t ), intent(out) asolverid,
integer( int_t ), intent(out) ainfo,
integer( int_t ), intent(in) ahostisworking,
integer( int_t ), intent(in) asymmetrymode )

Creates a new MUMPS solver instance Initializes the solver structure and reserves a slot in the global solver array.

Parameters
[out]aSolverIDUnique ID of the created solver (1-based), -1 on failure
[out]aInfoInfo status (0 = success, -1000 = max solvers reached)
[in]aHostIsWorkingPassed through to the MUMPS control parameter PAR
[in]aSymmetryModePassed through to the MUMPS control parameter SYM

◆ mumpstools_free_solver()

subroutine mumpstools_free_solver ( integer( int_t ), intent(in) asolverid,
integer( int_t ), dimension( 80 ), intent(out) ainfo )

Frees a MUMPS solver instance and releases its resources Calls MUMPS with JOB=-2 to destroy the solver instance If all solvers are freed, deallocates the global solver arrays.

Parameters
[in]aSolverIDID of the solver to free
[out]aInfoInfo status from MUMPS

◆ mumpstools_num_solvers()

subroutine mumpstools_num_solvers ( integer( int_t ), intent(out) acount)

Number of live solver instances ( pool occupancy ) on this process.

Parameters
[out]aCountoccupancy; identical on every rank because create and free are collective

◆ mumpstools_solve()

subroutine mumpstools_solve ( integer( int_t ), dimension( 14 ), intent(in) aiparameters,
real( c_double ), dimension( 1 ), intent(in) arparameters,
integer( int_t ), intent(in) an,
integer( int_t ), intent(in) annz,
integer( int_t ), intent(in) anrhs,
integer( int_t ), dimension( annz ), intent(in), target arowindices,
integer( int_t ), dimension( annz ), intent(in), target acolindices,
real( c_double ), dimension( annz ), intent(in), target avalues,
real( c_double ), dimension( an * anrhs ), intent(inout), target ax,
real( c_double ), dimension( an * anrhs ), intent(in), target ay,
integer( int_t ), dimension( 80 ), intent(out) ainfo,
integer( int_t ), dimension( 80 ), intent(out) ainfog,
real( c_double ), dimension( 20 ), intent(out) arinfog )

Solves a linear system using MUMPS Supports analysis, factorization, and solution phases based on JOB parameter JOB=1: analysis, JOB=2: factorization, JOB=3: solve, JOB=5: factorization+solve with same structure JOB=6: analysis+factorization+solve (all-in-one).

the parameters object