42     namespace MultiRegions
 
   61                     const boost::weak_ptr<ExpList> &pExp,
 
   62                     const boost::shared_ptr<AssemblyMap>
 
   69                      "This routine should only be used when using a Full XXT" 
   92             bool dirForcCalculated = (bool) pDirForcing.num_elements();
 
   93             int nDirDofs  = pLocToGloMap->GetNumGlobalDirBndCoeffs();
 
   94             int nGlobDofs = pLocToGloMap->GetNumGlobalCoeffs();
 
  103                 if(dirForcCalculated)
 
  106                                 pDirForcing.get(), 1,
 
  125                                     tmp, tmp2, pLocToGloMap);
 
  136                                     tmp,tmp2, pLocToGloMap);
 
  142                         tmp2 + nDirDofs, 1, tmp3, 1, tmp3, 1);
 
  152                     const boost::shared_ptr<AssemblyMap> &pLocToGloMap)
 
  155                                     = pLocToGloMap->GetLocalToGlobalMap();
 
  156             unsigned int nGlo       = pLocToGloMap->GetNumGlobalCoeffs();
 
  157             unsigned int nEntries   = pLocToGloMap->GetNumLocalCoeffs();
 
  162             for (i = 0; i < nEntries; ++i)
 
  164                 vCounts[vMap[i]] += 1.0;
 
  168             pLocToGloMap->UniversalAssemble(vCounts);
 
  172             for (i = 0; i < nEntries; ++i)
 
  177             m_map = pLocToGloMap->GetLocalToGlobalMap();
 
  187                         const boost::shared_ptr<AssemblyMap> &pLocToGloMap)
 
  190             unsigned int nElmt = vExp->GetNumElmts();
 
  192             unsigned int iCount     = 0;
 
  193             unsigned int rCount     = 0;
 
  194             unsigned int nRows      = 0;
 
  195             unsigned int nEntries   = 0;
 
  196             unsigned int numDirBnd  = pLocToGloMap->GetNumGlobalDirBndCoeffs();
 
  197             unsigned int nLocal     = pLocToGloMap->GetNumLocalCoeffs();
 
  199                                     = pLocToGloMap->GetLocalToGlobalSign();
 
  200             bool doSign = pLocToGloMap->GetSignChange();
 
  201             unsigned int i = 0, j = 0, k = 0, n = 0;
 
  212                 for (n = 0; n < nElmt; ++n)
 
  214                     i = vExp->GetOffset_Elmt_Id(n);
 
  215                     vSizes[n] = vExp->GetExp(i)->GetNverts();
 
  216                     nEntries += vSizes[n]*vSizes[n];
 
  221                 for (n = 0; n < nElmt; ++n)
 
  223                     i = vExp->GetOffset_Elmt_Id(n);
 
  224                     vSizes[n] = vExp->GetExp(i)->GetNcoeffs();
 
  225                     nEntries += vSizes[n]*vSizes[n];
 
  239             for(n = iCount = 0; n < nElmt; ++n)
 
  241                 loc_mat = 
GetBlock(vExp->GetOffset_Elmt_Id(n));
 
  242                 nRows = loc_mat->GetRows();
 
  244                 for(i = 0; i < nRows; ++i)
 
  246                     gid1 = pLocToGloMap->GetLocalToGlobalMap(iCount + i);
 
  247                     for(j = 0; j < nRows; ++j)
 
  249                         k = rCount + i*vSizes[n] + j;
 
  250                         m_Ai[k] = iCount + i;
 
  251                         m_Aj[k] = iCount + j;
 
  252                         m_Ar[k] = (*loc_mat)(i,j);
 
  255                             m_Ar[k] *= vMapSign[iCount+i]*vMapSign[iCount+j];
 
  261                     if (gid1 < numDirBnd)
 
  268                             = pLocToGloMap->GetGlobalToUniversalMap(gid1);
 
  272                 rCount += vSizes[n]*vSizes[n];
 
GlobalSysSolnType GetGlobalSysSolnType() const 
Return the associated solution type. 
 
static std::string className
Name of class. 
 
boost::shared_ptr< AssemblyMap > AssemblyMapSharedPtr
 
void CreateMap(const boost::shared_ptr< AssemblyMap > &pLocToGloMap)
 
Array< OneD, double > m_Ar
 
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. 
 
GlobalLinSysXxtFull(const GlobalLinSysKey &pLinSysKey, const boost::weak_ptr< ExpList > &pExpList, const boost::shared_ptr< AssemblyMap > &pLocToGloMap)
Constructor for full direct matrix solve. 
 
virtual void v_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...
 
boost::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
 
DNekScalMatSharedPtr GetBlock(unsigned int n)
 
virtual ~GlobalLinSysXxtFull()
 
boost::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object. 
 
static GlobalLinSysSharedPtr create(const GlobalLinSysKey &pLinSysKey, const boost::weak_ptr< ExpList > &pExpList, const boost::shared_ptr< AssemblyMap > &pLocToGloMap)
Creates an instance of this class. 
 
boost::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object. 
 
Describe a linear system. 
 
static struct crs_data * 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)
Initialise the matrix-solve. 
 
StdRegions::MatrixType GetMatrixType() const 
Return the matrix type. 
 
const GlobalLinSysKey m_linSysKey
Key associated with this linear system. 
 
void AssembleMatrixArrays(const boost::shared_ptr< AssemblyMap > &pLocToGloMap)
 
void Vsub(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Subtract vector z = x-y. 
 
Array< OneD, unsigned int > m_Aj
 
Array< OneD, unsigned int > m_Ai
 
GlobalLinSysFactory & GetGlobalLinSysFactory()
 
void nektar_crs_stats(struct crs_data *data)
 
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode...
 
struct Xxt::crs_data * m_crsData
 
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
 
void Vadd(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Add vector z = x+y. 
 
Array< OneD, NekDouble > m_locToGloSignMult
 
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, tDescription pDesc="")
Register a class with the factory. 
 
const boost::weak_ptr< ExpList > m_expList
Local Matrix System.