Nektar++
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Nektar::MultiRegions::GlobalLinSysXxt Class Reference

#include <GlobalLinSysXxt.h>

Inheritance diagram for Nektar::MultiRegions::GlobalLinSysXxt:
Inheritance graph
[legend]
Collaboration diagram for Nektar::MultiRegions::GlobalLinSysXxt:
Collaboration graph
[legend]

Public Member Functions

 GlobalLinSysXxt (const GlobalLinSysKey &pKey, const boost::weak_ptr< ExpList > &pExp, const boost::shared_ptr< AssemblyMap > &pLocToGloMap)
 Constructor for full direct matrix solve. More...
 
virtual ~GlobalLinSysXxt ()
 
- Public Member Functions inherited from Nektar::MultiRegions::GlobalLinSys
 GlobalLinSys (const GlobalLinSysKey &pKey, const boost::weak_ptr< ExpList > &pExpList, const boost::shared_ptr< AssemblyMap > &pLocToGloMap)
 Constructor for full direct matrix solve. More...
 
virtual ~GlobalLinSys ()
 
const GlobalLinSysKeyGetKey (void) const
 Returns the key associated with the system. More...
 
const boost::weak_ptr< ExpList > & GetLocMat (void) const
 
void InitObject ()
 
void Initialise (const boost::shared_ptr< AssemblyMap > &pLocToGloMap)
 
void Solve (const Array< OneD, const NekDouble > &in, Array< OneD, NekDouble > &out, const AssemblyMapSharedPtr &locToGloMap, const Array< OneD, const NekDouble > &dirForcing=NullNekDouble1DArray)
 Solve the linear system for given input and output vectors using a specified local to global map. More...
 
boost::shared_ptr< GlobalLinSysGetSharedThisPtr ()
 Returns a shared pointer to the current object. More...
 
int GetNumBlocks ()
 
DNekScalMatSharedPtr GetBlock (unsigned int n)
 
DNekScalBlkMatSharedPtr GetStaticCondBlock (unsigned int n)
 
void DropStaticCondBlock (unsigned int n)
 
void SolveLinearSystem (const int pNumRows, const Array< OneD, const NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const AssemblyMapSharedPtr &locToGloMap, const int pNumDir=0)
 Solve the linear system for given input and output vectors. More...
 

Protected Member Functions

virtual void v_SolveLinearSystem (const int pNumRows, const Array< OneD, const NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const AssemblyMapSharedPtr &locToGloMap, const int pNumDir=0)
 Solve the linear system for given input and output vectors. More...
 
void GlobalToLocalNoSign (const Array< OneD, const NekDouble > &global, Array< OneD, NekDouble > &local)
 
void LocalToGlobalNoSign (const Array< OneD, const NekDouble > &local, Array< OneD, NekDouble > &global)
 
- Protected Member Functions inherited from Nektar::MultiRegions::GlobalLinSys
virtual int v_GetNumBlocks ()
 Get the number of blocks in this system. More...
 
virtual DNekScalMatSharedPtr v_GetBlock (unsigned int n)
 Retrieves the block matrix from n-th expansion using the matrix key provided by the m_linSysKey. More...
 
virtual DNekScalBlkMatSharedPtr v_GetStaticCondBlock (unsigned int n)
 Retrieves a the static condensation block matrices from n-th expansion using the matrix key provided by the m_linSysKey. More...
 
virtual void v_DropStaticCondBlock (unsigned int n)
 Releases the static condensation block matrices from NekManager of n-th expansion using the matrix key provided by the m_linSysKey. More...
 
PreconditionerSharedPtr CreatePrecon (AssemblyMapSharedPtr asmMap)
 Create a preconditioner object from the parameters defined in the supplied assembly map. More...
 

Protected Attributes

struct Xxt::crs_datam_crsData
 
Array< OneD, unsigned int > m_Ai
 
Array< OneD, unsigned int > m_Aj
 
Array< OneD, double > m_Ar
 
Array< OneD, NekDoublem_locToGloSignMult
 
Array< OneD, int > m_map
 
- Protected Attributes inherited from Nektar::MultiRegions::GlobalLinSys
const GlobalLinSysKey m_linSysKey
 Key associated with this linear system. More...
 
const boost::weak_ptr< ExpListm_expList
 Local Matrix System. More...
 
const map< int,
RobinBCInfoSharedPtr
m_robinBCInfo
 Robin boundary info. More...
 

Detailed Description

Solves a linear system using direct methods.

Definition at line 29 of file GlobalLinSysXxt.h.

Constructor & Destructor Documentation

Nektar::MultiRegions::GlobalLinSysXxt::GlobalLinSysXxt ( const GlobalLinSysKey pKey,
const boost::weak_ptr< ExpList > &  pExp,
const boost::shared_ptr< AssemblyMap > &  pLocToGloMap 
)

Constructor for full direct matrix solve.

Definition at line 50 of file GlobalLinSysXxt.cpp.

References m_crsData.

55  : GlobalLinSys(pKey, pExp, pLocToGloMap)
56  {
57  m_crsData = 0;
58  }
GlobalLinSys(const GlobalLinSysKey &pKey, const boost::weak_ptr< ExpList > &pExpList, const boost::shared_ptr< AssemblyMap > &pLocToGloMap)
Constructor for full direct matrix solve.
Nektar::MultiRegions::GlobalLinSysXxt::~GlobalLinSysXxt ( )
virtual

Definition at line 60 of file GlobalLinSysXxt.cpp.

References Xxt::Finalise(), and m_crsData.

61  {
63  }
static void Finalise(crs_data *pCrs)
Deallocates the crs mapping data.
Definition: Xxt.hpp:201

Member Function Documentation

void Nektar::MultiRegions::GlobalLinSysXxt::GlobalToLocalNoSign ( const Array< OneD, const NekDouble > &  global,
Array< OneD, NekDouble > &  local 
)
protected

Definition at line 81 of file GlobalLinSysXxt.cpp.

References Vmath::Gathr(), m_locToGloSignMult, and m_map.

Referenced by v_SolveLinearSystem().

83  {
84  Vmath::Gathr(m_map.num_elements(), m_locToGloSignMult.get(), global.get(), m_map.get(), local.get());
85  }
void Gathr(int n, const T *x, const int *y, T *z)
Gather vector z[i] = x[y[i]].
Definition: Vmath.cpp:630
Array< OneD, NekDouble > m_locToGloSignMult
void Nektar::MultiRegions::GlobalLinSysXxt::LocalToGlobalNoSign ( const Array< OneD, const NekDouble > &  local,
Array< OneD, NekDouble > &  global 
)
protected

Definition at line 87 of file GlobalLinSysXxt.cpp.

References m_map, and Vmath::Scatr().

Referenced by v_SolveLinearSystem().

89  {
90  Vmath::Scatr(m_map.num_elements(), local.get(), m_map.get(), global.get());
91  }
void Scatr(int n, const T *x, const int *y, T *z)
Scatter vector z[y[i]] = x[i].
Definition: Vmath.cpp:659
void Nektar::MultiRegions::GlobalLinSysXxt::v_SolveLinearSystem ( const int  pNumRows,
const Array< OneD, const NekDouble > &  pInput,
Array< OneD, NekDouble > &  pOutput,
const AssemblyMapSharedPtr locToGloMap,
const int  pNumDir = 0 
)
protectedvirtual

Solve the linear system for given input and output vectors.

Implements Nektar::MultiRegions::GlobalLinSys.

Definition at line 66 of file GlobalLinSysXxt.cpp.

References GlobalToLocalNoSign(), LocalToGlobalNoSign(), m_crsData, m_map, and Xxt::Solve().

72  {
73  int nLocal = m_map.num_elements();
74  Array<OneD, NekDouble> vLocalIn(nLocal, 0.0);
75  Array<OneD, NekDouble> vLocalOut(nLocal, 0.0);
76  GlobalToLocalNoSign(pInput, vLocalIn);
77  Xxt::Solve(vLocalOut, m_crsData, vLocalIn);
78  LocalToGlobalNoSign(vLocalOut, pOutput);
79  }
void LocalToGlobalNoSign(const Array< OneD, const NekDouble > &local, Array< OneD, NekDouble > &global)
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.
Definition: Xxt.hpp:185
void GlobalToLocalNoSign(const Array< OneD, const NekDouble > &global, Array< OneD, NekDouble > &local)

Member Data Documentation

Array<OneD, unsigned int> Nektar::MultiRegions::GlobalLinSysXxt::m_Ai
protected
Array<OneD, unsigned int> Nektar::MultiRegions::GlobalLinSysXxt::m_Aj
protected
Array<OneD, double> Nektar::MultiRegions::GlobalLinSysXxt::m_Ar
protected
struct Xxt::crs_data* Nektar::MultiRegions::GlobalLinSysXxt::m_crsData
protected
Array<OneD, NekDouble> Nektar::MultiRegions::GlobalLinSysXxt::m_locToGloSignMult
protected
Array<OneD, int> Nektar::MultiRegions::GlobalLinSysXxt::m_map
protected