Nektar++
Classes | Typedefs | Functions
Xxt Namespace Reference

Classes

struct  comm
 
struct  crs_data
 
struct  csr_mat
 
struct  sparse_cholesky
 

Typedefs

typedef int comm_ext
 
typedef int comm_req
 

Functions

struct crs_datanektar_crs_setup (unsigned int n, const unsigned long *id, unsigned int nz, const unsigned int *Ai, const unsigned int *Aj, const double *A, unsigned int null_space, const struct comm *comm)
 
void nektar_crs_solve (double *x, struct crs_data *data, double *b)
 
void nektar_crs_stats (struct crs_data *data)
 
void nektar_crs_free (struct crs_data *data)
 
static struct crs_dataInit (unsigned int pRank, const Nektar::Array< OneD, unsigned long > pId, const Nektar::Array< OneD, unsigned int > pAi, const Nektar::Array< OneD, unsigned int > pAj, const Nektar::Array< OneD, NekDouble > pAr, const LibUtilities::CommSharedPtr &pComm)
 Initialise the matrix-solve. More...
 
static void Solve (Nektar::Array< OneD, NekDouble > pX, struct crs_data *pCrs, Nektar::Array< OneD, NekDouble > pB)
 Solve the matrix system for a given input vector b. More...
 
static void Finalise (crs_data *pCrs)
 Deallocates the crs mapping data. More...
 

Typedef Documentation

◆ comm_ext

typedef int Xxt::comm_ext

Definition at line 52 of file Xxt.hpp.

◆ comm_req

typedef int Xxt::comm_req

Definition at line 53 of file Xxt.hpp.

Function Documentation

◆ Finalise()

static void Xxt::Finalise ( crs_data pCrs)
inlinestatic

Deallocates the crs mapping data.

Definition at line 202 of file Xxt.hpp.

203{
204#ifdef NEKTAR_USE_MPI
205 int finalized;
206 MPI_Finalized(&finalized);
207 if (pCrs && !finalized)
208 {
209 nektar_crs_free(pCrs);
210 }
211#endif
212}
void nektar_crs_free(struct crs_data *data)

References nektar_crs_free().

Referenced by Nektar::MultiRegions::GlobalLinSysXxt::~GlobalLinSysXxt().

◆ Init()

static struct crs_data * Xxt::Init ( unsigned int  pRank,
const Nektar::Array< OneD, unsigned long >  pId,
const Nektar::Array< OneD, unsigned int >  pAi,
const Nektar::Array< OneD, unsigned int >  pAj,
const Nektar::Array< OneD, NekDouble pAr,
const LibUtilities::CommSharedPtr pComm 
)
inlinestatic

Initialise the matrix-solve.

On each process an array of IDs for each global degree of freedom is supplied which corresponds to a unique numbering of universal degrees of freedom. Three vectors describing the matrix are also provided. The parallel matrix solve is then set up.

Parameters
pIdArray of integers providing universal IDs for each global DOF on the process.
pAiRow indices of matrix entries
pAjColumn indices of matrix entries
pArValues of matrix entries
pCommCommunication object used for inter-process communication.
Returns
crs_data structure

Definition at line 158 of file Xxt.hpp.

164{
165#ifdef NEKTAR_USE_MPI
166 unsigned int nz = pAr.size();
168 std::dynamic_pointer_cast<LibUtilities::CommMpi>(pComm);
169 ASSERTL1(vCommMpi, "Failed to cast MPI Comm object.");
170 comm vComm;
171 MPI_Comm_dup(vCommMpi->GetComm(), &vComm.c);
172 vComm.id = vCommMpi->GetRank();
173 vComm.np = vCommMpi->GetSize();
174 crs_data *result = nektar_crs_setup(pRank, &pId[0], nz, &pAi[0], &pAj[0],
175 &pAr[0], 0, &vComm);
176 MPI_Comm_free(&vComm.c);
177 return result;
178#else
179 return 0;
180#endif
181}
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
Definition: ErrorUtil.hpp:242
std::shared_ptr< CommMpi > CommMpiSharedPtr
Pointer to a Communicator object.
Definition: CommMpi.h:56
struct crs_data * nektar_crs_setup(unsigned int n, const unsigned long *id, unsigned int nz, const unsigned int *Ai, const unsigned int *Aj, const double *A, unsigned int null_space, const struct comm *comm)
unsigned int id
Definition: Xxt.hpp:58
unsigned int np
Definition: Xxt.hpp:59
comm_ext c
Definition: Xxt.hpp:60

References ASSERTL1, Xxt::comm::c, Xxt::comm::id, nektar_crs_setup(), and Xxt::comm::np.

Referenced by Nektar::MultiRegions::GlobalLinSysXxtFull::AssembleMatrixArrays(), and Nektar::MultiRegions::GlobalLinSysXxtStaticCond::v_AssembleSchurComplement().

◆ nektar_crs_free()

void Xxt::nektar_crs_free ( struct crs_data data)

Referenced by Finalise().

◆ nektar_crs_setup()

struct crs_data * Xxt::nektar_crs_setup ( unsigned int  n,
const unsigned long *  id,
unsigned int  nz,
const unsigned int *  Ai,
const unsigned int *  Aj,
const double *  A,
unsigned int  null_space,
const struct comm comm 
)

Referenced by Init().

◆ nektar_crs_solve()

void Xxt::nektar_crs_solve ( double *  x,
struct crs_data data,
double *  b 
)

Referenced by Solve().

◆ nektar_crs_stats()

void Xxt::nektar_crs_stats ( struct crs_data data)

◆ Solve()

static void Xxt::Solve ( Nektar::Array< OneD, NekDouble pX,
struct crs_data pCrs,
Nektar::Array< OneD, NekDouble pB 
)
inlinestatic

Solve the matrix system for a given input vector b.

Definition at line 186 of file Xxt.hpp.

189{
190#ifdef NEKTAR_USE_MPI
191 if (!pCrs)
192 {
193 return;
194 }
195 nektar_crs_solve(&pX[0], pCrs, &pB[0]);
196#endif
197}
void nektar_crs_solve(double *x, struct crs_data *data, double *b)

References nektar_crs_solve().

Referenced by Nektar::MultiRegions::GlobalLinSysXxtStaticCond::v_SolveLinearSystem(), and Nektar::MultiRegions::GlobalLinSysXxtFull::v_SolveLinearSystem().