Nektar++
Todo List
Member Nektar::L1Norm (const NekVector< DataType > &v)
Do the Norms with Blas where applicable.
Member Nektar::LibUtilities::BasisKey::GetTotNumModes () const
Generalise to arbitrary polynomials
Member Nektar::LinearElasticSystem::BuildMatrixSystem ()
Make static condensation optional and construct full system instead.
Member Nektar::LocalRegions::SegExp::MultiplyByElmtInvMass (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray)
Same method exists in ExpList and everyone references ExpList::MultiplyByElmtInvMass. Remove this one?
Member Nektar::MultiRegions::DisContField3DHomogeneous1D::v_GetRobinBCInfo () override
Fix Robin BCs for homogeneous case
Member Nektar::MultiRegions::DisContField3DHomogeneous1D::v_GetTrace () override

Fix in another way considering all the planes

Fix in another way considering all the planes

Member Nektar::MultiRegions::DisContField3DHomogeneous1D::v_GetTraceMap () override

Fix in another way considering all the planes

Fix in another way considering all the planes

Member Nektar::MultiRegions::DisContField3DHomogeneous2D::v_GetRobinBCInfo () override

Fix Robin BCs for homogeneous case

Fix Robin BCs for homogeneous case

Member Nektar::MultiRegions::ExpList::GetExpIndex (const Array< OneD, const NekDouble > &gloCoord, NekDouble tol=0.0, bool returnNearestElmt=false, int cachedId=-1, NekDouble maxDistance=1e6)
need a smarter search here that first just looks at bounding vertices - suggest first seeing if point is within 10% of region defined by vertices. The do point search.
Member Nektar::MultiRegions::GlobalLinSysPETSc::DoNekppOperation (Vec &in, Vec &out, ShellCtx *ctx, bool precon)
There's a lot of scatters and copies that might possibly be eliminated to make this more efficient.
Member Nektar::MultiRegions::GlobalLinSysPETSc::SetUpMatVec (int nGlobal, int nDir)
Preallocation should be done at this point, since presently matrix allocation takes a significant amount of time.
Member Nektar::MultiRegions::GlobalLinSysPETScStaticCond::v_DoMatrixMultiply (const Array< OneD, const NekDouble > &input, Array< OneD, NekDouble > &output) override
This can possibly be made faster by using the sparse block-matrix multiplication code from the iterative elastic systems.
Member Nektar::MultiRegions::LocTraceToTraceMap::LocTraceToTraceMap (const ExpList &locExp, const ExpListSharedPtr &trace, const Array< OneD, Array< OneD, LocalRegions::ExpansionSharedPtr > > &elmtToTrace, const std::vector< bool > &LeftAdjacents)
Add 1D support
Member Nektar::NavierStokesCFE::v_GetViscousFluxVector (const Array< OneD, const Array< OneD, NekDouble > > &physfield, TensorOfArray3D< NekDouble > &derivatives, TensorOfArray3D< NekDouble > &viscousTensor)
Complete the viscous flux vector
Member Nektar::NavierStokesCFE::v_GetViscousFluxVectorDeAlias (const Array< OneD, const Array< OneD, NekDouble > > &physfield, TensorOfArray3D< NekDouble > &derivatives, TensorOfArray3D< NekDouble > &viscousTensor)
Complete the viscous flux vector
Member Nektar::NavierStokesCFEAxisym::v_GetViscousFluxVector (const Array< OneD, const Array< OneD, NekDouble > > &physfield, TensorOfArray3D< NekDouble > &derivatives, TensorOfArray3D< NekDouble > &viscousTensor) override
Complete the viscous flux vector
Member Nektar::NavierStokesImplicitCFE::GetdFlux_dQx_2D (const Array< OneD, NekDouble > &normals, const NekDouble &mu, const Array< OneD, NekDouble > &U, DNekMatSharedPtr &OutputMatrix)

flux derived with Qx=[drho_dx,drhou_dx,drhov_dx,drhoE_dx] Input: normals:Point normals U=[rho,rhou,rhov,rhoE] Output: 2D 3*4 Matrix (flux with rho is zero)

flux derived with Qx=[drho_dx,drhou_dx,drhov_dx,drhoE_dx] Input: normals:Point normals U=[rho,rhou,rhov,rhoE] Output: 2D 3*4 Matrix (flux with rho is zero)

Member Nektar::NavierStokesImplicitCFE::GetdFlux_dQy_2D (const Array< OneD, NekDouble > &normals, const NekDouble &mu, const Array< OneD, NekDouble > &U, DNekMatSharedPtr &OutputMatrix)

flux derived with Qx=[drho_dy,drhou_dy,drhov_dy,drhoE_dy] Input: normals:Point normals U=[rho,rhou,rhov,rhoE] Output: 2D 3*4 Matrix (flux with rho is zero)

flux derived with Qx=[drho_dy,drhou_dy,drhov_dy,drhoE_dy] Input: normals:Point normals U=[rho,rhou,rhov,rhoE] Output: 2D 3*4 Matrix (flux with rho is zero)

Member Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::operator() (const IndexType row, const IndexType column) const
double check, might be a bug when local_col > local column
Member Nektar::SolverUtils::Advection3DHomogeneous1D::Advection3DHomogeneous1D (std::string advType)
Extension to triangles, tetrahedra and other shapes. (Long term objective)
Member Nektar::SolverUtils::AdvectionFR::AdvectionFR (std::string advType)
Extension to triangles, tetrahedra and other shapes. (Long term objective)
Member Nektar::SolverUtils::AdvectionFR::DivCFlux_2D (const int nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, const NekDouble > &fluxX1, const Array< OneD, const NekDouble > &fluxX2, const Array< OneD, const NekDouble > &numericalFlux, Array< OneD, NekDouble > &divCFlux)
: Switch on shapes eventually here.
Member Nektar::SolverUtils::AdvectionFR::DivCFlux_2D_Gauss (const int nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, const NekDouble > &fluxX1, const Array< OneD, const NekDouble > &fluxX2, const Array< OneD, const NekDouble > &numericalFlux, Array< OneD, NekDouble > &divCFlux)
: Switch on shapes eventually here.
Member Nektar::SolverUtils::AdvectionFR::DivCFlux_3D (const int nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, const NekDouble > &fluxX1, const Array< OneD, const NekDouble > &fluxX2, const Array< OneD, const NekDouble > &fluxX3, const Array< OneD, const NekDouble > &numericalFlux, Array< OneD, NekDouble > &divCFlux)
: To be implemented. Switch on shapes eventually here.
Member Nektar::SolverUtils::AdvectionFR::SetupMetrics (LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields)
Add the metric terms for 3D Hexahedra.
Member Nektar::SolverUtils::DiffusionLFR::DerCFlux_2D (const int nConvectiveFields, const int direction, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, const NekDouble > &flux, const Array< OneD, NekDouble > &iFlux, Array< OneD, NekDouble > &derCFlux)
: Switch on shapes eventually here.
Member Nektar::SolverUtils::DiffusionLFR::DiffusionLFR (std::string diffType)
Extension to triangles, tetrahedra and other shapes. (Long term objective)
Member Nektar::SolverUtils::DiffusionLFR::DivCFlux_2D (const int nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, const NekDouble > &fluxX1, const Array< OneD, const NekDouble > &fluxX2, const Array< OneD, const NekDouble > &numericalFlux, Array< OneD, NekDouble > &divCFlux)
: Switch on shapes eventually here.
Member Nektar::SolverUtils::DiffusionLFR::DivCFlux_2D_Gauss (const int nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, const NekDouble > &fluxX1, const Array< OneD, const NekDouble > &fluxX2, const Array< OneD, const NekDouble > &numericalFlux, Array< OneD, NekDouble > &divCFlux)
: Switch on shapes eventually here.
Member Nektar::SolverUtils::DiffusionLFR::SetupMetrics (LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields)
Add the metric terms for 3D Hexahedra.
Member Nektar::SolverUtils::DiffusionLFRNS::DerCFlux_2D (const int nConvectiveFields, const int direction, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, const NekDouble > &flux, const Array< OneD, NekDouble > &iFlux, Array< OneD, NekDouble > &derCFlux)
: Switch on shapes eventually here.
Member Nektar::SolverUtils::DiffusionLFRNS::DiffusionLFRNS (std::string diffType)
Extension to triangles, tetrahedra and other shapes. (Long term objective)
Member Nektar::SolverUtils::DiffusionLFRNS::DivCFlux_2D (const int nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, const NekDouble > &fluxX1, const Array< OneD, const NekDouble > &fluxX2, const Array< OneD, const NekDouble > &numericalFlux, Array< OneD, NekDouble > &divCFlux)
: Switch on shapes eventually here.
Member Nektar::SolverUtils::DiffusionLFRNS::DivCFlux_2D_Gauss (const int nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, const NekDouble > &fluxX1, const Array< OneD, const NekDouble > &fluxX2, const Array< OneD, const NekDouble > &numericalFlux, Array< OneD, NekDouble > &divCFlux)
: Switch on shapes eventually here.
Member Nektar::SolverUtils::DiffusionLFRNS::SetupMetrics (LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields)
Add the metric terms for 3D Hexahedra.
Member Nektar::SolverUtils::Driver::v_InitObject (std::ostream &out=std::cout)
At the moment this is Navier-Stokes specific - generalise?
Member Nektar::SpatialDomains::Geometry::GetVertexEdgeMap (int i, int j) const
Expand to work with pyramid elements.
Member Nektar::SpatialDomains::Geometry::GetVertexFaceMap (int i, int j) const
Expand to work with pyramid elements.
Member Nektar::SpatialDomains::Geometry::ValidateRegGeomFactor (GeomFactorsSharedPtr geomFactor)

should this '#if 0' statement be removed?

Currently this method is disabled since the lookup is very expensive.

Member Nektar::SpatialDomains::MeshGraph::ReadExpansionInfo ()
solvers break the pattern 'instantiate Session -> instantiate MeshGraph' and parse command line arguments by themselves; one needs to unify command line arguments handling. Solvers tend to call MeshGraph::Read statically -> m_session is not defined -> no info about command line arguments presented ASSERTL0(m_session != 0, "One needs to instantiate SessionReader first");
Member Nektar::StdRegions::MatrixType
we need to tidy up matrix construction approach probably using a factory type approach
Member Nektar::StdRegions::StdHexExp::v_BwdTrans_SumFacKernel (const Array< OneD, const NekDouble > &base0, const Array< OneD, const NekDouble > &base1, const Array< OneD, const NekDouble > &base2, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, Array< OneD, NekDouble > &wsp, bool doCheckCollDir0, bool doCheckCollDir1, bool doCheckCollDir2) override
Account for some directions being collocated. See StdQuadExp as an example.
Member Nektar::StdRegions::StdHexExp::v_IProductWRTBase_SumFacKernel (const Array< OneD, const NekDouble > &base0, const Array< OneD, const NekDouble > &base1, const Array< OneD, const NekDouble > &base2, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, Array< OneD, NekDouble > &wsp, bool doCheckCollDir0, bool doCheckCollDir1, bool doCheckCollDir2) override
Implement cases where only some directions are collocated.
Member Nektar::StdRegions::StdTetExp::v_BwdTrans_SumFacKernel (const Array< OneD, const NekDouble > &base0, const Array< OneD, const NekDouble > &base1, const Array< OneD, const NekDouble > &base2, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, Array< OneD, NekDouble > &wsp, bool doCheckCollDir0, bool doCheckCollDir1, bool doCheckCollDir2) override
Account for some directions being collocated. See StdQuadExp as an example.
Member Nektar::StorageSmvBsr< T >::StorageSmvBsr (const IndexType blkRows, const IndexType blkCols, const IndexType blkDim, const BCOMatType &bcoMat, const MatrixStorage matType=eFULL)
: - iterators over strictly lower-triangular part
  • number off-diagonal elements calculation
  • clear distinction between stored and factual nonzeros (row density)