ORB5X 1.0.0
Performance-portable global electromagnetic gyrokinetic PIC code
solver_data.hpp File Reference

Distributed field-matrix storage, assembly, and factorization. More...

#include "prec_const.hpp"
#include "spclibs/matrix.hpp"
#include <Kokkos_Core.hpp>
#include <vector>
#include <complex>
#include <memory>
#include <unordered_map>
+ Include dependency graph for solver_data.hpp:
+ This graph shows which files directly or indirectly include this file:

Classes

struct  orb5x::ContiEq
 Matrix numbers contributing to the electron continuity equation. More...
 
struct  orb5x::MatArray
 Sparse associative equivalent of the Fortran two-dimensional matrix array. More...
 
struct  orb5x::MatPropertyTemplate
 Mode-independent construction policy for one matrix number. More...
 
struct  orb5x::OhmEq
 Electrostatic-potential matrix numbers in the Ohm equation. More...
 
struct  orb5x::PairHash
 Hashes (global toroidal mode, matrix number) keys. More...
 
struct  orb5x::PressEq
 Electrostatic-potential matrix numbers in the pressure equation. More...
 
struct  orb5x::Zbmat
 One complex field matrix and its boundary/factorization metadata. More...
 

Namespaces

namespace  orb5x
 Public C++ interface of the ORB5X gyrokinetic application.
 

Enumerations

enum class  orb5x::NSelMatrixType { orb5x::NSEL_GBMAT = 0 , orb5x::NSEL_PBMAT = 1 }
 LAPACK storage/factorization selected for one field matrix. More...
 

Functions

void orb5x::allocate_matrix (int globalk, int matnum, int kl, int ku, int n)
 Allocate numerical band storage for a registered matrix.
 
void orb5x::bsolve (const Zbmat &mat, Complex *rhs, int nrhs=1)
 Overwrite rhs with solutions of the factorized system \(A X=B\).
 
void orb5x::defmat_disp ()
 Define required matrix-number slots from the configured physics model.
 
void orb5x::factorize_matrix (Zbmat &mat, int nmat=-1, int matnum=-1, const char *context="")
 Factorize mat in place using Cholesky or pivoted band LU.
 
Zbmat * orb5x::get_matrix (int globalk, int matnum)
 Return or lazily create metadata for one mode/matrix pair.
 
void orb5x::init_solver_data ()
 Clear and initialize matrix-number bookkeeping.
 
void orb5x::printmat ()
 Print the configured matrix-number registry on the reporting rank.
 
void orb5x::setmat (bool lapl_boundary_terms)
 Assign mode-independent storage, factorization, and boundary policies.
 
void orb5x::updtmat (Zbmat &mat, int row, int col, Complex val)
 Accumulate a value into a logical complex band-matrix element.
 
void orb5x::vmx (const Zbmat &mat, const Kokkos::View< Complex * > &x, Kokkos::View< Complex * > &y)
 Compute \(y=A x\) with the unfactorized logical band matrix.
 

Variables

MatArray orb5x::MATS
 Process-wide solver matrix registry, matching Fortran MATS.
 

Detailed Description

Distributed field-matrix storage, assembly, and factorization.

Defines matrix properties and complex band/dense blocks, with host LAPACK factorization and Kokkos-view RHS/vector interfaces.