Nektar++
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
Nektar Namespace Reference

Namespaces

namespace  BandedMatrixMatrixMultiplicationTests
 
namespace  BandedMatrixStoragePolicyUnitTests
 
namespace  BandedMatrixVectorMultiplicationUnitTests
 
namespace  BlockMatrixUnitTests
 
namespace  Collections
 
namespace  ConsistentObjectAccessUnitTests
 
namespace  detail
 
namespace  DiagonalMatrixOperationsUnitTests
 
namespace  DiagonalMatrixStoragePolicyUnitTests
 
namespace  Expansion3DTests
 
namespace  FieldUtils
 
namespace  FullMatrixOperationsUnitTests
 
namespace  FullMatrixStoragePolicyUnitTests
 
namespace  GlobalMapping
 
namespace  HexCollectionTests
 The above copyright notice and this permission notice shall be included.
 
namespace  HexExpTests
 
namespace  InterpreterUnitTests
 
namespace  LibUtilities
 
namespace  LinearSystemUnitTests
 
namespace  LocalRegions
 
namespace  LowerTriangularMatrixUnitTests
 
namespace  LowerTriangularStoragePolicyUnitTests
 
namespace  MatrixMultiplicationTests
 
namespace  MatrixOperationTests
 
namespace  MatrixSubtractionTests
 
namespace  MatrixUnitTests
 
namespace  MemManagerUnitTests
 
namespace  MovementTests
 
namespace  MultiRegions
 
namespace  NekConstants
 
namespace  PrismCollectionTests
 
namespace  PyrCollectionTests
 
namespace  QuadCollectionTests
 
namespace  RealComparisonUnitTests
 
namespace  RiemannTests
 The above copyright notice and this permission notice shall be included.
 
namespace  ScaledBlockMatrixUnitTests
 
namespace  ScaledMatrixUnitTests
 
namespace  SegCollectionTests
 
namespace  SharedArrayUnitTests
 
namespace  SimdLibTests
 
namespace  SolverUtils
 
namespace  SpatialDomains
 
namespace  StandardMatrixOperationsUnitTests
 
namespace  StandardMatrixUnitTests
 
namespace  StdRegions
 
namespace  SymmetricMatrixStoragePolicyUnitTests
 
namespace  TetCollectionTests
 The above copyright notice and this permission notice shall be included.
 
namespace  Thread
 
namespace  TriangularMatrixVectorMultiplicationUnitTests
 
namespace  TriCollectionTests
 
namespace  UnitTests
 
namespace  UpperTriangularMatrixUnitTests
 
namespace  UpperTriangularUnitTests
 
namespace  VarcoeffHashingTest
 
namespace  VariableSizedNekVectorUnitTests
 
namespace  VmathSIMDUnitTests
 

Classes

class  AcousticSolver
 
class  AcousticSystem
 
class  AdjointAdvection
 Advection for the adjoint form of the linearised Navier-Stokes equations. More...
 
class  AInflow
 
class  AlternateSkewAdvection
 
class  APE
 
class  APELaxFriedrichsSolver
 
class  APEUpwindSolver
 
class  Array
 
class  Array< OneD, const DataType >
 1D Array of constant elements with garbage collection and bounds checking. More...
 
class  Array< OneD, DataType >
 1D Array More...
 
class  Array< TwoD, const DataType >
 2D array with garbage collection and bounds checking. More...
 
class  Array< TwoD, DataType >
 A 2D array. More...
 
class  ArrayDestructionPolicy
 
class  ArrayDestructionPolicy< ObjectType, typename std::enable_if< std::is_fundamental< ObjectType >::value >::type >
 
class  ArrayDestructionPolicy< ObjectType, typename std::enable_if<!std::is_fundamental< ObjectType >::value >::type >
 
class  ArrayInitializationPolicy
 
class  ArrayInitializationPolicy< ObjectType, typename std::enable_if< std::is_fundamental< ObjectType >::value >::type >
 
class  ArrayInitializationPolicy< ObjectType, typename std::enable_if<!std::is_fundamental< ObjectType >::value >::type >
 
class  ArtificialDiffusion
 Encapsulates the artificial diffusion used in shock capture. More...
 
class  AUSM0Solver
 
class  AUSM1Solver
 
class  AUSM2Solver
 
class  AUSM3Solver
 
class  AverageSolver
 
struct  BandedMatrixFuncs
 
class  BetaPressureArea
 
class  Bidomain
 A model for cardiac conduction. More...
 
class  BidomainRoth
 A model for cardiac conduction. More...
 
struct  CanGetRawPtr
 
struct  CanGetRawPtr< NekMatrix< NekMatrix< T, R >, ScaledMatrixTag > >
 
struct  CanGetRawPtr< NekMatrix< T, M > >
 
struct  CanGetRawPtr< NekMatrix< T, StandardMatrixTag > >
 
class  CellModel
 Cell model base class. More...
 
class  CellModelAlievPanfilov
 Aliev Panfilov model. More...
 
class  CellModelFitzHughNagumo
 FitzHugh-Nagumo model. More...
 
class  CFLtester
 
class  CFSBndCond
 Encapsulates the user-defined boundary conditions for compressible flow solver. More...
 
class  CFSImplicit
 
struct  Command
 
class  CompressibleFlowSystem
 
class  CompressibleSolver
 
struct  ConsistentObjectAccess
 
struct  ConsistentObjectAccess< DataType * >
 
struct  ConsistentObjectAccess< std::shared_ptr< DataType > >
 
class  ConstMatrix
 
class  CountedObject
 
class  CoupledAssemblyMap
 Modified version of MultiRegions::AssemblyMapCG that allows for coupled fields [u,v,w] instead of individual scalar fields u, v and w. More...
 
class  CoupledLinearNS
 
class  CoupledLocalToGlobalC0ContMap
 
struct  coupledSolverMatrices
 
class  CourtemancheRamirezNattel98
 
struct  DependentFile
 
struct  DiagonalMatrixFuncs
 
class  DiffusionLDGNS
 
class  Dummy
 
class  EigenValuesAdvection
 
class  EmpiricalPressureArea
 
class  EnforceEntropyPressure
 Outflow characteristic boundary conditions for compressible flow problems. More...
 
class  EnforceEntropyTotalEnthalpy
 Outflow characteristic boundary conditions for compressible flow problems. More...
 
class  EnforceEntropyVelocity
 Outflow characteristic boundary conditions for compressible flow problems. More...
 
struct  EnumHash
 
class  EquationOfState
 Encapsulates equations of state allowing us to obtain thermodynamic properties: most relations are in the form X(rho,e) More...
 
class  ErrorUtil
 
class  EulerCFE
 
class  EulerImplicitCFE
 
class  ExactSolverToro
 
class  Extrapolate
 
class  ExtrapOrder0BC
 Extrapolation of order 0 for all the variables such that, at the boundaries, a trivial Riemann problem is solved. More...
 
class  FentonKarma
 
class  FilterAeroForcesSPM
 
class  FilterBenchmark
 Records activation and repolarisation times. More...
 
class  FilterCellHistoryPoints
 
class  FilterCheckpointCellModel
 
class  FilterElectrogram
 
class  FilterHilbertFFTPhase
 
class  FilterMovingBody
 
class  FilterOffsetPhase
 
class  FlagList
 Defines a list of flags. More...
 
class  ForcingAxiSymmetric
 
class  ForcingMovingBody
 
class  ForcingQuasi1D
 
class  ForcingStabilityCoupledLNS
 
struct  FourD
 
class  Fox02
 
struct  FullMatrixFuncs
 
class  Helmholtz
 
struct  HighOrderOutflow
 
class  HLLCSolver
 
class  HLLSolver
 
class  IdealGasEoS
 Ideal gas equation of state: p = rho * R * T. More...
 
class  ImageWarpingSystem
 
class  ImplicitExtrapolate
 
class  IncNavierStokes
 This class is the base class for Navier Stokes problems. More...
 
struct  InterfacePoint
 
class  IsentropicVortexBC
 Wall boundary conditions for compressible flow problems. More...
 
struct  IsSharedPointer
 
struct  IsSharedPointer< std::shared_ptr< DataType > >
 
struct  IsVector
 
struct  IsVector< NekVector< DataType > >
 
class  IterativeElasticSystem
 Class for iterative elastic system, in which linear elasticity is applied in substeps to attain a large deformation. More...
 
class  Laplace
 
class  LaxFriedrichsSolver
 
class  LEE
 
class  LEELaxFriedrichsSolver
 
class  LEESolver
 
class  LEEUpwindSolver
 
class  LinearAverageSolver
 
class  LinearElasticSystem
 Base class for linear elastic system. More...
 
class  LinearHLLSolver
 
class  LinearisedAdvection
 
class  LinearSWE
 
class  LinearSWESolver
 
class  LinearSystem
 
struct  LinearSystemSolver
 
struct  LowerTriangularBandedMatrixFuncs
 
struct  LowerTriangularMatrixFuncs
 
class  LuoRudy91
 
class  MappingExtrapolate
 
class  Matrix
 
class  MemoryManager
 General purpose memory allocation routines with the ability to allocate from thread specific memory pools. More...
 
class  MemPool
 
class  Metric
 Base class for all metrics. Metric represents a test metric that can be used to evaluate the functionality or performance of a Nektar++ executable. More...
 
class  MetricEigenvalue
 
class  MetricExecutionTime
 Metric that finds the execution time in an output and tests it against an accepted value and tolerance. More...
 
struct  MetricExecutionTimeFieldValue
 Data structure for an execution time field value. More...
 
class  MetricFactory
 Datatype of the NekFactory used to instantiate classes derived from the Advection class. More...
 
class  MetricFile
 
class  MetricFileExists
 
class  MetricL2
 
class  MetricLInf
 
class  MetricNoWarning
 
class  MetricPrecon
 
class  MetricPyUnitTest
 
class  MetricRegex
 
struct  MetricRegexFieldValue
 Data structure for a Regex value to match. More...
 
class  MMFAdvection
 
class  MMFDiffusion
 A model for cardiac conduction. More...
 
class  MMFMaxwell
 
class  MMFSWE
 
class  Monodomain
 A model for cardiac conduction. More...
 
class  NavierStokesAdvection
 
class  NavierStokesCFE
 
class  NavierStokesCFEAxisym
 
class  NavierStokesImplicitCFE
 
class  NekMatrix
 
class  NekMatrix< DataType, StandardMatrixTag >
 Standard Matrix. More...
 
class  NekMatrix< NekMatrix< DataType, InnerMatrixType >, BlockMatrixTag >
 
class  NekMatrix< NekMatrix< DataType, InnerMatrixType >, ScaledMatrixTag >
 
class  NekPoint
 
class  NekPreconCfsOperators
 
class  NekSparseDiagBlkMatrix
 
class  NekSparseMatrix
 
class  NekVector
 
class  NoAdvection
 
class  NonlinearPeregrine
 
class  NonlinearSWE
 
class  NonlinearSWESolver
 
class  NonSmoothShockCapture
 Non Smooth artificial diffusion for shock capture for compressible flow problems. More...
 
class  NoSolver
 
struct  OneD
 
struct  PairHash
 
class  PanditGilesDemir03
 
class  ParseUtils
 
class  PengRobinsonEoS
 Peng-Robinson equation of state: p = RT/(1/rho - b) - a*Alpha(T/Tc) / (1/rho^2 + 2*b/rho - b^2) with a = 0.45724 * (R*Tc)^2 / Pc b = 0.0778 * (R*Tc) / Pc Alpha(T/Tc) = [1 + fw * (1 - sqrt(T/ Tc))]^2 fw = 0.37464 + 1.54226*omega - 0.2699*omega*omega. More...
 
class  Poisson
 
class  PowerPressureArea
 
class  PreconCfs
 
class  PreconCfsBRJ
 
class  PressureInflowFileBC
 Pressure inflow boundary conditions for compressible flow problems where either the density and the velocities are assigned from a file or the full state is assigned from a file (depending on the problem type, either subsonic or supersonic). More...
 
class  PressureMachTemperatureBC
 Boundary condition in terms of pressure, Mach number and temperature. P should be defined in the "rho" entry, T in the "E" entry and the Mach number in each direction in the corresponding momentum variable. This state is converted to conserved variables and a Dirichlet condition is applied. More...
 
class  PressureOutflowBC
 Pressure outflow boundary conditions for compressible flow problems. More...
 
class  PressureOutflowNonReflectiveBC
 Pressure outflow non-reflective boundary conditions for compressible flow problems. More...
 
class  Projection
 
class  Protocol
 Protocol base class. More...
 
class  ProtocolS1
 Protocol base class. More...
 
class  ProtocolS1S2
 Protocol base class. More...
 
class  ProtocolSingle
 Protocol base class. More...
 
class  PulseWaveBoundary
 
class  PulseWavePressureArea
 
class  PulseWavePropagation
 
class  PulseWaveSystem
 Base class for unsteady solvers. More...
 
struct  PushBackFunctor
 Helper functors for holding a vector of numbers to be parsed by boost::spirit. More...
 
class  QInflow
 
struct  RawType
 
struct  RawType< const std::shared_ptr< T > >
 
struct  RawType< const volatile std::shared_ptr< T > >
 
struct  RawType< std::shared_ptr< T > >
 
struct  RawType< volatile std::shared_ptr< T > >
 
class  RCROutflow
 
class  RedlichKwongEoS
 Redlich-Kwong equation of state: p = RT/(1/rho - b) - a/( sqrt(T / Tc) * (1/rho^2 + b/rho) with a = 0.42748 * (R*Tc)^2 / Pc b = 0.08664 * (R*Tc) / Pc. More...
 
class  RiemannInvariantBC
 Outflow characteristic boundary conditions for compressible flow problems. More...
 
class  RinglebFlowBC
 Wall boundary conditions for compressible flow problems. More...
 
class  RoeSolver
 
class  RoeSolverSIMD
 
class  ROutflow
 
class  ShallowWaterSystem
 Base class for unsteady solvers. More...
 
class  SkewSymmetricAdvection
 
class  SmoothedProfileMethod
 
class  StagnationInflowBC
 Stagnation conditions inflow boundary conditions for compressible flow problems where the energy and density are prescribed. More...
 
class  StandardExtrapolate
 
class  SteadyAdvectionDiffusion
 
class  SteadyAdvectionDiffusionReaction
 
class  Stimulus
 Stimulus base class. More...
 
class  StimulusCirc
 Protocol base class. More...
 
class  StimulusPoint
 Protocol base class. More...
 
class  StimulusRect
 Protocol base class. More...
 
class  StorageSmvBsr
 
class  SubSteppingExtrapolate
 
class  SubSteppingExtrapolateWeakPressure
 
struct  SymmetricBandedMatrixFuncs
 
struct  SymmetricMatrixFuncs
 
class  SymmetryBC
 Symmetry boundary conditions for compressible flow problems. More...
 
class  TemplatePressureArea
 
class  TenTusscher06
 
class  TerminalOutflow
 A global linear system. More...
 
class  TestData
 The TestData class is responsible for parsing a test XML file and storing the data. More...
 
struct  TesterException
 Subclass of std::runtime_error to handle exceptions raised by Tester. More...
 
struct  ThreeD
 
class  TimeDependentBC
 Time dependent boundary condition. More...
 
class  TimeDependentInflow
 
struct  TriangularBandedMatrixFuncs
 
struct  TriangularMatrixFuncs
 
struct  TwoD
 
class  UInflow
 A global linear system. More...
 
class  UndefinedInOutflow
 
class  UnsteadyAdvection
 
class  UnsteadyAdvectionDiffusion
 
class  UnsteadyDiffusion
 
class  UnsteadyInviscidBurgers
 
class  UnsteadyReactionDiffusion
 
class  UnsteadyViscousBurgers
 
struct  UpperTriangularBandedMatrixFuncs
 
struct  UpperTriangularMatrixFuncs
 
class  UpwindPulseSolver
 
class  VanDerWaalsEoS
 van der Waals equation of state: p = RT/(1/rho - b) - a * rho^2 with a = 27/64 * (R*Tc)^2 / Pc b = 1/8 * (R*Tc) / Pc More...
 
class  VariableConverter
 
class  VCSImplicit
 
class  VCSMapping
 
class  VCSWeakPressure
 
class  VelocityCorrectionScheme
 
class  VortexWaveInteraction
 
class  WallBC
 Wall boundary conditions for compressible flow problems. More...
 
class  WallViscousBC
 Wall boundary conditions for viscous compressible flow problems. More...
 
class  WeakPressureExtrapolate
 
class  Winslow99
 
struct  WomersleyParams
 

Typedefs

typedef double NekDouble
 
typedef float NekSingle
 
typedef std::int32_t NekInt
 
typedef std::int32_t NekInt32
 
typedef std::int64_t NekInt64
 
typedef std::uint32_t NekUInt
 
typedef std::uint32_t NekUInt32
 
typedef std::uint64_t NekUInt64
 
template<typename T >
using RawType_t = typename RawType< T >::type
 
template<class T >
using TensorOfArray2D = Array< OneD, Array< OneD, T > >
 
template<class T >
using TensorOfArray3D = Array< OneD, Array< OneD, Array< OneD, T > > >
 
template<class T >
using TensorOfArray4D = Array< OneD, Array< OneD, Array< OneD, Array< OneD, T > > > >
 
template<class T >
using TensorOfArray5D = Array< OneD, Array< OneD, Array< OneD, Array< OneD, Array< OneD, T > > > > >
 
typedef std::shared_ptr< NekMatrix< NekDouble, StandardMatrixTag > > SharedNekMatrixPtr
 
typedef NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag > DNekScalMat
 
typedef std::shared_ptr< DNekScalMatDNekScalMatSharedPtr
 
typedef std::shared_ptr< NekMatrix< NekSingle, StandardMatrixTag > > SharedSNekMatrixPtr
 
typedef NekMatrix< NekMatrix< NekSingle, StandardMatrixTag >, ScaledMatrixTag > SNekScalMat
 
typedef std::shared_ptr< SNekScalMatSNekScalMatSharedPtr
 
typedef NekVector< NekDoubleDNekVec
 
typedef NekMatrix< NekDouble, StandardMatrixTag > DNekMat
 
typedef NekMatrix< NekDouble, StandardMatrixTag > DenseMatrix
 
typedef NekMatrix< DenseMatrix, ScaledMatrixTag > ScaledMatrix
 
typedef NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, BlockMatrixTag > DNekBlkMat
 
typedef NekMatrix< DenseMatrix, BlockMatrixTag > BlockMatrix
 
typedef NekMatrix< NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, BlockMatrixTag >, BlockMatrixTag > BlkMatDNekBlkMat
 
typedef NekMatrix< NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag >, BlockMatrixTag > DNekScalBlkMat
 
typedef NekMatrix< NekMatrix< NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag >, BlockMatrixTag >, BlockMatrixTag > BlkMatDNekScalBlkMat
 
typedef std::shared_ptr< DNekMatDNekMatSharedPtr
 
typedef std::shared_ptr< DNekBlkMatDNekBlkMatSharedPtr
 
typedef std::shared_ptr< BlkMatDNekBlkMatBlkMatDNekBlkMatSharedPtr
 
typedef std::shared_ptr< DNekScalBlkMatDNekScalBlkMatSharedPtr
 
typedef std::shared_ptr< BlkMatDNekScalBlkMatBlkMatDNekScalBlkMatSharedPtr
 
typedef LinearSystem DNekLinSys
 
typedef std::shared_ptr< DNekLinSysDNekLinSysSharedPtr
 
typedef LinearSystem DNekScalLinSys
 
typedef std::shared_ptr< DNekScalLinSysDNekScalLinSysSharedPtr
 
typedef NekVector< NekSingleSNekVec
 
typedef NekMatrix< NekSingle, StandardMatrixTag > SNekMat
 
typedef NekMatrix< NekSingle, StandardMatrixTag > SDenseMatrix
 
typedef NekMatrix< SDenseMatrix, ScaledMatrixTag > SScaledMatrix
 
typedef NekMatrix< NekMatrix< NekSingle, StandardMatrixTag >, BlockMatrixTag > SNekBlkMat
 
typedef NekMatrix< SDenseMatrix, BlockMatrixTag > SBlockMatrix
 
typedef NekMatrix< NekMatrix< NekMatrix< NekSingle, StandardMatrixTag >, BlockMatrixTag >, BlockMatrixTag > BlkMatSNekBlkMat
 
typedef NekMatrix< NekMatrix< NekMatrix< NekSingle, StandardMatrixTag >, ScaledMatrixTag >, BlockMatrixTag > SNekScalBlkMat
 
typedef NekMatrix< NekMatrix< NekMatrix< NekMatrix< NekSingle, StandardMatrixTag >, ScaledMatrixTag >, BlockMatrixTag >, BlockMatrixTag > BlkMatSNekScalBlkMat
 
typedef std::shared_ptr< SNekMatSNekMatSharedPtr
 
typedef std::shared_ptr< SNekBlkMatSNekBlkMatSharedPtr
 
typedef std::shared_ptr< BlkMatSNekBlkMatBlkMatSNekBlkMatSharedPtr
 
typedef std::shared_ptr< SNekScalBlkMatSNekScalBlkMatSharedPtr
 
typedef std::shared_ptr< BlkMatSNekScalBlkMatBlkMatSNekScalBlkMatSharedPtr
 
typedef unsigned int IndexType
 
typedef Array< OneD, IndexTypeIndexVector
 
typedef std::pair< IndexType, IndexTypeCoordType
 
typedef NekDouble COOEntryType
 
typedef std::map< CoordType, NekDoubleCOOMatType
 
typedef COOMatType::const_iterator COOMatTypeConstIt
 
typedef std::shared_ptr< COOMatTypeCOOMatTypeSharedPtr
 
typedef Array< OneD, COOMatTypeCOOMatVector
 
typedef Array< OneD, NekDoubleBCOEntryType
 
typedef std::map< CoordType, BCOEntryTypeBCOMatType
 
typedef BCOMatType::const_iterator BCOMatTypeConstIt
 
typedef std::shared_ptr< BCOMatTypeBCOMatTypeSharedPtr
 
typedef Array< OneD, BCOMatTypeBCOMatVector
 
typedef std::vector< std::pair< std::string, std::string > > SummaryList
 
typedef std::shared_ptr< CellModelCellModelSharedPtr
 A shared pointer to an EquationSystem object. More...
 
typedef LibUtilities::NekFactory< std::string, CellModel, const LibUtilities::SessionReaderSharedPtr &, const MultiRegions::ExpListSharedPtr & > CellModelFactory
 Datatype of the NekFactory used to instantiate classes derived from the EquationSystem class. More...
 
typedef std::shared_ptr< ProtocolProtocolSharedPtr
 A shared pointer to an EquationSystem object. More...
 
typedef LibUtilities::NekFactory< std::string, Protocol, const LibUtilities::SessionReaderSharedPtr &, const TiXmlElement * > ProtocolFactory
 Datatype of the NekFactory used to instantiate classes derived from the EquationSystem class. More...
 
typedef std::shared_ptr< StimulusStimulusSharedPtr
 A shared pointer to an EquationSystem object. More...
 
typedef LibUtilities::NekFactory< std::string, Stimulus, const LibUtilities::SessionReaderSharedPtr &, const MultiRegions::ExpListSharedPtr &, const TiXmlElement * > StimulusFactory
 Datatype of the NekFactory used to instantiate classes derived from the EquationSystem class. More...
 
typedef std::shared_ptr< ArtificialDiffusionArtificialDiffusionSharedPtr
 A shared pointer to a artificial diffusion object. More...
 
typedef LibUtilities::NekFactory< std::string, ArtificialDiffusion, const LibUtilities::SessionReaderSharedPtr &, const Array< OneD, MultiRegions::ExpListSharedPtr > &, const int > ArtificialDiffusionFactory
 Declaration of the artificial diffusion factory. More...
 
typedef std::shared_ptr< CFSBndCondCFSBndCondSharedPtr
 A shared pointer to a boundary condition object. More...
 
typedef LibUtilities::NekFactory< std::string, CFSBndCond, const LibUtilities::SessionReaderSharedPtr &, const Array< OneD, MultiRegions::ExpListSharedPtr > &, const Array< OneD, Array< OneD, NekDouble > > &, const int, const int, const int > CFSBndCondFactory
 Declaration of the boundary condition factory. More...
 
typedef std::shared_ptr< DiffusionLDGNSDiffusionLDGNSSharedPtr
 
typedef std::shared_ptr< EquationOfStateEquationOfStateSharedPtr
 A shared pointer to an equation of state object. More...
 
typedef LibUtilities::NekFactory< std::string, EquationOfState, const LibUtilities::SessionReaderSharedPtr & > EquationOfStateFactory
 Declaration of the equation of state factory. More...
 
using vec_t = tinysimd::simd< NekDouble >
 
typedef std::shared_ptr< VariableConverterVariableConverterSharedPtr
 
typedef LibUtilities::NekFactory< std::string, PreconCfs, const Array< OneD, MultiRegions::ExpListSharedPtr > &, const LibUtilities::SessionReaderSharedPtr &, const LibUtilities::CommSharedPtr & > PreconCfsFactory
 Declaration of the boundary condition factory. More...
 
typedef std::shared_ptr< PreconCfsPreconCfsSharedPtr
 
typedef struct Nektar::coupledSolverMatrices CoupledSolverMatrices
 
typedef std::shared_ptr< CoupledLocalToGlobalC0ContMapCoupledLocalToGlobalC0ContMapSharedPtr
 
typedef std::shared_ptr< ExtrapolateExtrapolateSharedPtr
 
typedef LibUtilities::NekFactory< std::string, Extrapolate, const LibUtilities::SessionReaderSharedPtr &, Array< OneD, MultiRegions::ExpListSharedPtr > &, MultiRegions::ExpListSharedPtr &, const Array< OneD, int > &, const SolverUtils::AdvectionSharedPtr & > ExtrapolateFactory
 
typedef std::shared_ptr< HighOrderOutflowHighOrderOutflowSharedPtr
 
typedef std::shared_ptr< ImplicitExtrapolateImplicitExtrapolateSharedPtr
 
typedef std::complex< double > NekComplexDouble
 
typedef std::shared_ptr< WomersleyParamsWomersleyParamsSharedPtr
 
typedef std::shared_ptr< IncNavierStokesIncNavierStokesSharedPtr
 
typedef std::shared_ptr< MappingExtrapolateMappingExtrapolateSharedPtr
 
typedef std::shared_ptr< SmoothedProfileMethodSmoothedProfileMethodSharedPtr
 
typedef std::shared_ptr< StandardExtrapolateStandardExtrapolateSharedPtr
 
typedef std::shared_ptr< SubSteppingExtrapolateSubSteppingExtrapolateSharedPtr
 
typedef std::shared_ptr< SubSteppingExtrapolateWeakPressureSubSteppingExtrapolateWeakPressureSharedPtr
 
typedef std::shared_ptr< VCSMappingVCSMappingSharedPtr
 
typedef std::shared_ptr< VelocityCorrectionSchemeVelocityCorrectionSchemeSharedPtr
 
typedef std::shared_ptr< VCSImplicitVCSImplicitSharedPtr
 
typedef std::shared_ptr< VCSWeakPressureVCSWeakPressureSharedPtr
 
typedef std::shared_ptr< WeakPressureExtrapolateWeakPressureExtrapolateSharedPtr
 
typedef std::shared_ptr< FilterAeroForcesSPMFilterAeroForcesSPMSharedPtr
 
typedef std::shared_ptr< FilterMovingBodyFilterMovingBodySharedPtr
 
typedef std::map< std::string, std::string > FilterParams
 
typedef std::pair< std::string, FilterParamsFilterMap
 
typedef std::shared_ptr< CoupledAssemblyMapCoupledAssemblyMapSharedPtr
 
typedef std::shared_ptr< AInflowAInflowSharedPtr
 
typedef std::shared_ptr< BetaPressureAreaBetaPressureAreaSharedPtr
 
typedef std::shared_ptr< EmpiricalPressureAreaEmpiricalPressureAreaSharedPtr
 
typedef std::shared_ptr< PowerPressureAreaPowerPressureAreaSharedPtr
 
typedef std::shared_ptr< PulseWaveBoundaryPulseWaveBoundarySharedPtr
 
typedef LibUtilities::NekFactory< std::string, PulseWaveBoundary, Array< OneD, MultiRegions::ExpListSharedPtr > &, const LibUtilities::SessionReaderSharedPtr &, PulseWavePressureAreaSharedPtr & > BoundaryFactory
 
typedef std::shared_ptr< PulseWavePressureAreaPulseWavePressureAreaSharedPtr
 
typedef LibUtilities::NekFactory< std::string, PulseWavePressureArea, Array< OneD, MultiRegions::ExpListSharedPtr > &, const LibUtilities::SessionReaderSharedPtr & > PressureAreaFactory
 
typedef std::shared_ptr< InterfacePointInterfacePointShPtr
 
typedef std::shared_ptr< PulseWaveSystemPulseWaveSystemSharedPtr
 
typedef std::shared_ptr< QInflowQInflowSharedPtr
 
typedef std::shared_ptr< RCROutflowRCROutflowSharedPtr
 
typedef std::shared_ptr< ROutflowROutflowSharedPtr
 
typedef std::shared_ptr< TemplatePressureAreaTemplatePressureAreaSharedPtr
 
typedef std::shared_ptr< TerminalOutflowTerminalOutflowSharedPtr
 Pointer to a PulseWaveOutflow object. More...
 
typedef std::shared_ptr< TimeDependentInflowTimeDependentInflowSharedPtr
 
typedef std::shared_ptr< UInflowUInflowSharedPtr
 Pointer to a PulseWaveOutflow object. More...
 
typedef std::shared_ptr< UndefinedInOutflowUndefinedInOutflowSharedPtr
 
typedef std::shared_ptr< MetricMetricSharedPtr
 A shared pointer to an EquationSystem object. More...
 

Enumerations

enum  Direction { xDir = 0 , yDir = 1 , zDir = 2 }
 
enum  OutputFormat {
  eTecplot , eTecplotZones , eTecplotSingleBlock , eGmsh ,
  eGnuplot
}
 Enumeration a flags for output format. More...
 
enum  FlagType { eUseGlobal }
 Enumeration of flags for passing a list of options. More...
 
enum  AllowWrappingOfConstArrays { eVECTOR_WRAPPER }
 
enum  MatrixStorage {
  eFULL , eDIAGONAL , eUPPER_TRIANGULAR , eLOWER_TRIANGULAR ,
  eSYMMETRIC , ePOSITIVE_DEFINITE_SYMMETRIC , eBANDED , eSYMMETRIC_BANDED ,
  ePOSITIVE_DEFINITE_SYMMETRIC_BANDED , eUPPER_TRIANGULAR_BANDED , eLOWER_TRIANGULAR_BANDED
}
 
enum  PointerWrapper { eWrapper , eCopy }
 Specifies if the pointer passed to a NekMatrix or NekVector is copied into an internal representation or used directly. More...
 
enum  TestType {
  eTestPlane , eTestCube , eTestLinearSphere , eTestNonlinearSphere ,
  eFHNStandard , eFHNRogers , eFHNAlievPanf , SIZE_TestType ,
  eTestPlane , eTestSteadyZonal , eTestUnsteadyZonal , eTestIsolatedMountain ,
  eTestUnstableJet , eTestRossbyWave , SIZE_TestType
}
 
enum  InitWaveType {
  eLeft , eBothEnds , eCenter , eLeftBottomCorner ,
  ePoint , eSpiralDock , SIZE_InitWaveType
}
 
enum  HBCType { eNOHBC , eHBCNeumann , eOBC , eConvectiveOBC }
 
enum  SolverType {
  eNoSolverType , eCoupledLinearisedNS , eSmoothedProfileMethod , eVCSMapping ,
  eVelocityCorrectionScheme , eVCSWeakPressure , eWeakPressure , eVCSImplicit ,
  eImplicit
}
 
enum  EquationType {
  eNoEquationType , eSteadyStokes , eSteadyOseen , eSteadyLinearisedNS ,
  eUnsteadyStokes , eUnsteadyLinearisedNS , eUnsteadyNavierStokes , eSteadyNavierStokes ,
  eEquationTypeSize
}
 
enum  AdvectionForm {
  eNoAdvectionForm , eConvective , eNonConservative , eLinearised ,
  eAdjoint , eSkewSymmetric , eNoAdvection , eAdvectionFormSize
}
 
enum  UpwindTypePulse { eNotSetPulse , eUpwindPulse , SIZE_UpwindTypePulse }
 
enum  TestType {
  eTestPlane , eTestCube , eTestLinearSphere , eTestNonlinearSphere ,
  eFHNStandard , eFHNRogers , eFHNAlievPanf , SIZE_TestType ,
  eTestPlane , eTestSteadyZonal , eTestUnsteadyZonal , eTestIsolatedMountain ,
  eTestUnstableJet , eTestRossbyWave , SIZE_TestType
}
 
enum  ProblemType { eGeneral , eSolitaryWave , SIZE_ProblemType }
 
enum  VWIIterationType {
  eFixedAlpha , eFixedWaveForcing , eFixedAlphaWaveForcing , eFixedWaveForcingWithSubIterationOnAlpha ,
  eVWIIterationTypeSize
}
 

Functions

template<typename Dim , typename DataType , typename ExtentListType >
std::shared_ptr< boost::multi_array_ref< DataType, Dim::Value > > CreateStorage (const ExtentListType &extent)
 
template<typename DataType >
std::shared_ptr< boost::multi_array_ref< DataType, 1 > > CreateStorage (size_t d1)
 
template<typename DataType >
std::shared_ptr< boost::multi_array_ref< DataType, 2 > > CreateStorage (size_t d1, size_t d2)
 
template<typename DataType >
std::shared_ptr< boost::multi_array_ref< DataType, 3 > > CreateStorage (size_t d1, size_t d2, size_t d3)
 
void hash_combine (std::size_t &seed)
 
template<typename T , typename... Args>
void hash_combine (std::size_t &seed, const T &v, Args... args)
 
template<typename T , typename... Args>
std::size_t hash_combine (const T &v, Args... args)
 
template<typename Iter >
std::size_t hash_range (Iter first, Iter last)
 
template<typename Iter >
void hash_range (std::size_t &seed, Iter first, Iter last)
 
template<typename T >
bool IsEqualImpl (const T &lhs, const T &rhs, std::false_type)
 
template<typename T >
bool IsEqualImpl (const T &lhs, const T &rhs, std::true_type)
 
template<typename T >
bool IsEqual (const T &lhs, const T &rhs)
 
template<typename T1 , typename T2 >
bool operator== (const Array< OneD, T1 > &lhs, const Array< OneD, T2 > &rhs)
 
template<typename T1 , typename T2 >
bool operator!= (const Array< OneD, T1 > &lhs, const Array< OneD, T2 > &rhs)
 
template<typename DataType >
Array< OneD, DataType > operator+ (const Array< OneD, DataType > &lhs, typename Array< OneD, DataType >::size_type offset)
 
template<typename DataType >
Array< OneD, DataType > operator+ (typename Array< OneD, DataType >::size_type offset, const Array< OneD, DataType > &rhs)
 
template<typename ConstDataType , typename DataType >
void CopyArray (const Array< OneD, ConstDataType > &source, Array< OneD, DataType > &dest)
 
template<typename ConstDataType , typename DataType >
void CopyArrayN (const Array< OneD, ConstDataType > &source, Array< OneD, DataType > &dest, typename Array< OneD, DataType >::size_type n)
 
template<typename T1 , typename T2 >
bool operator== (const Array< TwoD, T1 > &lhs, const Array< TwoD, T2 > &rhs)
 
template<typename T1 , typename T2 >
bool operator!= (const Array< TwoD, T1 > &lhs, const Array< TwoD, T2 > &rhs)
 
template<typename InnerMatrixType >
NekMatrix< InnerMatrixType, BlockMatrixTag > Transpose (NekMatrix< InnerMatrixType, BlockMatrixTag > &rhs)
 
template<typename ResultDataType , typename LhsDataType , typename LhsMatrixType >
void Multiply (NekMatrix< ResultDataType, StandardMatrixTag > &result, const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const ResultDataType &rhs)
 
 NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX (Multiply, NEKTAR_ALL_MATRIX_TYPES,(1,(void)),(1,(DNekMat &)),(1,(const NekDouble &))) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX(Multiply
 
template<typename DataType , typename LhsDataType , typename LhsMatrixType >
SNekMat const NekSingle &NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Multiply (const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const DataType &rhs)
 
 NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX (Multiply, NEKTAR_ALL_MATRIX_TYPES,(1,(DNekMat)),(0,()),(1,(const NekDouble &))) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX(Multiply
 
template<typename RhsDataType , typename RhsMatrixType , typename ResultDataType >
const NekSingle &void Multiply (NekMatrix< ResultDataType, StandardMatrixTag > &result, const ResultDataType &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
 NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX (Multiply, NEKTAR_ALL_MATRIX_TYPES,(1,(void)),(2,(DNekMat &, const NekDouble &)),(0,())) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX(Multiply
 
template<typename DataType , typename RhsDataType , typename RhsMatrixType >
SNekMat const NekSingle NekMatrix< typename NekMatrix< RhsDataType, RhsMatrixType >::NumberType, StandardMatrixTag > Multiply (const DataType &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
 NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX (Multiply, NEKTAR_ALL_MATRIX_TYPES,(1,(DNekMat)),(1,(const NekDouble &)),(0,())) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX(Multiply
 
template<typename LhsDataType >
const NekSingle void MultiplyEqual (NekMatrix< LhsDataType, StandardMatrixTag > &lhs, typename boost::call_traits< LhsDataType >::const_reference rhs)
 
 NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX (MultiplyEqual,(1,(DNekMat &)),(1,(void)),(0,()),(1,(const NekDouble &))) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX(MultiplyEqual
 
template<typename ResultType , typename LhsDataType , typename RhsDataType , typename LhsMatrixType , typename RhsMatrixType >
SNekMat const NekSingle &void NekMultiplyDefaultImpl (NekMatrix< ResultType, StandardMatrixTag > &result, const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename ResultType , typename LhsDataType , typename RhsDataType , typename LhsMatrixType , typename RhsMatrixType >
void NekMultiplyFullMatrixFullMatrix (NekMatrix< ResultType, StandardMatrixTag > &result, const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename LhsDataType , typename RhsDataType , typename DataType , typename LhsMatrixType , typename RhsMatrixType >
void Multiply (NekMatrix< DataType, StandardMatrixTag > &result, const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
 NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES (Multiply, NEKTAR_ALL_MATRIX_TYPES, NEKTAR_ALL_MATRIX_TYPES,(1,(void)),(1,(DNekMat &)),(0,())) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES(Multiply
 
template<typename DataType , typename RhsDataType , typename RhsMatrixType >
SNekMat void AddEqual (NekMatrix< DataType, StandardMatrixTag > &result, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename DataType , typename RhsDataType , typename RhsMatrixType >
void AddEqualNegatedLhs (NekMatrix< DataType, StandardMatrixTag > &result, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
 NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX (AddEqual, NEKTAR_ALL_MATRIX_TYPES,(1,(void)),(1,(DNekMat &)),(0,())) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX(AddEqual
 
template<typename DataType , typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
SNekMat SNekMat void Add (NekMatrix< DataType, StandardMatrixTag > &result, const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename DataType , typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
void AddNegatedLhs (NekMatrix< DataType, StandardMatrixTag > &result, const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
 NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES (Add, NEKTAR_ALL_MATRIX_TYPES, NEKTAR_ALL_MATRIX_TYPES,(1,(void)),(1,(DNekMat &)),(0,())) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES(Add
 
template<typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
SNekMat SNekMat NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Add (const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
 NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES (Add, NEKTAR_ALL_MATRIX_TYPES, NEKTAR_ALL_MATRIX_TYPES,(1,(DNekMat)),(0,()),(0,())) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES(Add
 
template<typename DataType , typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
void Subtract (NekMatrix< DataType, StandardMatrixTag > &result, const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename DataType , typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
void SubtractNegatedLhs (NekMatrix< DataType, StandardMatrixTag > &result, const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
 NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES (Subtract, NEKTAR_ALL_MATRIX_TYPES, NEKTAR_ALL_MATRIX_TYPES,(1,(void)),(1,(DNekMat &)),(0,())) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES(Subtract
 
SNekMat NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES (SubtractNegatedLhs, NEKTAR_ALL_MATRIX_TYPES, NEKTAR_ALL_MATRIX_TYPES,(1,(void)),(1,(DNekMat &)),(0,())) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES(SubtractNegatedLhs
 
template<typename DataType , typename RhsDataType , typename RhsMatrixType >
SNekMat SNekMat void SubtractEqual (NekMatrix< DataType, StandardMatrixTag > &result, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename DataType , typename RhsDataType , typename RhsMatrixType >
void SubtractEqualNegatedLhs (NekMatrix< DataType, StandardMatrixTag > &result, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
 NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX (SubtractEqual, NEKTAR_ALL_MATRIX_TYPES,(1,(void)),(1,(DNekMat &)),(0,())) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX(SubtractEqual
 
SNekMat NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX (SubtractEqualNegatedLhs, NEKTAR_ALL_MATRIX_TYPES,(1,(void)),(1,(DNekMat &)),(0,())) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX(SubtractEqualNegatedLhs
 
template<typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
SNekMat SNekMat NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Subtract (const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
 NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES (Subtract, NEKTAR_ALL_MATRIX_TYPES, NEKTAR_ALL_MATRIX_TYPES,(1,(DNekMat)),(0,()),(0,())) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES(Subtract
 
template<typename DataType , typename LhsDataType , typename MatrixType >
NekVector< DataType > Multiply (const NekMatrix< LhsDataType, MatrixType > &lhs, const NekVector< DataType > &rhs)
 
template<typename DataType , typename LhsDataType , typename MatrixType >
void Multiply (NekVector< DataType > &result, const NekMatrix< LhsDataType, MatrixType > &lhs, const NekVector< DataType > &rhs)
 
template<typename DataType , typename LhsInnerMatrixType >
void Multiply (NekVector< DataType > &result, const NekMatrix< LhsInnerMatrixType, BlockMatrixTag > &lhs, const NekVector< DataType > &rhs)
 
template<typename DataType , typename LhsDataType , typename MatrixType >
NekVector< DataType > operator* (const NekMatrix< LhsDataType, MatrixType > &lhs, const NekVector< DataType > &rhs)
 
void DiagonalBlockFullScalMatrixMultiply (NekVector< double > &result, const NekMatrix< NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag >, BlockMatrixTag > &lhs, const NekVector< double > &rhs)
 
void DiagonalBlockFullScalMatrixMultiply (NekVector< NekSingle > &result, const NekMatrix< NekMatrix< NekMatrix< NekSingle, StandardMatrixTag >, ScaledMatrixTag >, BlockMatrixTag > &lhs, const NekVector< NekSingle > &rhs)
 
template<typename DataType , typename LhsDataType , typename LhsMatrixType >
NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Multiply (const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const DataType &rhs)
 
template<typename RhsDataType , typename RhsMatrixType , typename ResultDataType >
void Multiply (NekMatrix< ResultDataType, StandardMatrixTag > &result, const ResultDataType &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename DataType , typename RhsDataType , typename RhsMatrixType >
NekMatrix< typename NekMatrix< RhsDataType, RhsMatrixType >::NumberType, StandardMatrixTag > Multiply (const DataType &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename DataType , typename RhsDataType , typename RhsMatrixType >
NekMatrix< typename NekMatrix< RhsDataType, RhsMatrixType >::NumberType, StandardMatrixTag > operator* (const DataType &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename DataType , typename RhsDataType , typename RhsMatrixType >
NekMatrix< typename NekMatrix< RhsDataType, RhsMatrixType >::NumberType, StandardMatrixTag > operator* (const NekMatrix< RhsDataType, RhsMatrixType > &lhs, const DataType &rhs)
 
template<typename LhsDataType >
void MultiplyEqual (NekMatrix< LhsDataType, StandardMatrixTag > &lhs, typename boost::call_traits< LhsDataType >::const_reference rhs)
 
template<typename LhsDataType , typename RhsDataType , typename LhsMatrixType , typename RhsMatrixType >
void NekMultiplyFullMatrixFullMatrix (NekMatrix< LhsDataType, StandardMatrixTag > &result, const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs, typename std::enable_if< CanGetRawPtr< NekMatrix< LhsDataType, LhsMatrixType > >::value &&CanGetRawPtr< NekMatrix< RhsDataType, RhsMatrixType > >::value >::type *p=nullptr)
 
template<typename RhsInnerType , typename RhsMatrixType >
void MultiplyEqual (NekMatrix< RhsInnerType, StandardMatrixTag > &result, const NekMatrix< RhsInnerType, RhsMatrixType > &rhs, typename std::enable_if< std::is_same< RawType_t< typename NekMatrix< RhsInnerType, RhsMatrixType >::NumberType >, RhsInnerType >::value &&CanGetRawPtr< NekMatrix< RhsInnerType, RhsMatrixType > >::value >::type *t=0)
 
template<typename DataType , typename RhsInnerType , typename RhsMatrixType >
void MultiplyEqual (NekMatrix< DataType, StandardMatrixTag > &result, const NekMatrix< RhsInnerType, RhsMatrixType > &rhs, typename std::enable_if< !std::is_same< RawType_t< typename NekMatrix< RhsInnerType, RhsMatrixType >::NumberType >, DataType >::value||!CanGetRawPtr< NekMatrix< RhsInnerType, RhsMatrixType > >::value >::type *t=0)
 
template<typename LhsDataType , typename RhsDataType , typename LhsMatrixType , typename RhsMatrixType >
NekMatrix< typename std::remove_const< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType >::type, StandardMatrixTag > Multiply (const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename LhsDataType , typename RhsDataType , typename LhsMatrixType , typename RhsMatrixType >
NekMatrix< typename std::remove_const< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType >::type, StandardMatrixTag > operator* (const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename DataType , typename RhsDataType , typename RhsMatrixType >
void AddEqual (NekMatrix< DataType, StandardMatrixTag > &result, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename DataType , typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
void Add (NekMatrix< DataType, StandardMatrixTag > &result, const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Add (const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > operator+ (const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename DataType , typename RhsDataType , typename RhsMatrixType >
void SubtractEqual (NekMatrix< DataType, StandardMatrixTag > &result, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Subtract (const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > operator- (const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
 
template<typename DataType , typename LhsDataType , typename MatrixType >
void NekMultiplyUnspecializedMatrixType (DataType *result, const NekMatrix< LhsDataType, MatrixType > &lhs, const DataType *rhs)
 
template<typename DataType , typename LhsDataType , typename MatrixType >
void NekMultiplyDiagonalMatrix (DataType *result, const NekMatrix< LhsDataType, MatrixType > &lhs, const DataType *rhs)
 
template<typename DataType , typename LhsDataType >
void NekMultiplyDiagonalMatrix (DataType *result, const NekMatrix< LhsDataType, StandardMatrixTag > &lhs, const DataType *rhs)
 
template<typename DataType , typename LhsDataType , typename MatrixType >
void NekMultiplyBandedMatrix (DataType *result, const NekMatrix< LhsDataType, MatrixType > &lhs, const DataType *rhs, typename std::enable_if< CanGetRawPtr< NekMatrix< LhsDataType, MatrixType > >::value >::type *p=nullptr)
 
template<typename DataType , typename LhsDataType >
void NekMultiplyBandedMatrix (DataType *result, const NekMatrix< LhsDataType, BlockMatrixTag > &lhs, const DataType *rhs, typename std::enable_if< !CanGetRawPtr< NekMatrix< LhsDataType, BlockMatrixTag > >::value >::type *p=nullptr)
 
template<typename DataType , typename LhsInnerMatrixType >
void FullBlockMatrixMultiply (NekVector< DataType > &result, const NekMatrix< LhsInnerMatrixType, BlockMatrixTag > &lhs, const NekVector< DataType > &rhs)
 
template<typename DataType , typename LhsInnerMatrixType >
void DiagonalBlockMatrixMultiply (NekVector< DataType > &result, const NekMatrix< LhsInnerMatrixType, BlockMatrixTag > &lhs, const NekVector< DataType > &rhs)
 
template<typename DataType >
void NekMultiplyLowerTriangularMatrix (DataType *result, const NekMatrix< DataType, StandardMatrixTag > &lhs, const DataType *rhs)
 
template<typename DataType >
void NekMultiplyLowerTriangularMatrix (DataType *result, const NekMatrix< NekMatrix< DataType, StandardMatrixTag >, ScaledMatrixTag > &lhs, const DataType *rhs)
 
template<typename DataType , typename LhsDataType , typename MatrixType >
void NekMultiplyLowerTriangularMatrix (DataType *result, const NekMatrix< LhsDataType, MatrixType > &lhs, const DataType *rhs)
 
template<typename DataType >
void NekMultiplyUpperTriangularMatrix (DataType *result, const NekMatrix< DataType, StandardMatrixTag > &lhs, const DataType *rhs)
 
template<typename DataType >
void NekMultiplyUpperTriangularMatrix (DataType *result, const NekMatrix< NekMatrix< DataType, StandardMatrixTag >, ScaledMatrixTag > &lhs, const DataType *rhs)
 
template<typename DataType , typename LhsDataType , typename MatrixType >
void NekMultiplyUpperTriangularMatrix (DataType *result, const NekMatrix< LhsDataType, MatrixType > &lhs, const DataType *rhs)
 
template<typename DataType , typename InnerMatrixType , typename MatrixTag >
void NekMultiplySymmetricMatrix (DataType *result, const NekMatrix< InnerMatrixType, MatrixTag > &lhs, const DataType *rhs, typename std::enable_if< CanGetRawPtr< NekMatrix< InnerMatrixType, MatrixTag > >::value >::type *p=nullptr)
 
template<typename DataType , typename InnerMatrixType , typename MatrixTag >
void NekMultiplySymmetricMatrix (DataType *result, const NekMatrix< InnerMatrixType, MatrixTag > &lhs, const DataType *rhs, typename std::enable_if< !CanGetRawPtr< NekMatrix< InnerMatrixType, MatrixTag > >::value >::type *p=nullptr)
 
template<typename DataType , typename InnerMatrixType , typename MatrixTag >
void NekMultiplyFullMatrix (DataType *result, const NekMatrix< InnerMatrixType, MatrixTag > &lhs, const DataType *rhs, typename std::enable_if< CanGetRawPtr< NekMatrix< InnerMatrixType, MatrixTag > >::value >::type *p=nullptr)
 
template<typename DataType , typename InnerMatrixType , typename MatrixTag >
void NekMultiplyFullMatrix (DataType *result, const NekMatrix< InnerMatrixType, MatrixTag > &lhs, const DataType *rhs, typename std::enable_if< !CanGetRawPtr< NekMatrix< InnerMatrixType, MatrixTag > >::value >::type *p=nullptr)
 
template<typename DataType , typename LhsDataType , typename MatrixType >
void Multiply (DataType *result, const NekMatrix< LhsDataType, MatrixType > &lhs, const DataType *rhs)
 
 NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX (Multiply, NEKTAR_STANDARD_AND_SCALED_MATRICES,(1,(void)),(1,(NekVector< NekDouble > &)),(1,(const NekVector< NekDouble > &))) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX(Multiply
 
template<typename DataType , typename LhsInnerMatrixType >
NekVector< NekSingle > const NekVector< NekSingle > &void Multiply (NekVector< DataType > &result, const NekMatrix< LhsInnerMatrixType, BlockMatrixTag > &lhs, const NekVector< DataType > &rhs)
 
 NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX (Multiply, NEKTAR_BLOCK_MATRIX_TYPES,(1,(void)),(1,(NekVector< NekDouble > &)),(1,(const NekVector< NekDouble > &))) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX(Multiply
 
template<typename DataType , typename LhsDataType , typename MatrixType >
NekVector< NekSingle > const NekVector< NekSingle > &NekVector< DataType > Multiply (const NekMatrix< LhsDataType, MatrixType > &lhs, const NekVector< DataType > &rhs)
 
 NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX (Multiply, NEKTAR_ALL_MATRIX_TYPES,(1,(NekVector< NekDouble >)),(0,()),(1,(const NekVector< NekDouble > &))) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX(Multiply
 
template<typename DataType , typename FormType >
std::ostream & operator<< (std::ostream &os, const NekMatrix< DataType, FormType > &rhs)
 
template<typename DataType , typename FormType >
std::ostream & operator>> (std::ostream &os, const NekMatrix< DataType, FormType > &rhs)
 
template<typename DataType >
void negate (NekPoint< DataType > &rhs)
 
template<typename DataType >
NekPoint< DataType > operator+ (const NekPoint< DataType > &lhs, const NekPoint< DataType > &rhs)
 
template<typename DataType >
NekPoint< DataType > operator+ (typename boost::call_traits< DataType >::const_reference lhs, const NekPoint< DataType > &rhs)
 
template<typename DataType >
NekPoint< DataType > operator+ (const NekPoint< DataType > &lhs, typename boost::call_traits< DataType >::const_reference rhs)
 
template<typename DataType >
NekPoint< DataType > operator- (const NekPoint< DataType > &lhs, const NekPoint< DataType > &rhs)
 
template<typename DataType >
NekPoint< DataType > operator- (typename boost::call_traits< DataType >::const_reference lhs, const NekPoint< DataType > &rhs)
 
template<typename DataType >
NekPoint< DataType > operator- (const NekPoint< DataType > &lhs, typename boost::call_traits< DataType >::const_reference rhs)
 
template<typename DataType , typename dim , typename space , typename ScalarType >
NekPoint< DataType > operator* (const ScalarType &lhs, const NekPoint< DataType > &rhs)
 
template<typename DataType , typename dim , typename space , typename ScalarType >
NekPoint< DataType > operator* (const NekPoint< DataType > &lhs, const ScalarType &rhs)
 
template<typename DataType >
NekPoint< DataType > operator/ (const NekPoint< DataType > &lhs, typename boost::call_traits< DataType >::param_type rhs)
 
template<typename DataType >
boost::call_traits< DataType >::value_type distanceBetween (const NekPoint< DataType > &lhs, const NekPoint< DataType > &rhs)
 
template<typename DataType >
bool fromString (const std::string &str, NekPoint< DataType > &result)
 
template<typename DataType >
std::ostream & operator<< (std::ostream &os, const NekPoint< DataType > &p)
 
template<typename DataType >
void Add (NekVector< DataType > &result, const NekVector< DataType > &lhs, const NekVector< DataType > &rhs)
 
template<typename DataType >
void AddNegatedLhs (NekVector< DataType > &result, const NekVector< DataType > &lhs, const NekVector< DataType > &rhs)
 
template void Add (NekVector< NekDouble > &result, const NekVector< NekDouble > &lhs, const NekVector< NekDouble > &rhs)
 
template void AddNegatedLhs (NekVector< NekDouble > &result, const NekVector< NekDouble > &lhs, const NekVector< NekDouble > &rhs)
 
template void Add (NekVector< NekSingle > &result, const NekVector< NekSingle > &lhs, const NekVector< NekSingle > &rhs)
 
template void AddNegatedLhs (NekVector< NekSingle > &result, const NekVector< NekSingle > &lhs, const NekVector< NekSingle > &rhs)
 
template<typename DataType >
void AddEqual (NekVector< DataType > &result, const NekVector< DataType > &rhs)
 
template<typename DataType >
void AddEqualNegatedLhs (NekVector< DataType > &result, const NekVector< DataType > &rhs)
 
template void AddEqual (NekVector< NekDouble > &result, const NekVector< NekDouble > &rhs)
 
template void AddEqualNegatedLhs (NekVector< NekDouble > &result, const NekVector< NekDouble > &rhs)
 
template void AddEqual (NekVector< NekSingle > &result, const NekVector< NekSingle > &rhs)
 
template void AddEqualNegatedLhs (NekVector< NekSingle > &result, const NekVector< NekSingle > &rhs)
 
template<typename LhsDataType , typename RhsDataType >
NekVector< LhsDataType > Add (const NekVector< LhsDataType > &lhs, const NekVector< RhsDataType > &rhs)
 
template NekVector< NekDoubleAdd (const NekVector< NekDouble > &lhs, const NekVector< NekDouble > &rhs)
 
template NekVector< NekSingleAdd (const NekVector< NekSingle > &lhs, const NekVector< NekSingle > &rhs)
 
template<typename ResultDataType , typename InputDataType >
void Subtract (NekVector< ResultDataType > &result, const NekVector< InputDataType > &lhs, const NekVector< InputDataType > &rhs)
 
template<typename ResultDataType , typename InputDataType >
void SubtractNegatedLhs (NekVector< ResultDataType > &result, const NekVector< InputDataType > &lhs, const NekVector< InputDataType > &rhs)
 
template void Subtract (NekVector< NekDouble > &result, const NekVector< NekDouble > &lhs, const NekVector< NekDouble > &rhs)
 
template void SubtractNegatedLhs (NekVector< NekDouble > &result, const NekVector< NekDouble > &lhs, const NekVector< NekDouble > &rhs)
 
template void Subtract (NekVector< NekSingle > &result, const NekVector< NekSingle > &lhs, const NekVector< NekSingle > &rhs)
 
template void SubtractNegatedLhs (NekVector< NekSingle > &result, const NekVector< NekSingle > &lhs, const NekVector< NekSingle > &rhs)
 
template<typename ResultDataType , typename InputDataType >
void SubtractEqual (NekVector< ResultDataType > &result, const NekVector< InputDataType > &rhs)
 
template<typename ResultDataType , typename InputDataType >
void SubtractEqualNegatedLhs (NekVector< ResultDataType > &result, const NekVector< InputDataType > &rhs)
 
template void SubtractEqual (NekVector< NekDouble > &result, const NekVector< NekDouble > &rhs)
 
template void SubtractEqualNegatedLhs (NekVector< NekDouble > &result, const NekVector< NekDouble > &rhs)
 
template void SubtractEqual (NekVector< NekSingle > &result, const NekVector< NekSingle > &rhs)
 
template void SubtractEqualNegatedLhs (NekVector< NekSingle > &result, const NekVector< NekSingle > &rhs)
 
template<typename DataType >
NekVector< DataType > Subtract (const NekVector< DataType > &lhs, const NekVector< DataType > &rhs)
 
template NekVector< NekDoubleSubtract (const NekVector< NekDouble > &lhs, const NekVector< NekDouble > &rhs)
 
template NekVector< NekSingleSubtract (const NekVector< NekSingle > &lhs, const NekVector< NekSingle > &rhs)
 
template<typename ResultDataType , typename InputDataType >
void Divide (NekVector< ResultDataType > &result, const NekVector< InputDataType > &lhs, const NekDouble &rhs)
 
template<typename ResultDataType , typename InputDataType >
void Divide (NekVector< ResultDataType > &result, const NekVector< InputDataType > &lhs, const NekSingle &rhs)
 
template void Divide (NekVector< NekDouble > &result, const NekVector< NekDouble > &lhs, const NekDouble &rhs)
 
template void Divide (NekVector< NekSingle > &result, const NekVector< NekSingle > &lhs, const NekSingle &rhs)
 
template<typename ResultDataType >
void DivideEqual (NekVector< ResultDataType > &result, const NekDouble &rhs)
 
template<typename ResultDataType >
void DivideEqual (NekVector< ResultDataType > &result, const NekSingle &rhs)
 
template void DivideEqual (NekVector< NekDouble > &result, const NekDouble &rhs)
 
template void DivideEqual (NekVector< NekSingle > &result, const NekSingle &rhs)
 
template<typename DataType >
NekVector< DataType > Divide (const NekVector< DataType > &lhs, const NekDouble &rhs)
 
template<typename DataType >
NekVector< DataType > Divide (const NekVector< DataType > &lhs, const NekSingle &rhs)
 
template NekVector< NekDoubleDivide (const NekVector< NekDouble > &lhs, const NekDouble &rhs)
 
template NekVector< NekSingleDivide (const NekVector< NekSingle > &lhs, const NekSingle &rhs)
 
template<typename ResultDataType , typename InputDataType >
void Multiply (NekVector< ResultDataType > &result, const NekVector< InputDataType > &lhs, const NekVector< InputDataType > &rhs)
 
template void Multiply (NekVector< NekDouble > &result, const NekVector< NekDouble > &lhs, const NekVector< NekDouble > &rhs)
 
template void Multiply (NekVector< NekSingle > &result, const NekVector< NekSingle > &lhs, const NekVector< NekSingle > &rhs)
 
template<typename ResultDataType , typename InputDataType >
void MultiplyEqual (NekVector< ResultDataType > &result, const NekVector< InputDataType > &rhs)
 
template void MultiplyEqual (NekVector< NekDouble > &result, const NekVector< NekDouble > &rhs)
 
template void MultiplyEqual (NekVector< NekSingle > &result, const NekVector< NekSingle > &rhs)
 
template<typename DataType , typename InputDataType >
NekVector< DataType > Multiply (const NekVector< DataType > &lhs, const NekVector< InputDataType > &rhs)
 
template NekVector< NekDoubleMultiply (const NekVector< NekDouble > &lhs, const NekVector< NekDouble > &rhs)
 
template NekVector< NekSingleMultiply (const NekVector< NekSingle > &lhs, const NekVector< NekSingle > &rhs)
 
template<typename ResultDataType , typename InputDataType >
void Multiply (NekVector< ResultDataType > &result, const NekVector< InputDataType > &lhs, const NekDouble &rhs)
 
template<typename ResultDataType , typename InputDataType >
void Multiply (NekVector< ResultDataType > &result, const NekVector< InputDataType > &lhs, const NekSingle &rhs)
 
template void Multiply (NekVector< NekDouble > &result, const NekVector< NekDouble > &lhs, const NekDouble &rhs)
 
template void Multiply (NekVector< NekSingle > &result, const NekVector< NekSingle > &lhs, const NekSingle &rhs)
 
template<typename ResultDataType >
void MultiplyEqual (NekVector< ResultDataType > &result, const NekDouble &rhs)
 
template<typename ResultDataType >
void MultiplyEqual (NekVector< ResultDataType > &result, const NekSingle &rhs)
 
template void MultiplyEqual (NekVector< NekDouble > &result, const NekDouble &rhs)
 
template void MultiplyEqual (NekVector< NekSingle > &result, const NekSingle &rhs)
 
template<typename DataType >
NekVector< DataType > Multiply (const NekVector< DataType > &lhs, const NekDouble &rhs)
 
template<typename DataType >
NekVector< DataType > Multiply (const NekVector< DataType > &lhs, const NekSingle &rhs)
 
template NekVector< NekDoubleMultiply (const NekVector< NekDouble > &lhs, const NekDouble &rhs)
 
template NekVector< NekSingleMultiply (const NekVector< NekSingle > &lhs, const NekSingle &rhs)
 
template<typename ResultDataType , typename InputDataType >
void Multiply (NekVector< ResultDataType > &result, const NekDouble &lhs, const NekVector< InputDataType > &rhs)
 
template<typename ResultDataType , typename InputDataType >
void MultiplyInvertedLhs (NekVector< ResultDataType > &result, const NekDouble &lhs, const NekVector< InputDataType > &rhs)
 
template<typename ResultDataType , typename InputDataType >
void Multiply (NekVector< ResultDataType > &result, const NekSingle &lhs, const NekVector< InputDataType > &rhs)
 
template<typename ResultDataType , typename InputDataType >
void MultiplyInvertedLhs (NekVector< ResultDataType > &result, const NekSingle &lhs, const NekVector< InputDataType > &rhs)
 
template void MultiplyInvertedLhs (NekVector< NekDouble > &result, const NekDouble &lhs, const NekVector< NekDouble > &rhs)
 
template void Multiply (NekVector< NekDouble > &result, const NekDouble &lhs, const NekVector< NekDouble > &rhs)
 
template void MultiplyInvertedLhs (NekVector< NekSingle > &result, const NekSingle &lhs, const NekVector< NekSingle > &rhs)
 
template void Multiply (NekVector< NekSingle > &result, const NekSingle &lhs, const NekVector< NekSingle > &rhs)
 
template<typename DataType >
NekVector< DataType > Multiply (const DataType &lhs, const NekVector< DataType > &rhs)
 
template NekVector< NekDoubleMultiply (const NekDouble &lhs, const NekVector< NekDouble > &rhs)
 
template NekVector< NekSingleMultiply (const NekSingle &lhs, const NekVector< NekSingle > &rhs)
 
template<typename DataType >
std::ostream & operator<< (std::ostream &os, const NekVector< DataType > &rhs)
 
template std::ostream & operator<< (std::ostream &os, const NekVector< NekDouble > &rhs)
 
template std::ostream & operator<< (std::ostream &os, const NekVector< NekSingle > &rhs)
 
template<typename DataType >
NekVector< DataType > createVectorFromPoints (const NekPoint< DataType > &source, const NekPoint< DataType > &dest)
 
template NekVector< NekDoublecreateVectorFromPoints (const NekPoint< NekDouble > &source, const NekPoint< NekDouble > &dest)
 
template NekVector< NekSinglecreateVectorFromPoints (const NekPoint< NekSingle > &source, const NekPoint< NekSingle > &dest)
 
template<typename DataType >
NekPoint< DataType > findPointAlongVector (const NekVector< DataType > &lhs, const DataType &t)
 
template NekPoint< NekDoublefindPointAlongVector (const NekVector< NekDouble > &lhs, const NekDouble &t)
 
template NekPoint< NekSinglefindPointAlongVector (const NekVector< NekSingle > &lhs, const NekSingle &t)
 
template<typename DataType >
bool operator== (const NekVector< DataType > &lhs, const NekVector< DataType > &rhs)
 
template bool operator== (const NekVector< NekDouble > &lhs, const NekVector< NekDouble > &rhs)
 
template bool operator== (const NekVector< NekSingle > &lhs, const NekVector< NekSingle > &rhs)
 
template<typename DataType >
bool operator!= (const NekVector< DataType > &lhs, const NekVector< DataType > &rhs)
 
template bool operator!= (const NekVector< NekDouble > &lhs, const NekVector< NekDouble > &rhs)
 
template bool operator!= (const NekVector< NekSingle > &lhs, const NekVector< NekSingle > &rhs)
 
template<typename DataType >
std::vector< DataType > FromString (const std::string &str)
 
template std::vector< NekDoubleFromString (const std::string &str)
 
template<typename DataType >
DataType L1Norm (const NekVector< DataType > &v)
 
template NekDouble L1Norm (const NekVector< NekDouble > &v)
 
template NekSingle L1Norm (const NekVector< NekSingle > &v)
 
template<typename DataType >
DataType L2Norm (const NekVector< DataType > &v)
 
template NekDouble L2Norm (const NekVector< NekDouble > &v)
 
template NekSingle L2Norm (const NekVector< NekSingle > &v)
 
template<typename DataType >
DataType InfinityNorm (const NekVector< DataType > &v)
 
template NekDouble InfinityNorm (const NekVector< NekDouble > &v)
 
template NekSingle InfinityNorm (const NekVector< NekSingle > &v)
 
template<typename DataType >
NekVector< DataType > Negate (const NekVector< DataType > &v)
 
template NekVector< NekDoubleNegate (const NekVector< NekDouble > &v)
 
template NekVector< NekSingleNegate (const NekVector< NekSingle > &v)
 
template<typename DataType >
void NegateInPlace (NekVector< DataType > &v)
 
template void NegateInPlace (NekVector< NekDouble > &v)
 
template void NegateInPlace (NekVector< NekSingle > &v)
 
template<typename DataType >
DataType Magnitude (const NekVector< DataType > &v)
 
template NekDouble Magnitude (const NekVector< NekDouble > &v)
 
template NekSingle Magnitude (const NekVector< NekSingle > &v)
 
template<typename DataType >
DataType Dot (const NekVector< DataType > &lhs, const NekVector< DataType > &rhs)
 
template NekDouble Dot (const NekVector< NekDouble > &lhs, const NekVector< NekDouble > &rhs)
 
template NekSingle Dot (const NekVector< NekSingle > &lhs, const NekVector< NekSingle > &rhs)
 
template<typename DataType >
void Normalize (NekVector< DataType > &v)
 
template void Normalize (NekVector< NekDouble > &v)
 
void NegateInPlace (NekDouble &v)
 
void InvertInPlace (NekDouble &v)
 
template void Normalize (NekVector< NekSingle > &v)
 
void NegateInPlace (NekSingle &v)
 
void InvertInPlace (NekSingle &v)
 
template<typename DataType >
NekVector< DataType > Cross (const NekVector< DataType > &lhs, const NekVector< DataType > &rhs)
 
template NekVector< NekDoubleCross (const NekVector< NekDouble > &lhs, const NekVector< NekDouble > &rhs)
 
template NekVector< NekSingleCross (const NekVector< NekSingle > &lhs, const NekVector< NekSingle > &rhs)
 
template<typename DataType >
std::string AsString (const NekVector< DataType > &v)
 
template std::string AsString (const NekVector< NekDouble > &v)
 
template std::string AsString (const NekVector< NekSingle > &v)
 
template<typename DataType >
NekVector< DataType > operator* (const NekVector< DataType > &lhs, const NekDouble &rhs)
 
template<typename DataType >
NekVector< DataType > operator* (const NekDouble &lhs, const NekVector< DataType > &rhs)
 
template<typename DataType >
NekVector< DataType > operator* (const NekVector< DataType > &lhs, const NekVector< DataType > &rhs)
 
template<typename DataType >
NekVector< DataType > operator/ (const NekVector< DataType > &lhs, const NekDouble &rhs)
 
template<typename DataType >
NekVector< DataType > operator+ (const NekVector< DataType > &lhs, const NekVector< DataType > &rhs)
 
template<typename DataType >
NekVector< DataType > operator- (const NekVector< DataType > &lhs, const NekVector< DataType > &rhs)
 
template<typename DataType >
NekMatrix< DataType, ScaledMatrixTag > Transpose (NekMatrix< DataType, ScaledMatrixTag > &rhs)
 
template NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag > Transpose (NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag > &rhs)
 
template<typename DataType >
void NegateInPlace (NekMatrix< DataType, ScaledMatrixTag > &v)
 
template void NegateInPlace (NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag > &v)
 
template NekMatrix< NekMatrix< NekSingle, StandardMatrixTag >, ScaledMatrixTag > Transpose (NekMatrix< NekMatrix< NekSingle, StandardMatrixTag >, ScaledMatrixTag > &rhs)
 
template void NegateInPlace (NekMatrix< NekMatrix< NekSingle, StandardMatrixTag >, ScaledMatrixTag > &v)
 
void convertCooToBco (const unsigned int blkDim, const COOMatType &cooMat, BCOMatType &bcoMat)
 
template<typename SparseStorageType >
std::ostream & operator<< (std::ostream &os, const NekSparseMatrix< SparseStorageType > &rhs)
 
template<typename SparseStorageType >
std::ostream & operator<< (std::ostream &os, const NekSparseDiagBlkMatrix< SparseStorageType > &rhs)
 
template std::ostream & operator<< (std::ostream &os, const NekSparseMatrix< StorageSmvBsr< NekDouble > > &rhs)
 
template std::ostream & operator<< (std::ostream &os, const NekSparseDiagBlkMatrix< StorageSmvBsr< NekDouble > > &rhs)
 
template<typename DataType >
NekMatrix< DataType, StandardMatrixTag > Transpose (NekMatrix< DataType, StandardMatrixTag > &rhs)
 
template NekMatrix< NekDouble, StandardMatrixTag > Transpose (NekMatrix< NekDouble, StandardMatrixTag > &rhs)
 
template NekMatrix< NekSingle, StandardMatrixTag > Transpose (NekMatrix< NekSingle, StandardMatrixTag > &rhs)
 
template<typename DataType >
void NegateInPlace (NekMatrix< DataType, StandardMatrixTag > &m)
 
template void NegateInPlace (NekMatrix< double, StandardMatrixTag > &v)
 
template void NegateInPlace (NekMatrix< NekSingle, StandardMatrixTag > &v)
 
template<typename DataType >
bool operator== (const MemoryManager< DataType > &lhs, const MemoryManager< DataType > &rhs)
 
template<typename DataType >
bool operator!= (const MemoryManager< DataType > &lhs, const MemoryManager< DataType > &rhs)
 
MemPoolGetMemoryPool ()
 
template<typename T >
std::ostream & operator<< (std::ostream &os, const CountedObject< T > &lhs)
 
 BOOST_AUTO_TEST_CASE (TestCanGetRawPtr)
 
template<typename LhsScaledInnerMatrixType , typename LhsBlockInnerMatrixType , typename RhsScaledInnerMatrixType , typename RhsBlockInnerMatrixType >
void RunAllAddCombinations (const NekMatrix< NekDouble, StandardMatrixTag > &l1, const NekMatrix< NekMatrix< NekDouble, LhsScaledInnerMatrixType >, ScaledMatrixTag > &l2, const NekMatrix< NekMatrix< NekDouble, LhsBlockInnerMatrixType >, BlockMatrixTag > &l3, const NekMatrix< NekDouble, StandardMatrixTag > &r1, const NekMatrix< NekMatrix< NekDouble, RhsScaledInnerMatrixType >, ScaledMatrixTag > &r2, const NekMatrix< NekMatrix< NekDouble, RhsBlockInnerMatrixType >, BlockMatrixTag > &r3, const NekMatrix< NekDouble, StandardMatrixTag > &result)
 
template<typename LhsScaledInnerMatrixType , typename LhsBlockInnerMatrixType , typename RhsScaledInnerMatrixType , typename RhsBlockInnerMatrixType >
void RunAllSubCombinations (const NekMatrix< NekDouble, StandardMatrixTag > &l1, const NekMatrix< NekMatrix< NekDouble, LhsScaledInnerMatrixType >, ScaledMatrixTag > &l2, const NekMatrix< NekMatrix< NekDouble, LhsBlockInnerMatrixType >, BlockMatrixTag > &l3, const NekMatrix< NekDouble, StandardMatrixTag > &r1, const NekMatrix< NekMatrix< NekDouble, RhsScaledInnerMatrixType >, ScaledMatrixTag > &r2, const NekMatrix< NekMatrix< NekDouble, RhsBlockInnerMatrixType >, BlockMatrixTag > &r3, const NekMatrix< NekDouble, StandardMatrixTag > &result)
 
template<typename NumberType >
void GenerateMatrices (const NekMatrix< NumberType, StandardMatrixTag > &m1, NumberType scale, unsigned int blockRows, unsigned int blockColumns, std::shared_ptr< NekMatrix< NekMatrix< NumberType, StandardMatrixTag >, ScaledMatrixTag > > &m2, std::shared_ptr< NekMatrix< NekMatrix< NumberType >, BlockMatrixTag > > &m3)
 
 BOOST_AUTO_TEST_CASE (TestABPlusbCScaled)
 
 BOOST_AUTO_TEST_CASE (TestABPlusbCBlock)
 
void GenerateFullMatrices (double values[], double scale, std::shared_ptr< NekMatrix< NekDouble, StandardMatrixTag > > &m1, std::shared_ptr< NekMatrix< NekMatrix< NekDouble >, ScaledMatrixTag > > &m2, std::shared_ptr< NekMatrix< NekMatrix< NekDouble >, BlockMatrixTag > > &m3)
 
void GenerateUpperTriangularMatrices (NekDouble values[], NekDouble scale, std::shared_ptr< NekMatrix< NekDouble, StandardMatrixTag > > &m1, std::shared_ptr< NekMatrix< NekMatrix< NekDouble >, ScaledMatrixTag > > &m2, std::shared_ptr< NekMatrix< NekMatrix< NekDouble >, BlockMatrixTag > > &m3)
 
CellModelFactoryGetCellModelFactory ()
 
ProtocolFactoryGetProtocolFactory ()
 
StimulusFactoryGetStimulusFactory ()
 
ArtificialDiffusionFactoryGetArtificialDiffusionFactory ()
 Declaration of the artificial diffusion factory singleton. More...
 
CFSBndCondFactoryGetCFSBndCondFactory ()
 Declaration of the boundary condition factory singleton. More...
 
EquationOfStateFactoryGetEquationOfStateFactory ()
 Declaration of the equation of state factory singleton. More...
 
PreconCfsFactoryGetPreconCfsFactory ()
 Declaration of the boundary condition factory singleton. More...
 
NekDouble guessp (NekDouble g[], NekDouble rhoL, NekDouble uL, NekDouble pL, NekDouble cL, NekDouble rhoR, NekDouble uR, NekDouble pR, NekDouble cR)
 Use either PVRS, two-rarefaction or two-shock Riemann solvers to calculate an initial pressure for the Newton-Raphson scheme. More...
 
void prefun (NekDouble *g, NekDouble p, NekDouble dk, NekDouble pk, NekDouble ck, NekDouble &f, NekDouble &fd)
 Evaluate pressure functions fL and fR in Newton iteration of Riemann solver (see equation 4.85 and 4.86 of Toro 2009). More...
 
template<class T , typename = typename std::enable_if< std::is_floating_point<T>::value || tinysimd::is_vector_floating_point<T>::value>::type>
void RoeKernel (T &rhoL, T &rhouL, T &rhovL, T &rhowL, T &EL, T &rhoR, T &rhouR, T &rhovR, T &rhowR, T &ER, T &rhof, T &rhouf, T &rhovf, T &rhowf, T &Ef, NekDouble gamma)
 
ExtrapolateFactoryGetExtrapolateFactory ()
 
DNekMat MappingIdealToRef (SpatialDomains::GeometrySharedPtr geom)
 
BoundaryFactoryGetBoundaryFactory ()
 
PressureAreaFactoryGetPressureAreaFactory ()
 
MetricFactoryGetMetricFactory ()
 
bool EmptyString (const char *s)
 Check to see whether the given string s is empty (or null). More...
 

Variables

const char *const FlagTypeMap [] = {"UseGlobal"}
 String map for FlagType enumeration. More...
 
static Array< OneD, int > NullInt1DArray
 
static Array< OneD, NekDoubleNullNekDouble1DArray
 
static Array< OneD, Array< OneD, NekDouble > > NullNekDoubleArrayOfArray
 
static Array< OneD, Array< OneD, Array< OneD, NekDouble > > > NullNekDoubleTensorOfArray3D
 
 NEKTAR_ALL_MATRIX_TYPES_SINGLE
 
 void
 
SNekMat NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX (AddEqualNegatedLhs, NEKTAR_ALL_MATRIX_TYPES,(1,(void)),(1,(DNekMat &)),(0,())) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX(AddEqualNegatedLhs
 
SNekMat NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES (AddNegatedLhs, NEKTAR_ALL_MATRIX_TYPES, NEKTAR_ALL_MATRIX_TYPES,(1,(void)),(1,(DNekMat &)),(0,())) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES(AddNegatedLhs
 
 NEKTAR_STANDARD_AND_SCALED_MATRICES_SINGLE
 
 NEKTAR_BLOCK_MATRIX_TYPES_SINGLE
 
 NekVector< NekSingle >
 
static DNekMatSharedPtr NullDNekMatSharedPtr
 
static DNekScalMatSharedPtr NullDNekScalMatSharedPtr
 
static DNekScalBlkMatSharedPtr NullDNekScalBlkMatSharedPtr
 
static Array< OneD, DNekBlkMatSharedPtrNullArrayDNekBlkMatSharedPtr
 
static SNekMatSharedPtr NullSNekMatSharedPtr
 
static SNekScalMatSharedPtr NullSNekScalMatSharedPtr
 
static SNekScalBlkMatSharedPtr NullSNekScalBlkMatSharedPtr
 
static Array< OneD, SNekBlkMatSharedPtrNullArraySNekBlkMatSharedPtr
 
static const int NistSpBlasDescra [5][9]
 
static NekDouble EigenvaluesRegMeshes [10][14]
 
static NekDouble EigenvaluesAnaMeshesAB2 [6][14]
 
static NekDouble EigenvaluesAnaMeshesRK2 [6][14]
 
static NekDouble EigenvaluesAnaMeshesRK4 [6][14]
 
const char *const TestTypeMap []
 
const char *const InitWaveTypeMap []
 
const std::string kEquationTypeStr []
 
const std::string kAdvectionFormStr []
 
static PulseWaveBoundarySharedPtr NullPulseWaveBoundarySharedPtr
 
static PulseWavePressureAreaSharedPtr NullPulseWavePressureAreaSharedPtr
 
const char *const UpwindTypeMapPulse []
 
const char *const ProblemTypeMap [] = {"General", "SolitaryWave"}
 
const std::string VWIIterationTypeMap []
 

Typedef Documentation

◆ AInflowSharedPtr

typedef std::shared_ptr<AInflow> Nektar::AInflowSharedPtr

Definition at line 48 of file AInflow.h.

◆ ArtificialDiffusionFactory

Declaration of the artificial diffusion factory.

Definition at line 60 of file ArtificialDiffusion.h.

◆ ArtificialDiffusionSharedPtr

A shared pointer to a artificial diffusion object.

Definition at line 53 of file ArtificialDiffusion.h.

◆ BCOEntryType

Definition at line 62 of file SparseMatrixFwd.hpp.

◆ BCOMatType

Definition at line 63 of file SparseMatrixFwd.hpp.

◆ BCOMatTypeConstIt

typedef BCOMatType::const_iterator Nektar::BCOMatTypeConstIt

Definition at line 64 of file SparseMatrixFwd.hpp.

◆ BCOMatTypeSharedPtr

typedef std::shared_ptr<BCOMatType> Nektar::BCOMatTypeSharedPtr

Definition at line 65 of file SparseMatrixFwd.hpp.

◆ BCOMatVector

Definition at line 66 of file SparseMatrixFwd.hpp.

◆ BetaPressureAreaSharedPtr

Definition at line 47 of file BetaPressureArea.h.

◆ BlkMatDNekBlkMat

typedef NekMatrix< NekMatrix<NekMatrix<NekDouble, StandardMatrixTag>, BlockMatrixTag>, BlockMatrixTag> Nektar::BlkMatDNekBlkMat

Definition at line 64 of file NekTypeDefs.hpp.

◆ BlkMatDNekBlkMatSharedPtr

Definition at line 78 of file NekTypeDefs.hpp.

◆ BlkMatDNekScalBlkMat

typedef NekMatrix<NekMatrix<NekMatrix<NekMatrix<NekDouble, StandardMatrixTag>, ScaledMatrixTag>, BlockMatrixTag>, BlockMatrixTag> Nektar::BlkMatDNekScalBlkMat

Definition at line 73 of file NekTypeDefs.hpp.

◆ BlkMatDNekScalBlkMatSharedPtr

Definition at line 80 of file NekTypeDefs.hpp.

◆ BlkMatSNekBlkMat

typedef NekMatrix< NekMatrix<NekMatrix<NekSingle, StandardMatrixTag>, BlockMatrixTag>, BlockMatrixTag> Nektar::BlkMatSNekBlkMat

Definition at line 111 of file NekTypeDefs.hpp.

◆ BlkMatSNekBlkMatSharedPtr

Definition at line 125 of file NekTypeDefs.hpp.

◆ BlkMatSNekScalBlkMat

typedef NekMatrix<NekMatrix<NekMatrix<NekMatrix<NekSingle, StandardMatrixTag>, ScaledMatrixTag>, BlockMatrixTag>, BlockMatrixTag> Nektar::BlkMatSNekScalBlkMat

Definition at line 120 of file NekTypeDefs.hpp.

◆ BlkMatSNekScalBlkMatSharedPtr

Definition at line 127 of file NekTypeDefs.hpp.

◆ BlockMatrix

typedef NekMatrix<DenseMatrix, BlockMatrixTag> Nektar::BlockMatrix

Definition at line 59 of file NekTypeDefs.hpp.

◆ BoundaryFactory

Definition at line 58 of file PulseWaveBoundary.h.

◆ CellModelFactory

Datatype of the NekFactory used to instantiate classes derived from the EquationSystem class.

Definition at line 61 of file CellModel.h.

◆ CellModelSharedPtr

typedef std::shared_ptr<CellModel> Nektar::CellModelSharedPtr

A shared pointer to an EquationSystem object.

Definition at line 55 of file CellModel.h.

◆ CFSBndCondFactory

Declaration of the boundary condition factory.

Definition at line 59 of file CFSBndCond.h.

◆ CFSBndCondSharedPtr

typedef std::shared_ptr<CFSBndCond> Nektar::CFSBndCondSharedPtr

A shared pointer to a boundary condition object.

Definition at line 51 of file CFSBndCond.h.

◆ COOEntryType

Definition at line 55 of file SparseMatrixFwd.hpp.

◆ COOMatType

Definition at line 56 of file SparseMatrixFwd.hpp.

◆ COOMatTypeConstIt

typedef COOMatType::const_iterator Nektar::COOMatTypeConstIt

Definition at line 57 of file SparseMatrixFwd.hpp.

◆ COOMatTypeSharedPtr

typedef std::shared_ptr<COOMatType> Nektar::COOMatTypeSharedPtr

Definition at line 58 of file SparseMatrixFwd.hpp.

◆ COOMatVector

Definition at line 59 of file SparseMatrixFwd.hpp.

◆ CoordType

typedef std::pair<IndexType, IndexType> Nektar::CoordType

Definition at line 54 of file SparseMatrixFwd.hpp.

◆ CoupledAssemblyMapSharedPtr

Definition at line 62 of file CoupledAssemblyMap.h.

◆ CoupledLocalToGlobalC0ContMapSharedPtr

Definition at line 66 of file CoupledLocalToGlobalC0ContMap.h.

◆ CoupledSolverMatrices

◆ DenseMatrix

typedef NekMatrix<NekDouble, StandardMatrixTag> Nektar::DenseMatrix

Definition at line 51 of file NekTypeDefs.hpp.

◆ DiffusionLDGNSSharedPtr

Definition at line 163 of file DiffusionLDGNS.h.

◆ DNekBlkMat

typedef NekMatrix<NekMatrix<NekDouble, StandardMatrixTag>, BlockMatrixTag> Nektar::DNekBlkMat

Definition at line 58 of file NekTypeDefs.hpp.

◆ DNekBlkMatSharedPtr

typedef std::shared_ptr<DNekBlkMat> Nektar::DNekBlkMatSharedPtr

Definition at line 77 of file NekTypeDefs.hpp.

◆ DNekLinSys

Definition at line 87 of file NekTypeDefs.hpp.

◆ DNekLinSysSharedPtr

typedef std::shared_ptr<DNekLinSys> Nektar::DNekLinSysSharedPtr

Definition at line 88 of file NekTypeDefs.hpp.

◆ DNekMat

typedef NekMatrix<NekDouble, StandardMatrixTag> Nektar::DNekMat

Definition at line 50 of file NekTypeDefs.hpp.

◆ DNekMatSharedPtr

typedef std::shared_ptr<DNekMat> Nektar::DNekMatSharedPtr

Definition at line 75 of file NekTypeDefs.hpp.

◆ DNekScalBlkMat

typedef NekMatrix< NekMatrix<NekMatrix<NekDouble, StandardMatrixTag>, ScaledMatrixTag>, BlockMatrixTag> Nektar::DNekScalBlkMat

Definition at line 68 of file NekTypeDefs.hpp.

◆ DNekScalBlkMatSharedPtr

Definition at line 79 of file NekTypeDefs.hpp.

◆ DNekScalLinSys

Definition at line 90 of file NekTypeDefs.hpp.

◆ DNekScalLinSysSharedPtr

Definition at line 91 of file NekTypeDefs.hpp.

◆ DNekScalMat

typedef NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag > Nektar::DNekScalMat

Definition at line 65 of file NekMatrixFwd.hpp.

◆ DNekScalMatSharedPtr

typedef std::shared_ptr< DNekScalMat > Nektar::DNekScalMatSharedPtr

Definition at line 66 of file NekMatrixFwd.hpp.

◆ DNekVec

Definition at line 48 of file NekTypeDefs.hpp.

◆ EmpiricalPressureAreaSharedPtr

Definition at line 49 of file EmpiricalPressureArea.h.

◆ EquationOfStateFactory

Declaration of the equation of state factory.

Definition at line 54 of file EquationOfState.h.

◆ EquationOfStateSharedPtr

A shared pointer to an equation of state object.

Definition at line 49 of file EquationOfState.h.

◆ ExtrapolateFactory

Definition at line 66 of file Extrapolate.h.

◆ ExtrapolateSharedPtr

typedef std::shared_ptr<Extrapolate> Nektar::ExtrapolateSharedPtr

Definition at line 60 of file Extrapolate.h.

◆ FilterAeroForcesSPMSharedPtr

Definition at line 105 of file FilterAeroForcesSPM.h.

◆ FilterMap

typedef std::pair<std::string, FilterParams> Nektar::FilterMap

Definition at line 48 of file FilterMovingBody.h.

◆ FilterMovingBodySharedPtr

Definition at line 46 of file FilterMovingBody.h.

◆ FilterParams

typedef std::map<std::string, std::string> Nektar::FilterParams

Definition at line 47 of file FilterMovingBody.h.

◆ HighOrderOutflowSharedPtr

Definition at line 69 of file Extrapolate.h.

◆ ImplicitExtrapolateSharedPtr

Definition at line 53 of file ImplicitExtrapolate.h.

◆ IncNavierStokesSharedPtr

Definition at line 306 of file IncNavierStokes.h.

◆ IndexType

typedef unsigned int Nektar::IndexType

Definition at line 49 of file SparseMatrixFwd.hpp.

◆ IndexVector

Definition at line 51 of file SparseMatrixFwd.hpp.

◆ InterfacePointShPtr

typedef std::shared_ptr<InterfacePoint> Nektar::InterfacePointShPtr

Definition at line 74 of file PulseWaveSystem.h.

◆ MappingExtrapolateSharedPtr

Definition at line 49 of file MappingExtrapolate.h.

◆ MetricSharedPtr

typedef std::shared_ptr<Metric> Nektar::MetricSharedPtr

A shared pointer to an EquationSystem object.

Definition at line 124 of file Metric.h.

◆ NekComplexDouble

typedef std::complex<double> Nektar::NekComplexDouble

Definition at line 113 of file IncNavierStokes.h.

◆ NekDouble

typedef double Nektar::NekDouble

Definition at line 43 of file NektarUnivTypeDefs.hpp.

◆ NekInt

typedef std::int32_t Nektar::NekInt

Definition at line 46 of file NektarUnivTypeDefs.hpp.

◆ NekInt32

typedef std::int32_t Nektar::NekInt32

Definition at line 47 of file NektarUnivTypeDefs.hpp.

◆ NekInt64

typedef std::int64_t Nektar::NekInt64

Definition at line 48 of file NektarUnivTypeDefs.hpp.

◆ NekSingle

typedef float Nektar::NekSingle

Definition at line 44 of file NektarUnivTypeDefs.hpp.

◆ NekUInt

typedef std::uint32_t Nektar::NekUInt

Definition at line 49 of file NektarUnivTypeDefs.hpp.

◆ NekUInt32

typedef std::uint32_t Nektar::NekUInt32

Definition at line 50 of file NektarUnivTypeDefs.hpp.

◆ NekUInt64

typedef std::uint64_t Nektar::NekUInt64

Definition at line 51 of file NektarUnivTypeDefs.hpp.

◆ PowerPressureAreaSharedPtr

Definition at line 49 of file PowerPressureArea.h.

◆ PreconCfsFactory

Declaration of the boundary condition factory.

Definition at line 54 of file PreconCfs.h.

◆ PreconCfsSharedPtr

typedef std::shared_ptr<PreconCfs> Nektar::PreconCfsSharedPtr

Definition at line 112 of file PreconCfs.h.

◆ PressureAreaFactory

Definition at line 56 of file PulseWavePressureArea.h.

◆ ProtocolFactory

Datatype of the NekFactory used to instantiate classes derived from the EquationSystem class.

Definition at line 56 of file Protocol.h.

◆ ProtocolSharedPtr

typedef std::shared_ptr<Protocol> Nektar::ProtocolSharedPtr

A shared pointer to an EquationSystem object.

Definition at line 49 of file Protocol.h.

◆ PulseWaveBoundarySharedPtr

Definition at line 50 of file PulseWaveBoundary.h.

◆ PulseWavePressureAreaSharedPtr

Definition at line 49 of file PulseWavePressureArea.h.

◆ PulseWaveSystemSharedPtr

Definition at line 211 of file PulseWaveSystem.h.

◆ QInflowSharedPtr

typedef std::shared_ptr<QInflow> Nektar::QInflowSharedPtr

Definition at line 49 of file QInflow.h.

◆ RawType_t

template<typename T >
using Nektar::RawType_t = typedef typename RawType<T>::type

Definition at line 70 of file RawType.hpp.

◆ RCROutflowSharedPtr

typedef std::shared_ptr<RCROutflow> Nektar::RCROutflowSharedPtr

Definition at line 49 of file RCROutflow.h.

◆ ROutflowSharedPtr

typedef std::shared_ptr<ROutflow> Nektar::ROutflowSharedPtr

Definition at line 49 of file ROutflow.h.

◆ SBlockMatrix

typedef NekMatrix<SDenseMatrix, BlockMatrixTag> Nektar::SBlockMatrix

Definition at line 106 of file NekTypeDefs.hpp.

◆ ScaledMatrix

typedef NekMatrix<DenseMatrix, ScaledMatrixTag> Nektar::ScaledMatrix

Definition at line 55 of file NekTypeDefs.hpp.

◆ SDenseMatrix

typedef NekMatrix<NekSingle, StandardMatrixTag> Nektar::SDenseMatrix

Definition at line 98 of file NekTypeDefs.hpp.

◆ SharedNekMatrixPtr

typedef std::shared_ptr<NekMatrix<NekDouble, StandardMatrixTag> > Nektar::SharedNekMatrixPtr

Definition at line 63 of file NekMatrixFwd.hpp.

◆ SharedSNekMatrixPtr

typedef std::shared_ptr<NekMatrix<NekSingle, StandardMatrixTag> > Nektar::SharedSNekMatrixPtr

Definition at line 69 of file NekMatrixFwd.hpp.

◆ SmoothedProfileMethodSharedPtr

Definition at line 162 of file SmoothedProfileMethod.h.

◆ SNekBlkMat

typedef NekMatrix<NekMatrix<NekSingle, StandardMatrixTag>, BlockMatrixTag> Nektar::SNekBlkMat

Definition at line 105 of file NekTypeDefs.hpp.

◆ SNekBlkMatSharedPtr

typedef std::shared_ptr<SNekBlkMat> Nektar::SNekBlkMatSharedPtr

Definition at line 124 of file NekTypeDefs.hpp.

◆ SNekMat

Definition at line 97 of file NekTypeDefs.hpp.

◆ SNekMatSharedPtr

typedef std::shared_ptr<SNekMat> Nektar::SNekMatSharedPtr

Definition at line 122 of file NekTypeDefs.hpp.

◆ SNekScalBlkMat

typedef NekMatrix< NekMatrix<NekMatrix<NekSingle, StandardMatrixTag>, ScaledMatrixTag>, BlockMatrixTag> Nektar::SNekScalBlkMat

Definition at line 115 of file NekTypeDefs.hpp.

◆ SNekScalBlkMatSharedPtr

Definition at line 126 of file NekTypeDefs.hpp.

◆ SNekScalMat

typedef NekMatrix< NekMatrix< NekSingle, StandardMatrixTag >, ScaledMatrixTag > Nektar::SNekScalMat

Definition at line 71 of file NekMatrixFwd.hpp.

◆ SNekScalMatSharedPtr

typedef std::shared_ptr< SNekScalMat > Nektar::SNekScalMatSharedPtr

Definition at line 72 of file NekMatrixFwd.hpp.

◆ SNekVec

Definition at line 95 of file NekTypeDefs.hpp.

◆ SScaledMatrix

typedef NekMatrix<SDenseMatrix, ScaledMatrixTag> Nektar::SScaledMatrix

Definition at line 102 of file NekTypeDefs.hpp.

◆ StandardExtrapolateSharedPtr

Definition at line 55 of file StandardExtrapolate.h.

◆ StimulusFactory

Datatype of the NekFactory used to instantiate classes derived from the EquationSystem class.

Definition at line 59 of file Stimulus.h.

◆ StimulusSharedPtr

typedef std::shared_ptr<Stimulus> Nektar::StimulusSharedPtr

A shared pointer to an EquationSystem object.

Definition at line 52 of file Stimulus.h.

◆ SubSteppingExtrapolateSharedPtr

Definition at line 55 of file SubSteppingExtrapolate.h.

◆ SubSteppingExtrapolateWeakPressureSharedPtr

Definition at line 49 of file SubSteppingExtrapolateWeakPressure.h.

◆ SummaryList

typedef std::vector<std::pair<std::string, std::string> > Nektar::SummaryList

Definition at line 52 of file CellModel.h.

◆ TemplatePressureAreaSharedPtr

Definition at line 47 of file TemplatePressureArea.h.

◆ TensorOfArray2D

template<class T >
using Nektar::TensorOfArray2D = typedef Array<OneD, Array<OneD, T> >

Definition at line 894 of file SharedArray.hpp.

◆ TensorOfArray3D

template<class T >
using Nektar::TensorOfArray3D = typedef Array<OneD, Array<OneD, Array<OneD, T> >>

Definition at line 899 of file SharedArray.hpp.

◆ TensorOfArray4D

template<class T >
using Nektar::TensorOfArray4D = typedef Array<OneD, Array<OneD, Array<OneD, Array<OneD, T> >> >

Definition at line 904 of file SharedArray.hpp.

◆ TensorOfArray5D

template<class T >
using Nektar::TensorOfArray5D = typedef Array<OneD, Array<OneD, Array<OneD, Array<OneD, Array<OneD, T> >> >>

Definition at line 909 of file SharedArray.hpp.

◆ TerminalOutflowSharedPtr

Pointer to a PulseWaveOutflow object.

Definition at line 49 of file TerminalOutflow.h.

◆ TimeDependentInflowSharedPtr

Definition at line 49 of file TimeDependentInflow.h.

◆ UInflowSharedPtr

typedef std::shared_ptr<UInflow> Nektar::UInflowSharedPtr

Pointer to a PulseWaveOutflow object.

Definition at line 48 of file UInflow.h.

◆ UndefinedInOutflowSharedPtr

Definition at line 49 of file UndefinedInOutflow.h.

◆ VariableConverterSharedPtr

Definition at line 47 of file VariableConverter.h.

◆ VCSImplicitSharedPtr

typedef std::shared_ptr<VCSImplicit> Nektar::VCSImplicitSharedPtr

Definition at line 125 of file VelocityCorrectionSchemeImplicit.h.

◆ VCSMappingSharedPtr

typedef std::shared_ptr<VCSMapping> Nektar::VCSMappingSharedPtr

Definition at line 155 of file VCSMapping.h.

◆ VCSWeakPressureSharedPtr

Definition at line 99 of file VelocityCorrectionSchemeWeakPressure.h.

◆ vec_t

Definition at line 59 of file EquationOfState.h.

◆ VelocityCorrectionSchemeSharedPtr

Definition at line 246 of file VelocityCorrectionScheme.h.

◆ WeakPressureExtrapolateSharedPtr

Definition at line 56 of file WeakPressureExtrapolate.h.

◆ WomersleyParamsSharedPtr

Definition at line 140 of file IncNavierStokes.h.

Enumeration Type Documentation

◆ AdvectionForm

Enumerator
eNoAdvectionForm 
eConvective 
eNonConservative 
eLinearised 
eAdjoint 
eSkewSymmetric 
eNoAdvection 
eAdvectionFormSize 

Definition at line 92 of file IncNavierStokes.h.

◆ AllowWrappingOfConstArrays

Enumerator
eVECTOR_WRAPPER 

Definition at line 564 of file SharedArray.hpp.

565{
567};
@ eVECTOR_WRAPPER

◆ Direction

Enumerator
xDir 
yDir 
zDir 

Definition at line 71 of file NektarUnivTypeDefs.hpp.

72{
73 xDir = 0,
74 yDir = 1,
75 zDir = 2
76};

◆ EquationType

Enumerator
eNoEquationType 
eSteadyStokes 
eSteadyOseen 
eSteadyLinearisedNS 
eUnsteadyStokes 
eUnsteadyLinearisedNS 
eUnsteadyNavierStokes 
eSteadyNavierStokes 
eEquationTypeSize 

Definition at line 67 of file IncNavierStokes.h.

◆ FlagType

Enumeration of flags for passing a list of options.

Enumerator
eUseGlobal 

Definition at line 89 of file NektarUnivTypeDefs.hpp.

90{
92};

◆ HBCType

Enumerator
eNOHBC 
eHBCNeumann 
eOBC 
eConvectiveOBC 

Definition at line 50 of file Extrapolate.h.

51{
52 eNOHBC,
53 eHBCNeumann, // Standard High Order BC
54 eOBC, // High Order outflow BC (Neumann-Dirichlet) from Dong et al JCP 2014
55 eConvectiveOBC // Convective High Order (Robin type) BC from Dong JCP 2015
56};
@ eNOHBC
Definition: Extrapolate.h:52
@ eConvectiveOBC
Definition: Extrapolate.h:55
@ eHBCNeumann
Definition: Extrapolate.h:53

◆ InitWaveType

Enumerator
eLeft 
eBothEnds 
eCenter 
eLeftBottomCorner 
ePoint 
eSpiralDock 
SIZE_InitWaveType 

Length of enum list.

Definition at line 63 of file MMFDiffusion.h.

64{
65 eLeft,
67 eCenter,
69 ePoint,
71 SIZE_InitWaveType ///< Length of enum list
72};
@ SIZE_InitWaveType
Length of enum list.
Definition: MMFDiffusion.h:71
@ eLeftBottomCorner
Definition: MMFDiffusion.h:68
@ eBothEnds
Definition: MMFDiffusion.h:66
@ eSpiralDock
Definition: MMFDiffusion.h:70

◆ MatrixStorage

Enumerator
eFULL 
eDIAGONAL 
eUPPER_TRIANGULAR 
eLOWER_TRIANGULAR 
eSYMMETRIC 
ePOSITIVE_DEFINITE_SYMMETRIC 
eBANDED 
eSYMMETRIC_BANDED 
ePOSITIVE_DEFINITE_SYMMETRIC_BANDED 
eUPPER_TRIANGULAR_BANDED 
eLOWER_TRIANGULAR_BANDED 

Definition at line 41 of file MatrixStorageType.h.

◆ OutputFormat

Enumeration a flags for output format.

Enumerator
eTecplot 
eTecplotZones 
eTecplotSingleBlock 
eGmsh 
eGnuplot 

Definition at line 79 of file NektarUnivTypeDefs.hpp.

◆ PointerWrapper

Specifies if the pointer passed to a NekMatrix or NekVector is copied into an internal representation or used directly.

Enumerator
eWrapper 
eCopy 

Definition at line 43 of file PointerWrapper.h.

44{
46 eCopy
47};

◆ ProblemType

Enumerator
eGeneral 

No problem defined - Default Inital data.

eSolitaryWave 

First order Laitone solitary wave.

SIZE_ProblemType 

Length of enum list.

Definition at line 44 of file NonlinearPeregrine.h.

45{
46 eGeneral, ///< No problem defined - Default Inital data
47 eSolitaryWave, ///< First order Laitone solitary wave
48 SIZE_ProblemType ///< Length of enum list
49};
@ eGeneral
No problem defined - Default Inital data.
@ SIZE_ProblemType
Length of enum list.
@ eSolitaryWave
First order Laitone solitary wave.

◆ SolverType

Enumerator
eNoSolverType 
eCoupledLinearisedNS 
eSmoothedProfileMethod 
eVCSMapping 
eVelocityCorrectionScheme 
eVCSWeakPressure 
eWeakPressure 
eVCSImplicit 
eImplicit 

Definition at line 54 of file IncNavierStokes.h.

◆ TestType [1/2]

Enumerator
eTestPlane 
eTestCube 
eTestLinearSphere 
eTestNonlinearSphere 
eFHNStandard 
eFHNRogers 
eFHNAlievPanf 
SIZE_TestType 

Length of enum list.

eTestPlane 
eTestSteadyZonal 
eTestUnsteadyZonal 
eTestIsolatedMountain 
eTestUnstableJet 
eTestRossbyWave 
SIZE_TestType 

Length of enum list.

Definition at line 46 of file MMFDiffusion.h.

47{
55 SIZE_TestType ///< Length of enum list
56};
@ SIZE_TestType
Length of enum list.
Definition: MMFAdvection.h:49
@ eTestPlane
Definition: MMFAdvection.h:45
@ eTestCube
Definition: MMFAdvection.h:47
@ eFHNStandard
Definition: MMFDiffusion.h:52
@ eTestLinearSphere
Definition: MMFDiffusion.h:50
@ eTestNonlinearSphere
Definition: MMFDiffusion.h:51
@ eFHNRogers
Definition: MMFDiffusion.h:53
@ eFHNAlievPanf
Definition: MMFDiffusion.h:54

◆ TestType [2/2]

Enumerator
eTestPlane 
eTestCube 
eTestLinearSphere 
eTestNonlinearSphere 
eFHNStandard 
eFHNRogers 
eFHNAlievPanf 
SIZE_TestType 

Length of enum list.

eTestPlane 
eTestSteadyZonal 
eTestUnsteadyZonal 
eTestIsolatedMountain 
eTestUnstableJet 
eTestRossbyWave 
SIZE_TestType 

Length of enum list.

Definition at line 44 of file MMFSWE.h.

45{
52 SIZE_TestType ///< Length of enum list
53};
@ eTestUnstableJet
Definition: MMFSWE.h:50
@ eTestSteadyZonal
Definition: MMFSWE.h:47
@ eTestUnsteadyZonal
Definition: MMFSWE.h:48
@ eTestIsolatedMountain
Definition: MMFSWE.h:49
@ eTestRossbyWave
Definition: MMFSWE.h:51

◆ UpwindTypePulse

Enumerator
eNotSetPulse 

flux not defined

eUpwindPulse 

simple upwinding scheme

SIZE_UpwindTypePulse 

Length of enum list.

Definition at line 47 of file PulseWaveSystem.h.

48{
49 eNotSetPulse, ///< flux not defined
50 eUpwindPulse, ///< simple upwinding scheme
51 SIZE_UpwindTypePulse ///< Length of enum list
52};
@ eUpwindPulse
simple upwinding scheme
@ eNotSetPulse
flux not defined
@ SIZE_UpwindTypePulse
Length of enum list.

◆ VWIIterationType

Enumerator
eFixedAlpha 
eFixedWaveForcing 
eFixedAlphaWaveForcing 
eFixedWaveForcingWithSubIterationOnAlpha 
eVWIIterationTypeSize 

Definition at line 53 of file VortexWaveInteraction.h.

Function Documentation

◆ Add() [1/10]

template<typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
SNekMat SNekMat NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Nektar::Add ( const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 335 of file MatrixOperations.cpp.

337{
338 typedef
340 NekMatrix<NumberType, StandardMatrixTag> result(lhs.GetRows(),
341 lhs.GetColumns());
342 Add(result, lhs, rhs);
343 return result;
344}
SNekMat SNekMat NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Add(const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)

References Add().

◆ Add() [2/10]

template<typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Nektar::Add ( const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 335 of file MatrixOperations.cpp.

337{
338 typedef
340 NekMatrix<NumberType, StandardMatrixTag> result(lhs.GetRows(),
341 lhs.GetColumns());
342 Add(result, lhs, rhs);
343 return result;
344}

References Add().

◆ Add() [3/10]

template<typename LhsDataType , typename RhsDataType >
NekVector< LhsDataType > Nektar::Add ( const NekVector< LhsDataType > &  lhs,
const NekVector< RhsDataType > &  rhs 
)

Definition at line 561 of file NekVector.cpp.

563{
565 Add(result, lhs, rhs);
566 return result;
567}
unsigned int GetDimension() const
Returns the number of dimensions for the point.
Definition: NekVector.cpp:201
template NekVector< NekSingle > Add(const NekVector< NekSingle > &lhs, const NekVector< NekSingle > &rhs)

References Add(), and Nektar::NekVector< DataType >::GetDimension().

◆ Add() [4/10]

template NekVector< NekDouble > Nektar::Add ( const NekVector< NekDouble > &  lhs,
const NekVector< NekDouble > &  rhs 
)

◆ Add() [5/10]

template NekVector< NekSingle > Nektar::Add ( const NekVector< NekSingle > &  lhs,
const NekVector< NekSingle > &  rhs 
)

Referenced by Add().

◆ Add() [6/10]

template<typename DataType , typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
SNekMat SNekMat void Nektar::Add ( NekMatrix< DataType, StandardMatrixTag > &  result,
const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 268 of file MatrixOperations.cpp.

271{
272 ASSERTL1(lhs.GetRows() == rhs.GetRows(),
273 std::string("Matrices with different row counts ") +
274 std::to_string(lhs.GetRows()) + std::string(" and ") +
275 std::to_string(rhs.GetRows()) +
276 std::string(" can't be added."));
277 ASSERTL1(lhs.GetColumns() == rhs.GetColumns(),
278 std::string("Matrices with different column counts ") +
279 std::to_string(lhs.GetColumns()) + std::string(" and ") +
280 std::to_string(rhs.GetColumns()) +
281 std::string(" can't be added."));
282
283 for (unsigned int i = 0; i < lhs.GetRows(); ++i)
284 {
285 for (unsigned int j = 0; j < lhs.GetColumns(); ++j)
286 {
287 result(i, j) = lhs(i, j) + rhs(i, j);
288 }
289 }
290}
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
Definition: ErrorUtil.hpp:242

References ASSERTL1.

Referenced by Add(), and operator+().

◆ Add() [7/10]

template<typename DataType , typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
void Nektar::Add ( NekMatrix< DataType, StandardMatrixTag > &  result,
const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 268 of file MatrixOperations.cpp.

271{
272 ASSERTL1(lhs.GetRows() == rhs.GetRows(),
273 std::string("Matrices with different row counts ") +
274 std::to_string(lhs.GetRows()) + std::string(" and ") +
275 std::to_string(rhs.GetRows()) +
276 std::string(" can't be added."));
277 ASSERTL1(lhs.GetColumns() == rhs.GetColumns(),
278 std::string("Matrices with different column counts ") +
279 std::to_string(lhs.GetColumns()) + std::string(" and ") +
280 std::to_string(rhs.GetColumns()) +
281 std::string(" can't be added."));
282
283 for (unsigned int i = 0; i < lhs.GetRows(); ++i)
284 {
285 for (unsigned int j = 0; j < lhs.GetColumns(); ++j)
286 {
287 result(i, j) = lhs(i, j) + rhs(i, j);
288 }
289 }
290}

References ASSERTL1.

Referenced by Add(), and operator+().

◆ Add() [8/10]

template<typename DataType >
void Nektar::Add ( NekVector< DataType > &  result,
const NekVector< DataType > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 484 of file NekVector.cpp.

486{
487 DataType *r_buf = result.GetRawPtr();
488 const DataType *lhs_buf = lhs.GetRawPtr();
489 const DataType *rhs_buf = rhs.GetRawPtr();
490 const unsigned int ldim = lhs.GetDimension();
491 for (int i = 0; i < ldim; ++i)
492 {
493 r_buf[i] = lhs_buf[i] + rhs_buf[i];
494 }
495}
DataType * GetRawPtr()
Definition: NekVector.cpp:211

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ Add() [9/10]

template void Nektar::Add ( NekVector< NekDouble > &  result,
const NekVector< NekDouble > &  lhs,
const NekVector< NekDouble > &  rhs 
)

◆ Add() [10/10]

template void Nektar::Add ( NekVector< NekSingle > &  result,
const NekVector< NekSingle > &  lhs,
const NekVector< NekSingle > &  rhs 
)

◆ AddEqual() [1/5]

template<typename DataType , typename RhsDataType , typename RhsMatrixType >
SNekMat void Nektar::AddEqual ( NekMatrix< DataType, StandardMatrixTag > &  result,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 207 of file MatrixOperations.cpp.

209{
210 ASSERTL1(result.GetRows() == rhs.GetRows(),
211 std::string("Matrices with different row counts ") +
212 std::to_string(result.GetRows()) + std::string(" and ") +
213 std::to_string(rhs.GetRows()) +
214 std::string(" can't be added."));
215 ASSERTL1(result.GetColumns() == rhs.GetColumns(),
216 std::string("Matrices with different column counts ") +
217 std::to_string(result.GetColumns()) + std::string(" and ") +
218 std::to_string(rhs.GetColumns()) +
219 std::string(" can't be added."));
220
221 for (unsigned int i = 0; i < rhs.GetRows(); ++i)
222 {
223 for (unsigned int j = 0; j < rhs.GetColumns(); ++j)
224 {
225 result(i, j) += rhs(i, j);
226 }
227 }
228}
unsigned int GetRows() const
Definition: MatrixBase.cpp:65
unsigned int GetColumns() const
Definition: MatrixBase.cpp:84

References ASSERTL1.

◆ AddEqual() [2/5]

template<typename DataType , typename RhsDataType , typename RhsMatrixType >
void Nektar::AddEqual ( NekMatrix< DataType, StandardMatrixTag > &  result,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 207 of file MatrixOperations.cpp.

209{
210 ASSERTL1(result.GetRows() == rhs.GetRows(),
211 std::string("Matrices with different row counts ") +
212 std::to_string(result.GetRows()) + std::string(" and ") +
213 std::to_string(rhs.GetRows()) +
214 std::string(" can't be added."));
215 ASSERTL1(result.GetColumns() == rhs.GetColumns(),
216 std::string("Matrices with different column counts ") +
217 std::to_string(result.GetColumns()) + std::string(" and ") +
218 std::to_string(rhs.GetColumns()) +
219 std::string(" can't be added."));
220
221 for (unsigned int i = 0; i < rhs.GetRows(); ++i)
222 {
223 for (unsigned int j = 0; j < rhs.GetColumns(); ++j)
224 {
225 result(i, j) += rhs(i, j);
226 }
227 }
228}

References ASSERTL1.

◆ AddEqual() [3/5]

template<typename DataType >
void Nektar::AddEqual ( NekVector< DataType > &  result,
const NekVector< DataType > &  rhs 
)

Definition at line 526 of file NekVector.cpp.

527{
528 DataType *r_buf = result.GetRawPtr();
529 const DataType *rhs_buf = rhs.GetRawPtr();
530 const unsigned int rdim = rhs.GetDimension();
531 for (int i = 0; i < rdim; ++i)
532 {
533 r_buf[i] += rhs_buf[i];
534 }
535}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ AddEqual() [4/5]

template void Nektar::AddEqual ( NekVector< NekDouble > &  result,
const NekVector< NekDouble > &  rhs 
)

◆ AddEqual() [5/5]

template void Nektar::AddEqual ( NekVector< NekSingle > &  result,
const NekVector< NekSingle > &  rhs 
)

◆ AddEqualNegatedLhs() [1/4]

template<typename DataType , typename RhsDataType , typename RhsMatrixType >
void Nektar::AddEqualNegatedLhs ( NekMatrix< DataType, StandardMatrixTag > &  result,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 231 of file MatrixOperations.cpp.

233{
234 ASSERTL1(result.GetRows() == rhs.GetRows(),
235 std::string("Matrices with different row counts ") +
236 std::to_string(result.GetRows()) + std::string(" and ") +
237 std::to_string(rhs.GetRows()) +
238 std::string(" can't be added."));
239 ASSERTL1(result.GetColumns() == rhs.GetColumns(),
240 std::string("Matrices with different column counts ") +
241 std::to_string(result.GetColumns()) + std::string(" and ") +
242 std::to_string(rhs.GetColumns()) +
243 std::string(" can't be added."));
244
245 for (unsigned int i = 0; i < rhs.GetRows(); ++i)
246 {
247 for (unsigned int j = 0; j < rhs.GetColumns(); ++j)
248 {
249 result(i, j) = -result(i, j) + rhs(i, j);
250 }
251 }
252}

References ASSERTL1, Nektar::ConstMatrix< DataType >::GetColumns(), and Nektar::ConstMatrix< DataType >::GetRows().

◆ AddEqualNegatedLhs() [2/4]

template<typename DataType >
void Nektar::AddEqualNegatedLhs ( NekVector< DataType > &  result,
const NekVector< DataType > &  rhs 
)

Definition at line 538 of file NekVector.cpp.

540{
541 DataType *r_buf = result.GetRawPtr();
542 const DataType *rhs_buf = rhs.GetRawPtr();
543 const unsigned int rdim = rhs.GetDimension();
544 for (int i = 0; i < rdim; ++i)
545 {
546 r_buf[i] = -r_buf[i] + rhs_buf[i];
547 }
548}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ AddEqualNegatedLhs() [3/4]

template void Nektar::AddEqualNegatedLhs ( NekVector< NekDouble > &  result,
const NekVector< NekDouble > &  rhs 
)

◆ AddEqualNegatedLhs() [4/4]

template void Nektar::AddEqualNegatedLhs ( NekVector< NekSingle > &  result,
const NekVector< NekSingle > &  rhs 
)

◆ AddNegatedLhs() [1/4]

template<typename DataType , typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
void Nektar::AddNegatedLhs ( NekMatrix< DataType, StandardMatrixTag > &  result,
const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 294 of file MatrixOperations.cpp.

297{
298 ASSERTL1(lhs.GetRows() == rhs.GetRows(),
299 std::string("Matrices with different row counts ") +
300 std::to_string(lhs.GetRows()) + std::string(" and ") +
301 std::to_string(rhs.GetRows()) +
302 std::string(" can't be added."));
303 ASSERTL1(lhs.GetColumns() == rhs.GetColumns(),
304 std::string("Matrices with different column counts ") +
305 std::to_string(lhs.GetColumns()) + std::string(" and ") +
306 std::to_string(rhs.GetColumns()) +
307 std::string(" can't be added."));
308
309 for (unsigned int i = 0; i < lhs.GetRows(); ++i)
310 {
311 for (unsigned int j = 0; j < lhs.GetColumns(); ++j)
312 {
313 result(i, j) = -lhs(i, j) + rhs(i, j);
314 }
315 }
316}

References ASSERTL1.

◆ AddNegatedLhs() [2/4]

template<typename DataType >
void Nektar::AddNegatedLhs ( NekVector< DataType > &  result,
const NekVector< DataType > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 498 of file NekVector.cpp.

500{
501 DataType *r_buf = result.GetRawPtr();
502 const DataType *lhs_buf = lhs.GetRawPtr();
503 const DataType *rhs_buf = rhs.GetRawPtr();
504 const unsigned int ldim = lhs.GetDimension();
505 for (int i = 0; i < ldim; ++i)
506 {
507 r_buf[i] = -lhs_buf[i] + rhs_buf[i];
508 }
509}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ AddNegatedLhs() [3/4]

template void Nektar::AddNegatedLhs ( NekVector< NekDouble > &  result,
const NekVector< NekDouble > &  lhs,
const NekVector< NekDouble > &  rhs 
)

◆ AddNegatedLhs() [4/4]

template void Nektar::AddNegatedLhs ( NekVector< NekSingle > &  result,
const NekVector< NekSingle > &  lhs,
const NekVector< NekSingle > &  rhs 
)

◆ AsString() [1/3]

template<typename DataType >
std::string Nektar::AsString ( const NekVector< DataType > &  v)

Definition at line 1266 of file NekVector.cpp.

1267{
1268 unsigned int d = v.GetRows();
1269 std::string result = "(";
1270 for (unsigned int i = 0; i < d; ++i)
1271 {
1272 result += boost::lexical_cast<std::string>(v[i]);
1273 if (i < v.GetDimension() - 1)
1274 {
1275 result += ", ";
1276 }
1277 }
1278 result += ")";
1279 return result;
1280}
unsigned int GetRows() const
Definition: NekVector.cpp:206
std::vector< double > d(NPUPPER *NPUPPER)

References Nektar::UnitTests::d(), Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRows().

Referenced by Nektar::NekVector< DataType >::AsString().

◆ AsString() [2/3]

template std::string Nektar::AsString ( const NekVector< NekDouble > &  v)

◆ AsString() [3/3]

template std::string Nektar::AsString ( const NekVector< NekSingle > &  v)

◆ BOOST_AUTO_TEST_CASE() [1/3]

Nektar::BOOST_AUTO_TEST_CASE ( TestABPlusbCBlock  )

Definition at line 104 of file TestDgemmOptimizations.cpp.

105{
106 typedef NekMatrix<NekMatrix<double>, BlockMatrixTag> BlockMatrix;
107
108 double abuf[] = {1, 2, 3, 4};
109 double bbuf[] = {5, 6, 7, 8};
110 double cbuf[] = {9, 10, 11, 12};
111 double dbuf[] = {13, 14, 15, 16};
112 double beta = 7.0;
113 double alpha = 2.0;
114
115 std::shared_ptr<NekMatrix<double>> innerA(
116 new NekMatrix<double>(2, 2, abuf));
117 std::shared_ptr<NekMatrix<double>> innerB(
118 new NekMatrix<double>(2, 2, bbuf));
119 std::shared_ptr<NekMatrix<double>> innerC(
120 new NekMatrix<double>(2, 2, cbuf));
121 std::shared_ptr<NekMatrix<double>> innerD(
122 new NekMatrix<double>(2, 2, dbuf));
123
124 BlockMatrix A(2, 2, 2, 2);
125 BlockMatrix B(2, 2, 2, 2);
126 BlockMatrix C(2, 2, 2, 2);
127
128 A.SetBlock(0, 0, innerA);
129 A.SetBlock(0, 1, innerB);
130 A.SetBlock(1, 0, innerC);
131 A.SetBlock(1, 1, innerD);
132
133 B.SetBlock(0, 0, innerA);
134 B.SetBlock(0, 1, innerB);
135 B.SetBlock(1, 0, innerC);
136 B.SetBlock(1, 1, innerD);
137
138 C.SetBlock(0, 0, innerA);
139 C.SetBlock(0, 1, innerB);
140 C.SetBlock(1, 0, innerC);
141 C.SetBlock(1, 1, innerD);
142 double epsilon = 1e-11;
143
144 NekMatrix<double> result1 = A * B + C;
145 double expected_result_buf1[] = {123, 146, 307, 330, 157, 188, 405, 436,
146 191, 230, 503, 542, 225, 272, 601, 648};
147 NekMatrix<double> expected_result1(4, 4, expected_result_buf1);
148 BOOST_CHECK_EQUAL(expected_result1, result1);
149
150 NekMatrix<double> result2 = A * B + beta * C;
151 BOOST_CHECK_CLOSE(129.0, *result2(0, 0), epsilon);
152 BOOST_CHECK_CLOSE(158.0, *result2(1, 0), epsilon);
153 BOOST_CHECK_CLOSE(361.0, *result2(2, 0), epsilon);
154 BOOST_CHECK_CLOSE(390.0, *result2(3, 0), epsilon);
155 BOOST_CHECK_CLOSE(175.0, *result2(0, 1), epsilon);
156 BOOST_CHECK_CLOSE(212.0, *result2(1, 1), epsilon);
157 BOOST_CHECK_CLOSE(471.0, *result2(2, 1), epsilon);
158 BOOST_CHECK_CLOSE(508.0, *result2(3, 1), epsilon);
159 BOOST_CHECK_CLOSE(221.0, *result2(0, 2), epsilon);
160 BOOST_CHECK_CLOSE(266.0, *result2(1, 2), epsilon);
161 BOOST_CHECK_CLOSE(581.0, *result2(2, 2), epsilon);
162 BOOST_CHECK_CLOSE(626.0, *result2(3, 2), epsilon);
163 BOOST_CHECK_CLOSE(267.0, *result2(0, 3), epsilon);
164 BOOST_CHECK_CLOSE(320.0, *result2(1, 3), epsilon);
165 BOOST_CHECK_CLOSE(691.0, *result2(2, 3), epsilon);
166 BOOST_CHECK_CLOSE(744.0, *result2(3, 3), epsilon);
167
168 NekMatrix<double> result3 = alpha * A * B + C;
169 BOOST_CHECK_CLOSE(245.0, *result3(0, 0), epsilon);
170 BOOST_CHECK_CLOSE(290.0, *result3(1, 0), epsilon);
171 BOOST_CHECK_CLOSE(605.0, *result3(2, 0), epsilon);
172 BOOST_CHECK_CLOSE(650.0, *result3(3, 0), epsilon);
173 BOOST_CHECK_CLOSE(311.0, *result3(0, 1), epsilon);
174 BOOST_CHECK_CLOSE(372.0, *result3(1, 1), epsilon);
175 BOOST_CHECK_CLOSE(799.0, *result3(2, 1), epsilon);
176 BOOST_CHECK_CLOSE(860.0, *result3(3, 1), epsilon);
177 BOOST_CHECK_CLOSE(377.0, *result3(0, 2), epsilon);
178 BOOST_CHECK_CLOSE(454.0, *result3(1, 2), epsilon);
179 BOOST_CHECK_CLOSE(993.0, *result3(2, 2), epsilon);
180 BOOST_CHECK_CLOSE(1070.0, *result3(3, 2), epsilon);
181 BOOST_CHECK_CLOSE(443.0, *result3(0, 3), epsilon);
182 BOOST_CHECK_CLOSE(536.0, *result3(1, 3), epsilon);
183 BOOST_CHECK_CLOSE(1187.0, *result3(2, 3), epsilon);
184 BOOST_CHECK_CLOSE(1280.0, *result3(3, 3), epsilon);
185
186 NekMatrix<double> result4 = alpha * A * B + beta * C;
187 BOOST_CHECK_CLOSE(251.0, *result4(0, 0), epsilon);
188 BOOST_CHECK_CLOSE(302.0, *result4(1, 0), epsilon);
189 BOOST_CHECK_CLOSE(659.0, *result4(2, 0), epsilon);
190 BOOST_CHECK_CLOSE(710.0, *result4(3, 0), epsilon);
191 BOOST_CHECK_CLOSE(329.0, *result4(0, 1), epsilon);
192 BOOST_CHECK_CLOSE(396.0, *result4(1, 1), epsilon);
193 BOOST_CHECK_CLOSE(865.0, *result4(2, 1), epsilon);
194 BOOST_CHECK_CLOSE(932.0, *result4(3, 1), epsilon);
195 BOOST_CHECK_CLOSE(407.0, *result4(0, 2), epsilon);
196 BOOST_CHECK_CLOSE(490.0, *result4(1, 2), epsilon);
197 BOOST_CHECK_CLOSE(1071.0, *result4(2, 2), epsilon);
198 BOOST_CHECK_CLOSE(1154.0, *result4(3, 2), epsilon);
199 BOOST_CHECK_CLOSE(485.0, *result4(0, 3), epsilon);
200 BOOST_CHECK_CLOSE(584.0, *result4(1, 3), epsilon);
201 BOOST_CHECK_CLOSE(1277.0, *result4(2, 3), epsilon);
202 BOOST_CHECK_CLOSE(1376.0, *result4(3, 3), epsilon);
203
204 NekMatrix<double> result5 = alpha * (A * B) + C;
205 BOOST_CHECK_CLOSE(245.0, *result5(0, 0), epsilon);
206 BOOST_CHECK_CLOSE(290.0, *result5(1, 0), epsilon);
207 BOOST_CHECK_CLOSE(605.0, *result5(2, 0), epsilon);
208 BOOST_CHECK_CLOSE(650.0, *result5(3, 0), epsilon);
209 BOOST_CHECK_CLOSE(311.0, *result5(0, 1), epsilon);
210 BOOST_CHECK_CLOSE(372.0, *result5(1, 1), epsilon);
211 BOOST_CHECK_CLOSE(799.0, *result5(2, 1), epsilon);
212 BOOST_CHECK_CLOSE(860.0, *result5(3, 1), epsilon);
213 BOOST_CHECK_CLOSE(377.0, *result5(0, 2), epsilon);
214 BOOST_CHECK_CLOSE(454.0, *result5(1, 2), epsilon);
215 BOOST_CHECK_CLOSE(993.0, *result5(2, 2), epsilon);
216 BOOST_CHECK_CLOSE(1070.0, *result5(3, 2), epsilon);
217 BOOST_CHECK_CLOSE(443.0, *result5(0, 3), epsilon);
218 BOOST_CHECK_CLOSE(536.0, *result5(1, 3), epsilon);
219 BOOST_CHECK_CLOSE(1187.0, *result5(2, 3), epsilon);
220 BOOST_CHECK_CLOSE(1280.0, *result5(3, 3), epsilon);
221
222 NekMatrix<double> result6 = alpha * (A * B) + beta * C;
223 BOOST_CHECK_CLOSE(251.0, *result6(0, 0), epsilon);
224 BOOST_CHECK_CLOSE(302.0, *result6(1, 0), epsilon);
225 BOOST_CHECK_CLOSE(659.0, *result6(2, 0), epsilon);
226 BOOST_CHECK_CLOSE(710.0, *result6(3, 0), epsilon);
227 BOOST_CHECK_CLOSE(329.0, *result6(0, 1), epsilon);
228 BOOST_CHECK_CLOSE(396.0, *result6(1, 1), epsilon);
229 BOOST_CHECK_CLOSE(865.0, *result6(2, 1), epsilon);
230 BOOST_CHECK_CLOSE(932.0, *result6(3, 1), epsilon);
231 BOOST_CHECK_CLOSE(407.0, *result6(0, 2), epsilon);
232 BOOST_CHECK_CLOSE(490.0, *result6(1, 2), epsilon);
233 BOOST_CHECK_CLOSE(1071.0, *result6(2, 2), epsilon);
234 BOOST_CHECK_CLOSE(1154.0, *result6(3, 2), epsilon);
235 BOOST_CHECK_CLOSE(485.0, *result6(0, 3), epsilon);
236 BOOST_CHECK_CLOSE(584.0, *result6(1, 3), epsilon);
237 BOOST_CHECK_CLOSE(1277.0, *result6(2, 3), epsilon);
238 BOOST_CHECK_CLOSE(1376.0, *result6(3, 3), epsilon);
239}
@ beta
Gauss Radau pinned at x=-1,.
Definition: PointsType.h:59
NekMatrix< DenseMatrix, BlockMatrixTag > BlockMatrix
Definition: NekTypeDefs.hpp:59

References Nektar::LibUtilities::beta.

◆ BOOST_AUTO_TEST_CASE() [2/3]

Nektar::BOOST_AUTO_TEST_CASE ( TestABPlusbCScaled  )

Definition at line 45 of file TestDgemmOptimizations.cpp.

46{
47 typedef NekMatrix<NekMatrix<double>, ScaledMatrixTag> ScaledMatrix;
48
49 double abuf[] = {1, 2, 3, 4};
50 double bbuf[] = {5, 6, 7, 8};
51 double cbuf[] = {9, 10, 11, 12};
52 double beta = 7.0;
53 double alpha = 2.0;
54
55 std::shared_ptr<NekMatrix<double>> innerA(
56 new NekMatrix<double>(2, 2, abuf));
57 std::shared_ptr<NekMatrix<double>> innerB(
58 new NekMatrix<double>(2, 2, bbuf));
59 std::shared_ptr<NekMatrix<double>> innerC(
60 new NekMatrix<double>(2, 2, cbuf));
61
62 ScaledMatrix A(2.0, innerA);
63 ScaledMatrix B(3.0, innerB);
64 ScaledMatrix C(4.0, innerC);
65 double epsilon = 1e-11;
66
67 NekMatrix<double> result1 = A * B + C;
68 BOOST_CHECK_CLOSE(174.0, *result1(0, 0), epsilon);
69 BOOST_CHECK_CLOSE(244.0, *result1(1, 0), epsilon);
70 BOOST_CHECK_CLOSE(230.0, *result1(0, 1), epsilon);
71 BOOST_CHECK_CLOSE(324.0, *result1(1, 1), epsilon);
72
73 NekMatrix<double> result2 = A * B + beta * C;
74 BOOST_CHECK_CLOSE(390.0, *result2(0, 0), epsilon);
75 BOOST_CHECK_CLOSE(484.0, *result2(1, 0), epsilon);
76 BOOST_CHECK_CLOSE(494.0, *result2(0, 1), epsilon);
77 BOOST_CHECK_CLOSE(612.0, *result2(1, 1), epsilon);
78
79 NekMatrix<double> result3 = alpha * A * B + C;
80 BOOST_CHECK_CLOSE(312.0, *result3(0, 0), epsilon);
81 BOOST_CHECK_CLOSE(448.0, *result3(1, 0), epsilon);
82 BOOST_CHECK_CLOSE(416.0, *result3(0, 1), epsilon);
83 BOOST_CHECK_CLOSE(600.0, *result3(1, 1), epsilon);
84
85 NekMatrix<double> result4 = alpha * A * B + beta * C;
86 BOOST_CHECK_CLOSE(528.0, *result4(0, 0), epsilon);
87 BOOST_CHECK_CLOSE(688.0, *result4(1, 0), epsilon);
88 BOOST_CHECK_CLOSE(680.0, *result4(0, 1), epsilon);
89 BOOST_CHECK_CLOSE(888.0, *result4(1, 1), epsilon);
90
91 NekMatrix<double> result5 = alpha * (A * B) + C;
92 BOOST_CHECK_CLOSE(312.0, *result5(0, 0), epsilon);
93 BOOST_CHECK_CLOSE(448.0, *result5(1, 0), epsilon);
94 BOOST_CHECK_CLOSE(416.0, *result5(0, 1), epsilon);
95 BOOST_CHECK_CLOSE(600.0, *result5(1, 1), epsilon);
96
97 NekMatrix<double> result6 = alpha * (A * B) + beta * C;
98 BOOST_CHECK_CLOSE(528.0, *result6(0, 0), epsilon);
99 BOOST_CHECK_CLOSE(688.0, *result6(1, 0), epsilon);
100 BOOST_CHECK_CLOSE(680.0, *result6(0, 1), epsilon);
101 BOOST_CHECK_CLOSE(888.0, *result6(1, 1), epsilon);
102}
NekMatrix< DenseMatrix, ScaledMatrixTag > ScaledMatrix
Definition: NekTypeDefs.hpp:55

References Nektar::LibUtilities::beta.

◆ BOOST_AUTO_TEST_CASE() [3/3]

Nektar::BOOST_AUTO_TEST_CASE ( TestCanGetRawPtr  )

Definition at line 44 of file TestCanGetRawPtr.cpp.

45{
46 static_assert(CanGetRawPtr<NekMatrix<double>>::value, "Should be true");
47 static_assert(
48 CanGetRawPtr<NekMatrix<NekMatrix<double>, ScaledMatrixTag>>::value,
49 "Should be true");
50 static_assert(
51 !CanGetRawPtr<NekMatrix<NekMatrix<double>, BlockMatrixTag>>::value,
52 "Should be false");
53}

◆ convertCooToBco()

void Nektar::convertCooToBco ( const unsigned int  blkDim,
const COOMatType cooMat,
BCOMatType bcoMat 
)

Definition at line 46 of file SparseUtils.cpp.

48{
51 int rowcoord, localRow, blkRowCoord;
52 int colcoord, localCol, blkColCoord;
53
54 for (entry = cooMat.begin(); entry != cooMat.end(); entry++)
55 {
56 rowcoord = (entry->first).first;
57 colcoord = (entry->first).second;
58
59 blkRowCoord = rowcoord / blkDim;
60 blkColCoord = colcoord / blkDim;
61
62 CoordType blkCoords = std::make_pair(blkRowCoord, blkColCoord);
63 blk = bcoMat.find(blkCoords);
64 if (blk == bcoMat.end())
65 {
66 BCOEntryType b(blkDim * blkDim, 0.0);
67 bcoMat[blkCoords] = b;
68 }
69
70 localRow = rowcoord % blkDim;
71 localCol = colcoord % blkDim;
72
73 // transpose it: NIST SpBLAS expects Fortran ordering
74 // of dense subblocks
75 const unsigned int localoffset = localRow + localCol * blkDim;
76 (bcoMat[blkCoords])[localoffset] = entry->second;
77 }
78}
COOMatType::const_iterator COOMatTypeConstIt
std::pair< IndexType, IndexType > CoordType
BCOMatType::const_iterator BCOMatTypeConstIt

Referenced by Nektar::MultiRegions::GlobalMatrix::GlobalMatrix().

◆ CopyArray()

template<typename ConstDataType , typename DataType >
void Nektar::CopyArray ( const Array< OneD, ConstDataType > &  source,
Array< OneD, DataType > &  dest 
)

◆ CopyArrayN()

template<typename ConstDataType , typename DataType >
void Nektar::CopyArrayN ( const Array< OneD, ConstDataType > &  source,
Array< OneD, DataType > &  dest,
typename Array< OneD, DataType >::size_type  n 
)

◆ CreateStorage() [1/4]

template<typename Dim , typename DataType , typename ExtentListType >
std::shared_ptr< boost::multi_array_ref< DataType, Dim::Value > > Nektar::CreateStorage ( const ExtentListType &  extent)

Definition at line 181 of file ArrayPolicies.hpp.

183{
184 typedef boost::multi_array_ref<DataType, Dim::Value> ArrayType;
185 size_t size = std::accumulate(extent.begin(), extent.end(), 1,
186 std::multiplies<size_t>());
187 DataType *storage = MemoryManager<DataType>::RawAllocate(size);
189 [=]([[maybe_unused]] boost::multi_array_ref<DataType, Dim::Value>
190 *ptr) {
193 },
194 storage, extent);
195}
General purpose memory allocation routines with the ability to allocate from thread specific memory p...

References Nektar::MemoryManager< DataType >::AllocateSharedPtrD(), Nektar::MemoryManager< DataType >::RawAllocate(), and Nektar::MemoryManager< DataType >::RawDeallocate().

Referenced by Nektar::Array< OneD, const DataType >::Array().

◆ CreateStorage() [2/4]

template<typename DataType >
std::shared_ptr< boost::multi_array_ref< DataType, 1 > > Nektar::CreateStorage ( size_t  d1)

Definition at line 198 of file ArrayPolicies.hpp.

199{
200 std::vector<size_t> extents = {d1};
201 return CreateStorage<OneD, DataType>(extents);
202}

◆ CreateStorage() [3/4]

template<typename DataType >
std::shared_ptr< boost::multi_array_ref< DataType, 2 > > Nektar::CreateStorage ( size_t  d1,
size_t  d2 
)

Definition at line 205 of file ArrayPolicies.hpp.

207{
208 std::vector<size_t> extents = {d1, d2};
209 return CreateStorage<TwoD, DataType>(extents);
210}

◆ CreateStorage() [4/4]

template<typename DataType >
std::shared_ptr< boost::multi_array_ref< DataType, 3 > > Nektar::CreateStorage ( size_t  d1,
size_t  d2,
size_t  d3 
)

Definition at line 213 of file ArrayPolicies.hpp.

216{
217 std::vector<size_t> extents = {d1, d2, d3};
218 return CreateStorage<ThreeD, DataType>(extents);
219}

◆ createVectorFromPoints() [1/3]

template<typename DataType >
NekVector< DataType > Nektar::createVectorFromPoints ( const NekPoint< DataType > &  source,
const NekPoint< DataType > &  dest 
)

Definition at line 995 of file NekVector.cpp.

997{
998 NekVector<DataType> result(3, 0.0);
999 for (unsigned int i = 0; i < 3; ++i)
1000 {
1001 result[i] = dest[i] - source[i];
1002 }
1003 return result;
1004}

◆ createVectorFromPoints() [2/3]

template NekVector< NekDouble > Nektar::createVectorFromPoints ( const NekPoint< NekDouble > &  source,
const NekPoint< NekDouble > &  dest 
)

◆ createVectorFromPoints() [3/3]

template NekVector< NekSingle > Nektar::createVectorFromPoints ( const NekPoint< NekSingle > &  source,
const NekPoint< NekSingle > &  dest 
)

◆ Cross() [1/3]

template<typename DataType >
NekVector< DataType > Nektar::Cross ( const NekVector< DataType > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 1246 of file NekVector.cpp.

1248{
1249 ASSERTL1(lhs.GetDimension() == 3 && rhs.GetDimension() == 3,
1250 "Cross is only valid for 3D vectors.");
1251
1252 DataType first = lhs.y() * rhs.z() - lhs.z() * rhs.y();
1253 DataType second = lhs.z() * rhs.x() - lhs.x() * rhs.z();
1254 DataType third = lhs.x() * rhs.y() - lhs.y() * rhs.x();
1255
1256 NekVector<DataType> result(first, second, third);
1257 return result;
1258}
boost::call_traits< DataType >::reference x()
Definition: NekVector.cpp:275
boost::call_traits< DataType >::reference y()
Definition: NekVector.cpp:282
boost::call_traits< DataType >::reference z()
Definition: NekVector.cpp:289

References ASSERTL1, Nektar::NekVector< DataType >::GetDimension(), Nektar::NekVector< DataType >::x(), Nektar::NekVector< DataType >::y(), and Nektar::NekVector< DataType >::z().

Referenced by Nektar::NekVector< DataType >::Cross().

◆ Cross() [2/3]

template NekVector< NekDouble > Nektar::Cross ( const NekVector< NekDouble > &  lhs,
const NekVector< NekDouble > &  rhs 
)

◆ Cross() [3/3]

template NekVector< NekSingle > Nektar::Cross ( const NekVector< NekSingle > &  lhs,
const NekVector< NekSingle > &  rhs 
)

◆ DiagonalBlockFullScalMatrixMultiply() [1/2]

void Nektar::DiagonalBlockFullScalMatrixMultiply ( NekVector< double > &  result,
const NekMatrix< NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag >, BlockMatrixTag > &  lhs,
const NekVector< double > &  rhs 
)

Definition at line 247 of file MatrixVectorMultiplication.cpp.

253{
254 unsigned int numberOfBlockRows = lhs.GetNumberOfBlockRows();
255 double *result_ptr = result.GetRawPtr();
256 const double *rhs_ptr = rhs.GetRawPtr();
257
260 lhs.GetBlockSizes(rowSizes, colSizes);
261
262 unsigned int curResultRow = 0;
263 unsigned int curWrapperRow = 0;
264 unsigned int rowsInBlock = 0;
265 unsigned int columnsInBlock = 0;
266 for (unsigned int blockRow = 0; blockRow < numberOfBlockRows; ++blockRow)
267 {
268 curResultRow += rowsInBlock;
269 curWrapperRow += columnsInBlock;
270 if (blockRow == 0)
271 {
272 rowsInBlock = rowSizes[blockRow] + 1;
273 columnsInBlock = colSizes[blockRow] + 1;
274 }
275 else
276 {
277 rowsInBlock = rowSizes[blockRow] - rowSizes[blockRow - 1];
278 columnsInBlock = colSizes[blockRow] - colSizes[blockRow - 1];
279 }
280
281 if (rowsInBlock == 0)
282 {
283 continue;
284 }
285 if (columnsInBlock == 0)
286 {
287 std::fill(result.begin() + curResultRow,
288 result.begin() + curResultRow + rowsInBlock, 0.0);
289 continue;
290 }
291
292 const DNekScalMat *block = lhs.GetBlockPtr(blockRow, blockRow);
293 if (!block)
294 {
295 continue;
296 }
297
298 double *resultWrapper = result_ptr + curResultRow;
299 const double *rhsWrapper = rhs_ptr + curWrapperRow;
300
301 // Multiply
302 const unsigned int *size = block->GetSize();
303 Blas::Gemv('N', size[0], size[1], block->Scale(), block->GetRawPtr(),
304 size[0], rhsWrapper, 1, 0.0, resultWrapper, 1);
305 }
306 curResultRow += rowsInBlock;
307 if (curResultRow < result.GetRows())
308 {
309 std::fill(result.begin() + curResultRow, result.end(), 0.0);
310 }
311}
iterator begin()
Definition: NekVector.cpp:235
iterator end()
Definition: NekVector.cpp:241
static void Gemv(const char &trans, const int &m, const int &n, const double &alpha, const double *a, const int &lda, const double *x, const int &incx, const double &beta, double *y, const int &incy)
BLAS level 2: Matrix vector multiply y = alpha A x plus beta y where A[m x n].
Definition: Blas.hpp:191
NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag > DNekScalMat

References Nektar::NekVector< DataType >::begin(), Nektar::NekVector< DataType >::end(), Blas::Gemv(), Nektar::NekVector< DataType >::GetRawPtr(), and Nektar::NekVector< DataType >::GetRows().

◆ DiagonalBlockFullScalMatrixMultiply() [2/2]

void Nektar::DiagonalBlockFullScalMatrixMultiply ( NekVector< NekSingle > &  result,
const NekMatrix< NekMatrix< NekMatrix< NekSingle, StandardMatrixTag >, ScaledMatrixTag >, BlockMatrixTag > &  lhs,
const NekVector< NekSingle > &  rhs 
)

Definition at line 313 of file MatrixVectorMultiplication.cpp.

319{
320 unsigned int numberOfBlockRows = lhs.GetNumberOfBlockRows();
321 NekSingle *result_ptr = result.GetRawPtr();
322 const NekSingle *rhs_ptr = rhs.GetRawPtr();
323
326 lhs.GetBlockSizes(rowSizes, colSizes);
327
328 unsigned int curResultRow = 0;
329 unsigned int curWrapperRow = 0;
330 unsigned int rowsInBlock = 0;
331 unsigned int columnsInBlock = 0;
332 for (unsigned int blockRow = 0; blockRow < numberOfBlockRows; ++blockRow)
333 {
334 curResultRow += rowsInBlock;
335 curWrapperRow += columnsInBlock;
336 if (blockRow == 0)
337 {
338 rowsInBlock = rowSizes[blockRow] + 1;
339 columnsInBlock = colSizes[blockRow] + 1;
340 }
341 else
342 {
343 rowsInBlock = rowSizes[blockRow] - rowSizes[blockRow - 1];
344 columnsInBlock = colSizes[blockRow] - colSizes[blockRow - 1];
345 }
346
347 if (rowsInBlock == 0)
348 {
349 continue;
350 }
351 if (columnsInBlock == 0)
352 {
353 std::fill(result.begin() + curResultRow,
354 result.begin() + curResultRow + rowsInBlock, 0.0);
355 continue;
356 }
357
358 const SNekScalMat *block = lhs.GetBlockPtr(blockRow, blockRow);
359 if (!block)
360 {
361 continue;
362 }
363
364 NekSingle *resultWrapper = result_ptr + curResultRow;
365 const NekSingle *rhsWrapper = rhs_ptr + curWrapperRow;
366
367 // Multiply
368 const unsigned int *size = block->GetSize();
369 Blas::Gemv('N', size[0], size[1], block->Scale(), block->GetRawPtr(),
370 size[0], rhsWrapper, 1, 0.0, resultWrapper, 1);
371 }
372 curResultRow += rowsInBlock;
373 if (curResultRow < result.GetRows())
374 {
375 std::fill(result.begin() + curResultRow, result.end(), 0.0);
376 }
377}
NekMatrix< NekMatrix< NekSingle, StandardMatrixTag >, ScaledMatrixTag > SNekScalMat

References Nektar::NekVector< DataType >::begin(), Nektar::NekVector< DataType >::end(), Blas::Gemv(), Nektar::NekVector< DataType >::GetRawPtr(), and Nektar::NekVector< DataType >::GetRows().

◆ DiagonalBlockMatrixMultiply()

template<typename DataType , typename LhsInnerMatrixType >
void Nektar::DiagonalBlockMatrixMultiply ( NekVector< DataType > &  result,
const NekMatrix< LhsInnerMatrixType, BlockMatrixTag > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 187 of file MatrixVectorMultiplication.cpp.

191{
192 unsigned int numberOfBlockRows = lhs.GetNumberOfBlockRows();
193 DataType *result_ptr = result.GetRawPtr();
194 const DataType *rhs_ptr = rhs.GetRawPtr();
195
198 lhs.GetBlockSizes(rowSizes, colSizes);
199
200 unsigned int curResultRow = 0;
201 unsigned int curWrapperRow = 0;
202 unsigned int rowsInBlock = 0;
203 unsigned int columnsInBlock = 0;
204 for (unsigned int blockRow = 0; blockRow < numberOfBlockRows; ++blockRow)
205 {
206 curResultRow += rowsInBlock;
207 curWrapperRow += columnsInBlock;
208 if (blockRow == 0)
209 {
210 rowsInBlock = rowSizes[blockRow] + 1;
211 columnsInBlock = colSizes[blockRow] + 1;
212 }
213 else
214 {
215 rowsInBlock = rowSizes[blockRow] - rowSizes[blockRow - 1];
216 columnsInBlock = colSizes[blockRow] - colSizes[blockRow - 1];
217 }
218
219 if (rowsInBlock == 0)
220 {
221 continue;
222 }
223 if (columnsInBlock == 0)
224 {
225 std::fill(result.begin() + curResultRow,
226 result.begin() + curResultRow + rowsInBlock, 0.0);
227 continue;
228 }
229
230 const LhsInnerMatrixType *block = lhs.GetBlockPtr(blockRow, blockRow);
231 if (!block)
232 {
233 continue;
234 }
235
236 DataType *resultWrapper = result_ptr + curResultRow;
237 const DataType *rhsWrapper = rhs_ptr + curWrapperRow;
238 Multiply(resultWrapper, *block, rhsWrapper);
239 }
240 curResultRow += rowsInBlock;
241 if (curResultRow < result.GetRows())
242 {
243 std::fill(result.begin() + curResultRow, result.end(), 0.0);
244 }
245}
NekVector< NekSingle > const NekVector< NekSingle > &NekVector< DataType > Multiply(const NekMatrix< LhsDataType, MatrixType > &lhs, const NekVector< DataType > &rhs)

References Nektar::NekVector< DataType >::begin(), Nektar::NekVector< DataType >::end(), Nektar::NekVector< DataType >::GetRawPtr(), Nektar::NekVector< DataType >::GetRows(), and Multiply().

Referenced by Multiply().

◆ distanceBetween()

template<typename DataType >
boost::call_traits< DataType >::value_type Nektar::distanceBetween ( const NekPoint< DataType > &  lhs,
const NekPoint< DataType > &  rhs 
)

Definition at line 462 of file NekPoint.hpp.

464{
465 DataType result = 0.0;
466 for (unsigned int i = 0; i < 3; ++i)
467 {
468 DataType temp = lhs[i] - rhs[i];
469 result += temp * temp;
470 }
471 return sqrt(result);
472}
scalarT< T > sqrt(scalarT< T > in)
Definition: scalar.hpp:294

References tinysimd::sqrt().

◆ Divide() [1/8]

template<typename DataType >
NekVector< DataType > Nektar::Divide ( const NekVector< DataType > &  lhs,
const NekDouble rhs 
)

Definition at line 741 of file NekVector.cpp.

742{
743 NekVector<DataType> result(lhs.GetDimension());
744 Divide(result, lhs, rhs);
745 return result;
746}
template NekVector< NekSingle > Divide(const NekVector< NekSingle > &lhs, const NekSingle &rhs)

References Divide(), and Nektar::NekVector< DataType >::GetDimension().

◆ Divide() [2/8]

template<typename DataType >
NekVector< DataType > Nektar::Divide ( const NekVector< DataType > &  lhs,
const NekSingle rhs 
)

Definition at line 749 of file NekVector.cpp.

750{
751 NekVector<DataType> result(lhs.GetDimension());
752 Divide(result, lhs, rhs);
753 return result;
754}

References Divide(), and Nektar::NekVector< DataType >::GetDimension().

◆ Divide() [3/8]

template NekVector< NekDouble > Nektar::Divide ( const NekVector< NekDouble > &  lhs,
const NekDouble rhs 
)

◆ Divide() [4/8]

template NekVector< NekSingle > Nektar::Divide ( const NekVector< NekSingle > &  lhs,
const NekSingle rhs 
)

Referenced by Divide().

◆ Divide() [5/8]

template void Nektar::Divide ( NekVector< NekDouble > &  result,
const NekVector< NekDouble > &  lhs,
const NekDouble rhs 
)

◆ Divide() [6/8]

template void Nektar::Divide ( NekVector< NekSingle > &  result,
const NekVector< NekSingle > &  lhs,
const NekSingle rhs 
)

◆ Divide() [7/8]

template<typename ResultDataType , typename InputDataType >
void Nektar::Divide ( NekVector< ResultDataType > &  result,
const NekVector< InputDataType > &  lhs,
const NekDouble rhs 
)

Definition at line 675 of file NekVector.cpp.

677{
678 ResultDataType *r_buf = result.GetRawPtr();
679 typename std::add_const<InputDataType>::type *lhs_buf = lhs.GetRawPtr();
680
681 const unsigned int ldim = lhs.GetDimension();
682 for (int i = 0; i < ldim; ++i)
683 {
684 r_buf[i] = lhs_buf[i] / rhs;
685 }
686}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

Referenced by operator/().

◆ Divide() [8/8]

template<typename ResultDataType , typename InputDataType >
void Nektar::Divide ( NekVector< ResultDataType > &  result,
const NekVector< InputDataType > &  lhs,
const NekSingle rhs 
)

Definition at line 689 of file NekVector.cpp.

691{
692 ResultDataType *r_buf = result.GetRawPtr();
693 typename std::add_const<InputDataType>::type *lhs_buf = lhs.GetRawPtr();
694
695 const unsigned int ldim = lhs.GetDimension();
696 for (int i = 0; i < ldim; ++i)
697 {
698 r_buf[i] = lhs_buf[i] / rhs;
699 }
700}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ DivideEqual() [1/4]

template void Nektar::DivideEqual ( NekVector< NekDouble > &  result,
const NekDouble rhs 
)

◆ DivideEqual() [2/4]

template void Nektar::DivideEqual ( NekVector< NekSingle > &  result,
const NekSingle rhs 
)

◆ DivideEqual() [3/4]

template<typename ResultDataType >
void Nektar::DivideEqual ( NekVector< ResultDataType > &  result,
const NekDouble rhs 
)

Definition at line 711 of file NekVector.cpp.

712{
713 ResultDataType *r_buf = result.GetRawPtr();
714
715 const unsigned int resdim = result.GetDimension();
716 for (int i = 0; i < resdim; ++i)
717 {
718 r_buf[i] /= rhs;
719 }
720}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ DivideEqual() [4/4]

template<typename ResultDataType >
void Nektar::DivideEqual ( NekVector< ResultDataType > &  result,
const NekSingle rhs 
)

Definition at line 723 of file NekVector.cpp.

724{
725 ResultDataType *r_buf = result.GetRawPtr();
726
727 const unsigned int resdim = result.GetDimension();
728 for (int i = 0; i < resdim; ++i)
729 {
730 r_buf[i] /= rhs;
731 }
732}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ Dot() [1/3]

template<typename DataType >
DataType Nektar::Dot ( const NekVector< DataType > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 1193 of file NekVector.cpp.

1194{
1195 ASSERTL1(lhs.GetDimension() == rhs.GetDimension(),
1196 "Dot, dimension of the two operands must be identical.");
1197
1198 DataType result = DataType(0);
1199 const unsigned int ldim = lhs.GetDimension();
1200 for (unsigned int i = 0; i < ldim; ++i)
1201 {
1202 result += lhs[i] * rhs[i];
1203 }
1204
1205 return result;
1206}

References ASSERTL1, and Nektar::NekVector< DataType >::GetDimension().

Referenced by Nektar::PulseWaveSystem::BifurcationRiemann(), Nektar::NekVector< DataType >::Dot(), Nektar::PulseWaveSystem::InterfaceRiemann(), and Nektar::PulseWaveSystem::MergingRiemann().

◆ Dot() [2/3]

template NekDouble Nektar::Dot ( const NekVector< NekDouble > &  lhs,
const NekVector< NekDouble > &  rhs 
)

◆ Dot() [3/3]

template NekSingle Nektar::Dot ( const NekVector< NekSingle > &  lhs,
const NekVector< NekSingle > &  rhs 
)

◆ EmptyString()

bool Nektar::EmptyString ( const char *  s)
inline

Check to see whether the given string s is empty (or null).

Definition at line 50 of file Metric.h.

51{
52 if (!s)
53 {
54 return true;
55 }
56 return std::string(s) == "";
57}

Referenced by Nektar::MetricEigenvalue::MetricEigenvalue(), Nektar::MetricExecutionTime::MetricExecutionTime(), Nektar::MetricL2::MetricL2(), Nektar::MetricLInf::MetricLInf(), Nektar::MetricPrecon::MetricPrecon(), and Nektar::MetricPyUnitTest::MetricPyUnitTest().

◆ findPointAlongVector() [1/3]

template<typename DataType >
NekPoint< DataType > Nektar::findPointAlongVector ( const NekVector< DataType > &  lhs,
const DataType &  t 
)

Definition at line 1013 of file NekVector.cpp.

1015{
1016 NekPoint<DataType> result;
1017 for (unsigned int i = 0; i < 3; ++i)
1018 {
1019 result[i] = lhs[i] * t;
1020 }
1021
1022 return result;
1023}

◆ findPointAlongVector() [2/3]

template NekPoint< NekDouble > Nektar::findPointAlongVector ( const NekVector< NekDouble > &  lhs,
const NekDouble t 
)

◆ findPointAlongVector() [3/3]

template NekPoint< NekSingle > Nektar::findPointAlongVector ( const NekVector< NekSingle > &  lhs,
const NekSingle t 
)

◆ FromString() [1/2]

template<typename DataType >
std::vector< DataType > Nektar::FromString ( const std::string &  str)

Definition at line 1061 of file NekVector.cpp.

1062{
1063 std::vector<DataType> result;
1064
1065 try
1066 {
1067 typedef boost::tokenizer<boost::char_separator<char>> tokenizer;
1068 boost::char_separator<char> sep("(<,>) ");
1069 tokenizer tokens(str, sep);
1070 for (tokenizer::iterator strIter = tokens.begin();
1071 strIter != tokens.end(); ++strIter)
1072 {
1073 result.push_back(boost::lexical_cast<DataType>(*strIter));
1074 }
1075 }
1076 catch (boost::bad_lexical_cast &)
1077 {
1078 }
1079
1080 return result;
1081}

◆ FromString() [2/2]

template std::vector< NekDouble > Nektar::FromString ( const std::string &  str)

◆ fromString()

template<typename DataType >
bool Nektar::fromString ( const std::string &  str,
NekPoint< DataType > &  result 
)

Definition at line 475 of file NekPoint.hpp.

476{
477 try
478 {
479 typedef boost::tokenizer<boost::char_separator<char>> tokenizer;
480 boost::char_separator<char> sep("(<,>) ");
481 tokenizer tokens(str, sep);
482 unsigned int i = 0;
483 for (tokenizer::iterator iter = tokens.begin(); iter != tokens.end();
484 ++iter)
485 {
486 result[i] = boost::lexical_cast<DataType>(*iter);
487 ++i;
488 }
489
490 return i == 3;
491 }
492 catch (boost::bad_lexical_cast &)
493 {
494 return false;
495 }
496}

Referenced by Nektar::NekPoint< data_type >::NekPoint().

◆ FullBlockMatrixMultiply()

template<typename DataType , typename LhsInnerMatrixType >
void Nektar::FullBlockMatrixMultiply ( NekVector< DataType > &  result,
const NekMatrix< LhsInnerMatrixType, BlockMatrixTag > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 118 of file MatrixVectorMultiplication.cpp.

122{
123 unsigned int numberOfBlockRows = lhs.GetNumberOfBlockRows();
124 unsigned int numberOfBlockColumns = lhs.GetNumberOfBlockColumns();
125 DataType *result_ptr = result.GetRawPtr();
126 const DataType *rhs_ptr = rhs.GetRawPtr();
127
128 for (unsigned int i = 0; i < result.GetDimension(); ++i)
129 {
130 result_ptr[i] = DataType(0);
131 }
132 Array<OneD, DataType> temp(result.GetDimension());
133 DataType *temp_ptr = temp.get();
134
135 unsigned int curResultRow = 0;
136 for (unsigned int blockRow = 0; blockRow < numberOfBlockRows; ++blockRow)
137 {
138 unsigned int rowsInBlock = lhs.GetNumberOfRowsInBlockRow(blockRow);
139
140 if (blockRow != 0)
141 {
142 curResultRow += lhs.GetNumberOfRowsInBlockRow(blockRow - 1);
143 }
144
145 if (rowsInBlock == 0)
146 {
147 continue;
148 }
149
150 DataType *resultWrapper = result_ptr + curResultRow;
151
152 unsigned int curWrapperRow = 0;
153 for (unsigned int blockColumn = 0; blockColumn < numberOfBlockColumns;
154 ++blockColumn)
155 {
156 if (blockColumn != 0)
157 {
158 curWrapperRow +=
159 lhs.GetNumberOfColumnsInBlockColumn(blockColumn - 1);
160 }
161
162 const LhsInnerMatrixType *block =
163 lhs.GetBlockPtr(blockRow, blockColumn);
164 if (!block)
165 {
166 continue;
167 }
168
169 unsigned int columnsInBlock =
170 lhs.GetNumberOfColumnsInBlockColumn(blockColumn);
171 if (columnsInBlock == 0)
172 {
173 continue;
174 }
175
176 const DataType *rhsWrapper = rhs_ptr + curWrapperRow;
177 Multiply(temp_ptr, *block, rhsWrapper);
178 for (unsigned int i = 0; i < rowsInBlock; ++i)
179 {
180 resultWrapper[i] += temp_ptr[i];
181 }
182 }
183 }
184}

References Nektar::Array< OneD, DataType >::get(), Nektar::NekVector< DataType >::GetDimension(), Nektar::NekVector< DataType >::GetRawPtr(), and Multiply().

Referenced by Multiply().

◆ GenerateFullMatrices()

void Nektar::GenerateFullMatrices ( double  values[],
double  scale,
std::shared_ptr< NekMatrix< NekDouble, StandardMatrixTag > > &  m1,
std::shared_ptr< NekMatrix< NekMatrix< NekDouble >, ScaledMatrixTag > > &  m2,
std::shared_ptr< NekMatrix< NekMatrix< NekDouble >, BlockMatrixTag > > &  m3 
)

Definition at line 45 of file TestNekMatrixOperations.cpp.

50{
51 m1 =
52 std::make_shared<NekMatrix<NekDouble, StandardMatrixTag>>(4, 4, values);
53
54 double inner_values[16];
55 std::transform(
56 values, values + 16, inner_values,
57 std::bind(std::divides<NekDouble>(), std::placeholders::_1, scale));
58
59 std::shared_ptr<NekMatrix<NekDouble>> inner(
60 new NekMatrix<NekDouble>(4, 4, inner_values));
61 m2 = std::make_shared<NekMatrix<NekMatrix<NekDouble>, ScaledMatrixTag>>(
62 scale, inner);
63
64 double block_1_values[] = {values[0], values[1], values[4], values[5]};
65 double block_2_values[] = {values[2], values[3], values[6], values[7]};
66 double block_3_values[] = {values[8], values[9], values[12], values[13]};
67 double block_4_values[] = {values[10], values[11], values[14], values[15]};
68 std::shared_ptr<NekMatrix<NekDouble>> block1(
69 new NekMatrix<NekDouble>(2, 2, block_1_values));
70 std::shared_ptr<NekMatrix<NekDouble>> block2(
71 new NekMatrix<NekDouble>(2, 2, block_2_values));
72 std::shared_ptr<NekMatrix<NekDouble>> block3(
73 new NekMatrix<NekDouble>(2, 2, block_3_values));
74 std::shared_ptr<NekMatrix<NekDouble>> block4(
75 new NekMatrix<NekDouble>(2, 2, block_4_values));
76
77 m3 = std::make_shared<NekMatrix<NekMatrix<NekDouble>, BlockMatrixTag>>(
78 2, 2, 2, 2);
79 m3->SetBlock(0, 0, block1);
80 m3->SetBlock(1, 0, block2);
81 m3->SetBlock(0, 1, block3);
82 m3->SetBlock(1, 1, block4);
83}

Referenced by Nektar::MatrixOperationTests::BOOST_AUTO_TEST_CASE(), and Nektar::MatrixSubtractionTests::BOOST_AUTO_TEST_CASE().

◆ GenerateMatrices()

template<typename NumberType >
void Nektar::GenerateMatrices ( const NekMatrix< NumberType, StandardMatrixTag > &  m1,
NumberType  scale,
unsigned int  blockRows,
unsigned int  blockColumns,
std::shared_ptr< NekMatrix< NekMatrix< NumberType, StandardMatrixTag >, ScaledMatrixTag > > &  m2,
std::shared_ptr< NekMatrix< NekMatrix< NumberType >, BlockMatrixTag > > &  m3 
)

Definition at line 98 of file TestCombinationRunner.h.

104{
105 NumberType *inner_values = new NumberType[m1.GetStorageSize()];
106 std::transform(
107 m1.begin(), m1.end(), inner_values,
108 std::bind(std::divides<NumberType>(), std::placeholders::_1, scale));
109 MatrixStorage s = m1.GetType();
110
111 std::shared_ptr<NekMatrix<NumberType, StandardMatrixTag>> inner(
113 m1.GetRows(), m1.GetColumns(), inner_values, s,
114 m1.GetNumberOfSubDiagonals(), m1.GetNumberOfSuperDiagonals()));
115 m2 = std::make_shared<
117 scale, inner);
118
119 unsigned int numberOfRows = m1.GetRows() / blockRows;
120 unsigned int numberOfColumns = m1.GetColumns() / blockColumns;
121 m3 = std::make_shared<NekMatrix<NekMatrix<NumberType>, BlockMatrixTag>>(
122 blockRows, blockColumns, numberOfRows, numberOfColumns);
123
124 for (unsigned int blockRow = 0; blockRow < blockRows; ++blockRow)
125 {
126 for (unsigned int blockColumn = 0; blockColumn < blockColumns;
127 ++blockColumn)
128 {
129 std::shared_ptr<NekMatrix<NumberType>> block(
130 new NekMatrix<NumberType>(numberOfRows, numberOfColumns));
131 for (unsigned int i = 0; i < numberOfRows; ++i)
132 {
133 for (unsigned int j = 0; j < numberOfRows; ++j)
134 {
135 (*block)(i, j) = m1(numberOfRows * blockRow + i,
136 numberOfColumns * blockColumn + j);
137 }
138 }
139
140 m3->SetBlock(blockRow, blockColumn, block);
141 }
142 }
143
144 delete[] inner_values;
145}

Referenced by Nektar::StandardMatrixOperationsUnitTests::BOOST_AUTO_TEST_CASE(), and Nektar::BandedMatrixMatrixMultiplicationTests::BOOST_AUTO_TEST_CASE().

◆ GenerateUpperTriangularMatrices()

void Nektar::GenerateUpperTriangularMatrices ( NekDouble  values[],
NekDouble  scale,
std::shared_ptr< NekMatrix< NekDouble, StandardMatrixTag > > &  m1,
std::shared_ptr< NekMatrix< NekMatrix< NekDouble >, ScaledMatrixTag > > &  m2,
std::shared_ptr< NekMatrix< NekMatrix< NekDouble >, BlockMatrixTag > > &  m3 
)

Definition at line 85 of file TestNekMatrixOperations.cpp.

90{
91 m1 = std::make_shared<NekMatrix<NekDouble, StandardMatrixTag>>(
92 4, 4, values, eUPPER_TRIANGULAR);
93
94 double inner_values[10];
95 std::transform(
96 values, values + 10, inner_values,
97 std::bind(std::divides<NekDouble>(), std::placeholders::_1, scale));
98
99 std::shared_ptr<NekMatrix<NekDouble>> inner(
100 new NekMatrix<NekDouble>(4, 4, inner_values, eUPPER_TRIANGULAR));
101 m2 = std::make_shared<NekMatrix<NekMatrix<NekDouble>, ScaledMatrixTag>>(
102 scale, inner);
103
104 double block_1_values[] = {values[0], 0.0, values[1], values[2]};
105 double block_2_values[] = {values[3], values[4], values[6], values[7]};
106 double block_4_values[] = {values[5], 0.0, values[8], values[9]};
107 std::shared_ptr<NekMatrix<NekDouble>> block1(
108 new NekMatrix<NekDouble>(2, 2, block_1_values));
109 std::shared_ptr<NekMatrix<NekDouble>> block2(
110 new NekMatrix<NekDouble>(2, 2, block_2_values));
111 std::shared_ptr<NekMatrix<NekDouble>> block4(
112 new NekMatrix<NekDouble>(2, 2, block_4_values));
113
114 m3 = std::make_shared<NekMatrix<NekMatrix<NekDouble>, BlockMatrixTag>>(
115 2, 2, 2, 2);
116 m3->SetBlock(0, 0, block1);
117 m3->SetBlock(0, 1, block2);
118 m3->SetBlock(1, 1, block4);
119}

References eUPPER_TRIANGULAR.

Referenced by Nektar::MatrixOperationTests::BOOST_AUTO_TEST_CASE().

◆ GetArtificialDiffusionFactory()

ArtificialDiffusionFactory & Nektar::GetArtificialDiffusionFactory ( )

Declaration of the artificial diffusion factory singleton.

Definition at line 42 of file ArtificialDiffusion.cpp.

43{
44 static ArtificialDiffusionFactory instance;
45 return instance;
46}
Provides a generic Factory class.
Definition: NekFactory.hpp:104

Referenced by Nektar::CompressibleFlowSystem::v_InitObject().

◆ GetBoundaryFactory()

BoundaryFactory & Nektar::GetBoundaryFactory ( )

Definition at line 62 of file PulseWaveBoundary.cpp.

63{
64 static BoundaryFactory instance;
65 return instance;
66}

Referenced by Nektar::PulseWavePropagation::SetPulseWaveBoundaryConditions().

◆ GetCellModelFactory()

CellModelFactory & Nektar::GetCellModelFactory ( )

Definition at line 46 of file CellModel.cpp.

47{
48 static CellModelFactory instance;
49 return instance;
50}

Referenced by main(), Nektar::Bidomain::v_InitObject(), Nektar::BidomainRoth::v_InitObject(), and Nektar::Monodomain::v_InitObject().

◆ GetCFSBndCondFactory()

CFSBndCondFactory & Nektar::GetCFSBndCondFactory ( )

Declaration of the boundary condition factory singleton.

Definition at line 41 of file CFSBndCond.cpp.

42{
43 static CFSBndCondFactory instance;
44 return instance;
45}

Referenced by Nektar::CompressibleFlowSystem::v_InitObject().

◆ GetEquationOfStateFactory()

EquationOfStateFactory & Nektar::GetEquationOfStateFactory ( )

Declaration of the equation of state factory singleton.

Definition at line 41 of file EquationOfState.cpp.

42{
43 static EquationOfStateFactory instance;
44 return instance;
45}

Referenced by Nektar::CompressibleSolver::CompressibleSolver(), Nektar::DiffusionLDGNS::v_InitObject(), and Nektar::VariableConverter::VariableConverter().

◆ GetExtrapolateFactory()

ExtrapolateFactory & Nektar::GetExtrapolateFactory ( )

◆ GetMemoryPool()

MemPool & Nektar::GetMemoryPool ( )

◆ GetMetricFactory()

MetricFactory & Nektar::GetMetricFactory ( )

Definition at line 42 of file Metric.cpp.

43{
44 static MetricFactory instance;
45 return instance;
46}
Datatype of the NekFactory used to instantiate classes derived from the Advection class.
Definition: Metric.h:129

Referenced by main().

◆ GetPreconCfsFactory()

PreconCfsFactory & Nektar::GetPreconCfsFactory ( )

Declaration of the boundary condition factory singleton.

Definition at line 42 of file PreconCfs.cpp.

43{
44 static PreconCfsFactory instance;
45 return instance;
46}

Referenced by Nektar::CFSImplicit::InitialiseNonlinSysSolver().

◆ GetPressureAreaFactory()

PressureAreaFactory & Nektar::GetPressureAreaFactory ( )

◆ GetProtocolFactory()

ProtocolFactory & Nektar::GetProtocolFactory ( )

Definition at line 39 of file Protocol.cpp.

40{
41 static ProtocolFactory instance;
42 return instance;
43}

Referenced by Nektar::Stimulus::Stimulus().

◆ GetStimulusFactory()

StimulusFactory & Nektar::GetStimulusFactory ( )

Definition at line 44 of file Stimulus.cpp.

45{
46 static StimulusFactory instance;
47 return instance;
48}

Referenced by Nektar::Stimulus::LoadStimuli().

◆ guessp()

NekDouble Nektar::guessp ( NekDouble  g[],
NekDouble  rhoL,
NekDouble  uL,
NekDouble  pL,
NekDouble  cL,
NekDouble  rhoR,
NekDouble  uR,
NekDouble  pR,
NekDouble  cR 
)
inline

Use either PVRS, two-rarefaction or two-shock Riemann solvers to calculate an initial pressure for the Newton-Raphson scheme.

Parameters
gArray of calculated gamma values.
rhoLDensity left state.
rhoRDensity right state.
uLx-velocity component left state.
uRx-velocity component right state.
pLPressure component left state.
pRPressure component right state.
cLSound speed component left state.
cRSound speed component right state.
Returns
Computed initial guess for the Newton-Raphson scheme.

Definition at line 67 of file ExactSolverToro.cpp.

70{
71 const NekDouble quser = 2.0;
72 NekDouble cup, ppv, pmin, pmax, qmax;
73
74 cup = 0.25 * (rhoL + rhoR) * (cL + cR);
75 ppv = 0.5 * (pL + pR) + 0.5 * (uL - uR) * cup;
76 ppv = std::max(0.0, ppv);
77 pmin = std::min(pL, pR);
78 pmax = std::max(pL, pR);
79 qmax = pmax / pmin;
80
81 if (qmax <= quser && pmin <= ppv && ppv <= pmax)
82 {
83 // Select PVRS Riemann solver.
84 return ppv;
85 }
86 else if (ppv < pmin)
87 {
88 // Select two-rarefaction Riemann solver.
89 NekDouble pq = pow(pL / pR, g[1]);
90 NekDouble um =
91 (pq * uL / cL + uR / cR + g[4] * (pq - 1.0)) / (pq / cL + 1.0 / cR);
92 NekDouble ptL = 1.0 + g[7] * (uL - um) / cL;
93 NekDouble ptR = 1.0 + g[7] * (um - uR) / cR;
94 return 0.5 * (pL * pow(ptL, g[3]) + pR * pow(ptR, g[3]));
95 }
96 else
97 {
98 // Select two-shock Riemann solver with PVRS as estimate.
99 NekDouble geL = sqrt((g[5] / rhoL) / (g[6] * pL + ppv));
100 NekDouble geR = sqrt((g[5] / rhoR) / (g[6] * pR + ppv));
101 return (geL * pL + geR * pR - (uR - uL)) / (geL + geR);
102 }
103}
double NekDouble

References tinysimd::sqrt().

Referenced by Nektar::ExactSolverToro::v_PointSolve().

◆ hash_combine() [1/3]

template<typename T , typename... Args>
std::size_t Nektar::hash_combine ( const T &  v,
Args...  args 
)
inline

Definition at line 57 of file HashUtils.hpp.

58{
59 std::size_t seed = 0;
60 hash_combine(seed, args...);
61 return seed;
62}
std::size_t hash_combine(const T &v, Args... args)
Definition: HashUtils.hpp:57

References hash_combine().

◆ hash_combine() [2/3]

void Nektar::hash_combine ( std::size_t &  seed)
inline

◆ hash_combine() [3/3]

template<typename T , typename... Args>
void Nektar::hash_combine ( std::size_t &  seed,
const T &  v,
Args...  args 
)
inline

Definition at line 49 of file HashUtils.hpp.

50{
51 std::hash<T> hasher;
52 seed ^= hasher(v) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
53 hash_combine(seed, args...);
54}

References hash_combine().

◆ hash_range() [1/2]

template<typename Iter >
std::size_t Nektar::hash_range ( Iter  first,
Iter  last 
)

◆ hash_range() [2/2]

template<typename Iter >
void Nektar::hash_range ( std::size_t &  seed,
Iter  first,
Iter  last 
)

Definition at line 75 of file HashUtils.hpp.

76{
77 hash_combine(seed, hash_range(first, last));
78}
void hash_range(std::size_t &seed, Iter first, Iter last)
Definition: HashUtils.hpp:75

References hash_combine(), and hash_range().

◆ InfinityNorm() [1/3]

template<typename DataType >
DataType Nektar::InfinityNorm ( const NekVector< DataType > &  v)

Definition at line 1125 of file NekVector.cpp.

1126{
1127 DataType result = fabs(v[0]);
1128 const unsigned int vdim = v.GetDimension();
1129 for (unsigned int i = 0; i < vdim; ++i)
1130 {
1131 result = std::max(DataType(fabs(v[i])), result);
1132 }
1133 return result;
1134}

References Nektar::NekVector< DataType >::GetDimension().

Referenced by Nektar::NekVector< DataType >::InfinityNorm().

◆ InfinityNorm() [2/3]

template NekDouble Nektar::InfinityNorm ( const NekVector< NekDouble > &  v)

◆ InfinityNorm() [3/3]

template NekSingle Nektar::InfinityNorm ( const NekVector< NekSingle > &  v)

◆ InvertInPlace() [1/2]

void Nektar::InvertInPlace ( NekDouble v)

Definition at line 1229 of file NekVector.cpp.

1230{
1231 v = 1.0 / v;
1232}

◆ InvertInPlace() [2/2]

void Nektar::InvertInPlace ( NekSingle v)

Definition at line 1240 of file NekVector.cpp.

1241{
1242 v = 1.0 / v;
1243}

◆ IsEqual()

template<typename T >
bool Nektar::IsEqual ( const T &  lhs,
const T &  rhs 
)
inline

Definition at line 810 of file SharedArray.hpp.

811{
812 return IsEqualImpl(lhs, rhs, std::is_floating_point<T>());
813}
bool IsEqualImpl(const T &lhs, const T &rhs, std::true_type)

References IsEqualImpl().

Referenced by operator==().

◆ IsEqualImpl() [1/2]

template<typename T >
bool Nektar::IsEqualImpl ( const T &  lhs,
const T &  rhs,
std::false_type   
)
inline

Definition at line 798 of file SharedArray.hpp.

799{
800 return lhs == rhs;
801}

Referenced by IsEqual().

◆ IsEqualImpl() [2/2]

template<typename T >
bool Nektar::IsEqualImpl ( const T &  lhs,
const T &  rhs,
std::true_type   
)
inline

Definition at line 805 of file SharedArray.hpp.

806{
807 return LibUtilities::IsRealEqual(lhs, rhs);
808}
bool IsRealEqual(T1 &&lhs, T2 &&rhs, const unsigned int factor=NekConstants::kNekFloatCompFact)
compare reals of same type with relative tolerance

References Nektar::LibUtilities::IsRealEqual().

◆ L1Norm() [1/3]

template<typename DataType >
DataType Nektar::L1Norm ( const NekVector< DataType > &  v)
Todo:
Do the Norms with Blas where applicable.

Definition at line 1089 of file NekVector.cpp.

1090{
1091 typedef NekVector<DataType> VectorType;
1092
1093 DataType result(0);
1094 for (typename VectorType::const_iterator iter = v.begin(); iter != v.end();
1095 ++iter)
1096 {
1097 result += fabs(*iter);
1098 }
1099
1100 return result;
1101}

References Nektar::NekVector< DataType >::begin(), and Nektar::NekVector< DataType >::end().

Referenced by Nektar::NekVector< DataType >::L1Norm().

◆ L1Norm() [2/3]

template NekDouble Nektar::L1Norm ( const NekVector< NekDouble > &  v)

◆ L1Norm() [3/3]

template NekSingle Nektar::L1Norm ( const NekVector< NekSingle > &  v)

◆ L2Norm() [1/3]

template<typename DataType >
DataType Nektar::L2Norm ( const NekVector< DataType > &  v)

Definition at line 1107 of file NekVector.cpp.

1108{
1109 typedef NekVector<DataType> VectorType;
1110
1111 DataType result(0);
1112 for (typename VectorType::const_iterator iter = v.begin(); iter != v.end();
1113 ++iter)
1114 {
1115 DataType v = fabs(*iter);
1116 result += v * v;
1117 }
1118 return sqrt(result);
1119}

References Nektar::NekVector< DataType >::begin(), Nektar::NekVector< DataType >::end(), and tinysimd::sqrt().

Referenced by Nektar::NekVector< DataType >::L2Norm().

◆ L2Norm() [2/3]

template NekDouble Nektar::L2Norm ( const NekVector< NekDouble > &  v)

◆ L2Norm() [3/3]

template NekSingle Nektar::L2Norm ( const NekVector< NekSingle > &  v)

◆ Magnitude() [1/3]

template<typename DataType >
DataType Nektar::Magnitude ( const NekVector< DataType > &  v)

Definition at line 1174 of file NekVector.cpp.

1175{
1176 DataType result = DataType(0);
1177
1178 const unsigned int vdim = v.GetDimension();
1179 for (unsigned int i = 0; i < vdim; ++i)
1180 {
1181 result += v[i] * v[i];
1182 }
1183 return sqrt(result);
1184}

References Nektar::NekVector< DataType >::GetDimension(), and tinysimd::sqrt().

Referenced by Nektar::NekVector< DataType >::Magnitude().

◆ Magnitude() [2/3]

template NekDouble Nektar::Magnitude ( const NekVector< NekDouble > &  v)

◆ Magnitude() [3/3]

template NekSingle Nektar::Magnitude ( const NekVector< NekSingle > &  v)

◆ MappingIdealToRef()

DNekMat Nektar::MappingIdealToRef ( SpatialDomains::GeometrySharedPtr  geom)
inline

Definition at line 75 of file LinearElasticSystem.cpp.

76{
77 int n = geom->GetNumVerts(), i, j;
78
79 DNekMat map(n, n, 1.0, eFULL);
80 DNekMat mapref(n, n, 1.0, eFULL);
81
82 // Extract coordinate information.
83 for (i = 0; i < n; ++i)
84 {
85 for (j = 0; j < n - 1; ++j)
86 {
87 map(j, i) = (*geom->GetVertex(i))[j];
88 }
89 }
90
91 // Set up reference triangle or tetrahedron mapping.
92 if (n == 3)
93 {
94 mapref(0, 0) = -1.0;
95 mapref(1, 0) = -1.0;
96 mapref(0, 1) = 1.0;
97 mapref(1, 1) = -1.0;
98 mapref(0, 2) = -1.0;
99 mapref(1, 2) = 1.0;
100 }
101 else if (n == 4)
102 {
103 mapref(0, 0) = -1.0;
104 mapref(1, 0) = -1.0;
105 mapref(2, 0) = -1.0;
106 mapref(0, 1) = 1.0;
107 mapref(1, 1) = -1.0;
108 mapref(2, 1) = -1.0;
109 mapref(0, 2) = -1.0;
110 mapref(1, 2) = 1.0;
111 mapref(2, 2) = -1.0;
112 mapref(0, 3) = -1.0;
113 mapref(1, 3) = -1.0;
114 mapref(2, 3) = 1.0;
115 }
116
117 map.Invert();
118
119 DNekMat newmap = mapref * map;
120 DNekMat mapred(n - 1, n - 1, 1.0, eFULL);
121
122 for (i = 0; i < n - 1; ++i)
123 {
124 for (j = 0; j < n - 1; ++j)
125 {
126 mapred(i, j) = newmap(i, j);
127 }
128 }
129
130 return mapred;
131}
NekMatrix< NekDouble, StandardMatrixTag > DNekMat
Definition: NekTypeDefs.hpp:50

References eFULL.

Referenced by Nektar::LinearElasticSystem::v_DoSolve().

◆ Multiply() [1/36]

template<typename DataType , typename RhsDataType , typename RhsMatrixType >
SNekMat const NekSingle NekMatrix< typename NekMatrix< RhsDataType, RhsMatrixType >::NumberType, StandardMatrixTag > Nektar::Multiply ( const DataType &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 103 of file MatrixOperations.cpp.

105{
106 return Multiply(rhs, lhs);
107}
void Multiply(NekMatrix< DataType, StandardMatrixTag > &result, const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)

References Multiply().

◆ Multiply() [2/36]

template<typename DataType , typename RhsDataType , typename RhsMatrixType >
NekMatrix< typename NekMatrix< RhsDataType, RhsMatrixType >::NumberType, StandardMatrixTag > Nektar::Multiply ( const DataType &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 103 of file MatrixOperations.cpp.

105{
106 return Multiply(rhs, lhs);
107}

References Multiply().

◆ Multiply() [3/36]

template<typename DataType >
NekVector< DataType > Nektar::Multiply ( const DataType &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 969 of file NekVector.cpp.

971{
972 return Multiply(rhs, lhs);
973}
template NekVector< NekSingle > Multiply(const NekSingle &lhs, const NekVector< NekSingle > &rhs)

References Multiply().

◆ Multiply() [4/36]

template NekVector< NekDouble > Nektar::Multiply ( const NekDouble lhs,
const NekVector< NekDouble > &  rhs 
)

◆ Multiply() [5/36]

template<typename DataType , typename LhsDataType , typename LhsMatrixType >
SNekMat const NekSingle &NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Nektar::Multiply ( const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const DataType &  rhs 
)

Definition at line 67 of file MatrixOperations.cpp.

68{
70 ResultDataType;
72 lhs.GetColumns());
73 Multiply(result, lhs, rhs);
74 return result;
75}

References Multiply().

◆ Multiply() [6/36]

template<typename DataType , typename LhsDataType , typename LhsMatrixType >
NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Nektar::Multiply ( const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const DataType &  rhs 
)

Definition at line 67 of file MatrixOperations.cpp.

68{
70 ResultDataType;
72 lhs.GetColumns());
73 Multiply(result, lhs, rhs);
74 return result;
75}

References Multiply().

◆ Multiply() [7/36]

template<typename LhsDataType , typename RhsDataType , typename LhsMatrixType , typename RhsMatrixType >
NekMatrix< typename std::remove_const< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType >::type, StandardMatrixTag > Nektar::Multiply ( const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 261 of file MatrixOperations.hpp.

263{
264 typedef typename std::remove_const<
266 NumberType;
267 NekMatrix<NumberType, StandardMatrixTag> result(lhs.GetRows(),
268 rhs.GetColumns());
269 Multiply(result, lhs, rhs);
270 return result;
271}
NekMatrix< typename std::remove_const< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType >::type, StandardMatrixTag > Multiply(const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)

References Multiply().

◆ Multiply() [8/36]

template<typename DataType , typename LhsDataType , typename MatrixType >
NekVector< DataType > Nektar::Multiply ( const NekMatrix< LhsDataType, MatrixType > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 615 of file MatrixVectorMultiplication.cpp.

617{
618 NekVector<DataType> result(lhs.GetRows(), DataType(0));
619 Multiply(result, lhs, rhs);
620 return result;
621}

References Multiply().

◆ Multiply() [9/36]

template<typename DataType , typename LhsDataType , typename MatrixType >
NekVector< NekSingle > const NekVector< NekSingle > &NekVector< DataType > Nektar::Multiply ( const NekMatrix< LhsDataType, MatrixType > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 615 of file MatrixVectorMultiplication.cpp.

617{
618 NekVector<DataType> result(lhs.GetRows(), DataType(0));
619 Multiply(result, lhs, rhs);
620 return result;
621}

References Multiply().

◆ Multiply() [10/36]

template NekVector< NekSingle > Nektar::Multiply ( const NekSingle lhs,
const NekVector< NekSingle > &  rhs 
)

Referenced by Multiply().

◆ Multiply() [11/36]

template<typename DataType >
NekVector< DataType > Nektar::Multiply ( const NekVector< DataType > &  lhs,
const NekDouble rhs 
)

Definition at line 883 of file NekVector.cpp.

885{
886 NekVector<DataType> result(lhs.GetDimension());
887 Multiply(result, lhs, rhs);
888 return result;
889}

References Nektar::NekVector< DataType >::GetDimension(), and Multiply().

◆ Multiply() [12/36]

template<typename DataType >
NekVector< DataType > Nektar::Multiply ( const NekVector< DataType > &  lhs,
const NekSingle rhs 
)

Definition at line 892 of file NekVector.cpp.

894{
895 NekVector<DataType> result(lhs.GetDimension());
896 Multiply(result, lhs, rhs);
897 return result;
898}

References Nektar::NekVector< DataType >::GetDimension(), and Multiply().

◆ Multiply() [13/36]

template<typename DataType , typename InputDataType >
NekVector< DataType > Nektar::Multiply ( const NekVector< DataType > &  lhs,
const NekVector< InputDataType > &  rhs 
)

Definition at line 805 of file NekVector.cpp.

807{
808 NekVector<DataType> result(lhs.GetDimension());
809 Multiply(result, lhs, rhs);
810 return result;
811}

References Nektar::NekVector< DataType >::GetDimension(), and Multiply().

◆ Multiply() [14/36]

template NekVector< NekDouble > Nektar::Multiply ( const NekVector< NekDouble > &  lhs,
const NekDouble rhs 
)

◆ Multiply() [15/36]

template NekVector< NekDouble > Nektar::Multiply ( const NekVector< NekDouble > &  lhs,
const NekVector< NekDouble > &  rhs 
)

◆ Multiply() [16/36]

template NekVector< NekSingle > Nektar::Multiply ( const NekVector< NekSingle > &  lhs,
const NekSingle rhs 
)

◆ Multiply() [17/36]

template NekVector< NekSingle > Nektar::Multiply ( const NekVector< NekSingle > &  lhs,
const NekVector< NekSingle > &  rhs 
)

◆ Multiply() [18/36]

template<typename DataType , typename LhsDataType , typename MatrixType >
void Nektar::Multiply ( DataType *  result,
const NekMatrix< LhsDataType, MatrixType > &  lhs,
const DataType *  rhs 
)

Definition at line 539 of file MatrixVectorMultiplication.cpp.

541{
542 switch (lhs.GetType())
543 {
544 case eFULL:
545 NekMultiplyFullMatrix(result, lhs, rhs);
546 break;
547 case eDIAGONAL:
548 NekMultiplyDiagonalMatrix(result, lhs, rhs);
549 break;
551 NekMultiplyUpperTriangularMatrix(result, lhs, rhs);
552 break;
554 NekMultiplyLowerTriangularMatrix(result, lhs, rhs);
555 break;
556 case eSYMMETRIC:
557 NekMultiplySymmetricMatrix(result, lhs, rhs);
558 break;
559 case eBANDED:
560 NekMultiplyBandedMatrix(result, lhs, rhs);
561 break;
565 default:
566 NekMultiplyUnspecializedMatrixType(result, lhs, rhs);
567 }
568}
void NekMultiplyFullMatrix(DataType *result, const NekMatrix< InnerMatrixType, MatrixTag > &lhs, const DataType *rhs, typename std::enable_if< !CanGetRawPtr< NekMatrix< InnerMatrixType, MatrixTag > >::value >::type *p=nullptr)
void NekMultiplyUpperTriangularMatrix(DataType *result, const NekMatrix< LhsDataType, MatrixType > &lhs, const DataType *rhs)
void NekMultiplyDiagonalMatrix(DataType *result, const NekMatrix< LhsDataType, StandardMatrixTag > &lhs, const DataType *rhs)
void NekMultiplyLowerTriangularMatrix(DataType *result, const NekMatrix< LhsDataType, MatrixType > &lhs, const DataType *rhs)
void NekMultiplyBandedMatrix(DataType *result, const NekMatrix< LhsDataType, BlockMatrixTag > &lhs, const DataType *rhs, typename std::enable_if< !CanGetRawPtr< NekMatrix< LhsDataType, BlockMatrixTag > >::value >::type *p=nullptr)
void NekMultiplyUnspecializedMatrixType(DataType *result, const NekMatrix< LhsDataType, MatrixType > &lhs, const DataType *rhs)
void NekMultiplySymmetricMatrix(DataType *result, const NekMatrix< InnerMatrixType, MatrixTag > &lhs, const DataType *rhs, typename std::enable_if< !CanGetRawPtr< NekMatrix< InnerMatrixType, MatrixTag > >::value >::type *p=nullptr)

References eBANDED, eDIAGONAL, eFULL, eLOWER_TRIANGULAR, eLOWER_TRIANGULAR_BANDED, eSYMMETRIC, eSYMMETRIC_BANDED, eUPPER_TRIANGULAR, eUPPER_TRIANGULAR_BANDED, NekMultiplyBandedMatrix(), NekMultiplyDiagonalMatrix(), NekMultiplyFullMatrix(), NekMultiplyLowerTriangularMatrix(), NekMultiplySymmetricMatrix(), NekMultiplyUnspecializedMatrixType(), and NekMultiplyUpperTriangularMatrix().

◆ Multiply() [19/36]

template<typename LhsDataType , typename RhsDataType , typename DataType , typename LhsMatrixType , typename RhsMatrixType >
void Nektar::Multiply ( NekMatrix< DataType, StandardMatrixTag > &  result,
const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 177 of file MatrixOperations.cpp.

180{
181 ASSERTL1(lhs.GetColumns() == rhs.GetRows(),
182 std::string("A left side matrix with column count ") +
183 std::to_string(lhs.GetColumns()) +
184 std::string(" and a right side matrix with row count ") +
185 std::to_string(rhs.GetRows()) +
186 std::string(" can't be multiplied."));
187
188 result.SetSize(lhs.GetRows(), rhs.GetColumns());
189 if (lhs.GetType() == eFULL && rhs.GetType() == eFULL)
190 {
191 NekMultiplyFullMatrixFullMatrix(result, lhs, rhs);
192 }
193 else
194 {
195 NekMultiplyDefaultImpl(result, lhs, rhs);
196 }
197}
void SetSize(unsigned int rows, unsigned int cols)
void NekMultiplyFullMatrixFullMatrix(NekMatrix< ResultType, StandardMatrixTag > &result, const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)
SNekMat const NekSingle &void NekMultiplyDefaultImpl(NekMatrix< ResultType, StandardMatrixTag > &result, const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)

References ASSERTL1, eFULL, NekMultiplyDefaultImpl(), NekMultiplyFullMatrixFullMatrix(), and Nektar::NekMatrix< DataType, StandardMatrixTag >::SetSize().

◆ Multiply() [20/36]

template<typename ResultDataType , typename LhsDataType , typename LhsMatrixType >
void Nektar::Multiply ( NekMatrix< ResultDataType, StandardMatrixTag > &  result,
const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const ResultDataType &  rhs 
)

Definition at line 41 of file MatrixOperations.cpp.

44{
45 // TODO - optimize for the different matrix types.
46 int n = lhs.GetRows();
47 int m = lhs.GetColumns();
48 for (unsigned int i = 0; i < n; ++i)
49 {
50 for (unsigned int j = 0; j < m; ++j)
51 {
52 result(i, j) = lhs(i, j) * rhs;
53 }
54 }
55}

Referenced by Nektar::PulseWaveSystem::BifurcationRiemann(), DiagonalBlockMatrixMultiply(), FullBlockMatrixMultiply(), Nektar::PulseWaveSystem::InterfaceRiemann(), Nektar::PulseWaveSystem::MergingRiemann(), Multiply(), operator*(), Nektar::SolverUtils::Newmark_BetaSolver::Solve(), and Nektar::MultiRegions::GlobalLinSysStaticCond::v_Solve().

◆ Multiply() [21/36]

template<typename RhsDataType , typename RhsMatrixType , typename ResultDataType >
const NekSingle &void Nektar::Multiply ( NekMatrix< ResultDataType, StandardMatrixTag > &  result,
const ResultDataType &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 85 of file MatrixOperations.cpp.

89{
90 Multiply(result, rhs, lhs);
91}

References Multiply().

◆ Multiply() [22/36]

template<typename RhsDataType , typename RhsMatrixType , typename ResultDataType >
void Nektar::Multiply ( NekMatrix< ResultDataType, StandardMatrixTag > &  result,
const ResultDataType &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 85 of file MatrixOperations.cpp.

89{
90 Multiply(result, rhs, lhs);
91}

References Multiply().

◆ Multiply() [23/36]

template<typename DataType , typename LhsDataType , typename MatrixType >
void Nektar::Multiply ( NekVector< DataType > &  result,
const NekMatrix< LhsDataType, MatrixType > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 571 of file MatrixVectorMultiplication.cpp.

574{
575
576 ASSERTL1(lhs.GetColumns() == rhs.GetRows(),
577 std::string("A left side matrix with column count ") +
578 std::to_string(lhs.GetColumns()) +
579 std::string(" and a right side vector with row count ") +
580 std::to_string(rhs.GetRows()) +
581 std::string(" can't be multiplied."));
582 Multiply(result.GetRawPtr(), lhs, rhs.GetRawPtr());
583}

References ASSERTL1, Nektar::NekVector< DataType >::GetRawPtr(), Nektar::NekVector< DataType >::GetRows(), and Multiply().

◆ Multiply() [24/36]

template<typename DataType , typename LhsInnerMatrixType >
void Nektar::Multiply ( NekVector< DataType > &  result,
const NekMatrix< LhsInnerMatrixType, BlockMatrixTag > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 593 of file MatrixVectorMultiplication.cpp.

596{
597 if (lhs.GetStorageType() == eDIAGONAL)
598 {
599 DiagonalBlockMatrixMultiply(result, lhs, rhs);
600 }
601 else
602 {
603 FullBlockMatrixMultiply(result, lhs, rhs);
604 }
605}
void DiagonalBlockMatrixMultiply(NekVector< DataType > &result, const NekMatrix< LhsInnerMatrixType, BlockMatrixTag > &lhs, const NekVector< DataType > &rhs)
void FullBlockMatrixMultiply(NekVector< DataType > &result, const NekMatrix< LhsInnerMatrixType, BlockMatrixTag > &lhs, const NekVector< DataType > &rhs)

References DiagonalBlockMatrixMultiply(), eDIAGONAL, and FullBlockMatrixMultiply().

◆ Multiply() [25/36]

template<typename DataType , typename LhsInnerMatrixType >
NekVector< NekSingle > const NekVector< NekSingle > &void Nektar::Multiply ( NekVector< DataType > &  result,
const NekMatrix< LhsInnerMatrixType, BlockMatrixTag > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 593 of file MatrixVectorMultiplication.cpp.

596{
597 if (lhs.GetStorageType() == eDIAGONAL)
598 {
599 DiagonalBlockMatrixMultiply(result, lhs, rhs);
600 }
601 else
602 {
603 FullBlockMatrixMultiply(result, lhs, rhs);
604 }
605}

References DiagonalBlockMatrixMultiply(), eDIAGONAL, and FullBlockMatrixMultiply().

◆ Multiply() [26/36]

template void Nektar::Multiply ( NekVector< NekDouble > &  result,
const NekDouble lhs,
const NekVector< NekDouble > &  rhs 
)

◆ Multiply() [27/36]

template void Nektar::Multiply ( NekVector< NekDouble > &  result,
const NekVector< NekDouble > &  lhs,
const NekDouble rhs 
)

◆ Multiply() [28/36]

template void Nektar::Multiply ( NekVector< NekDouble > &  result,
const NekVector< NekDouble > &  lhs,
const NekVector< NekDouble > &  rhs 
)

◆ Multiply() [29/36]

template void Nektar::Multiply ( NekVector< NekSingle > &  result,
const NekSingle lhs,
const NekVector< NekSingle > &  rhs 
)

◆ Multiply() [30/36]

template void Nektar::Multiply ( NekVector< NekSingle > &  result,
const NekVector< NekSingle > &  lhs,
const NekSingle rhs 
)

◆ Multiply() [31/36]

template void Nektar::Multiply ( NekVector< NekSingle > &  result,
const NekVector< NekSingle > &  lhs,
const NekVector< NekSingle > &  rhs 
)

◆ Multiply() [32/36]

template<typename ResultDataType , typename InputDataType >
void Nektar::Multiply ( NekVector< ResultDataType > &  result,
const NekDouble lhs,
const NekVector< InputDataType > &  rhs 
)

Definition at line 907 of file NekVector.cpp.

909{
910 Multiply(result, rhs, lhs);
911}

References Multiply().

◆ Multiply() [33/36]

template<typename ResultDataType , typename InputDataType >
void Nektar::Multiply ( NekVector< ResultDataType > &  result,
const NekSingle lhs,
const NekVector< InputDataType > &  rhs 
)

Definition at line 930 of file NekVector.cpp.

932{
933 Multiply(result, rhs, lhs);
934}

References Multiply().

◆ Multiply() [34/36]

template<typename ResultDataType , typename InputDataType >
void Nektar::Multiply ( NekVector< ResultDataType > &  result,
const NekVector< InputDataType > &  lhs,
const NekDouble rhs 
)

Definition at line 820 of file NekVector.cpp.

822{
823 ResultDataType *r_buf = result.GetRawPtr();
824 const InputDataType *lhs_buf = lhs.GetRawPtr();
825
826 const unsigned int ldim = lhs.GetDimension();
827 for (int i = 0; i < ldim; ++i)
828 {
829 r_buf[i] = lhs_buf[i] * rhs;
830 }
831}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ Multiply() [35/36]

template<typename ResultDataType , typename InputDataType >
void Nektar::Multiply ( NekVector< ResultDataType > &  result,
const NekVector< InputDataType > &  lhs,
const NekSingle rhs 
)

Definition at line 834 of file NekVector.cpp.

836{
837 ResultDataType *r_buf = result.GetRawPtr();
838 const InputDataType *lhs_buf = lhs.GetRawPtr();
839
840 const unsigned int ldim = lhs.GetDimension();
841 for (int i = 0; i < ldim; ++i)
842 {
843 r_buf[i] = lhs_buf[i] * rhs;
844 }
845}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ Multiply() [36/36]

template<typename ResultDataType , typename InputDataType >
void Nektar::Multiply ( NekVector< ResultDataType > &  result,
const NekVector< InputDataType > &  lhs,
const NekVector< InputDataType > &  rhs 
)

Definition at line 763 of file NekVector.cpp.

766{
767 ResultDataType *result_buf = result.GetRawPtr();
768 const InputDataType *rhs_buf = rhs.GetRawPtr();
769 const InputDataType *lhs_buf = lhs.GetRawPtr();
770 const unsigned int resdim = result.GetDimension();
771 for (int i = 0; i < resdim; ++i)
772 {
773 result_buf[i] = lhs_buf[i] * rhs_buf[i];
774 }
775}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ MultiplyEqual() [1/11]

template<typename DataType , typename RhsInnerType , typename RhsMatrixType >
void Nektar::MultiplyEqual ( NekMatrix< DataType, StandardMatrixTag > &  result,
const NekMatrix< RhsInnerType, RhsMatrixType > &  rhs,
typename std::enable_if< !std::is_same< RawType_t< typename NekMatrix< RhsInnerType, RhsMatrixType >::NumberType >, DataType >::value||!CanGetRawPtr< NekMatrix< RhsInnerType, RhsMatrixType > >::value >::type *  t = 0 
)

Definition at line 219 of file MatrixOperations.hpp.

228{
229 ASSERTL1(result.GetColumns() == rhs.GetRows(),
230 std::string("A left side matrix with column count ") +
231 std::to_string(result.GetColumns()) +
232 std::string(" and a right side matrix with row count ") +
233 std::to_string(rhs.GetRows()) +
234 std::string(" can't be multiplied."));
236 result.GetColumns());
237
238 for (unsigned int i = 0; i < result.GetRows(); ++i)
239 {
240 for (unsigned int j = 0; j < result.GetColumns(); ++j)
241 {
242 DataType t = DataType(0);
243
244 // Set the result(i,j) element.
245 for (unsigned int k = 0; k < result.GetColumns(); ++k)
246 {
247 t += result(i, k) * rhs(k, j);
248 }
249 temp(i, j) = t;
250 }
251 }
252
253 result = temp;
254}

References ASSERTL1, Nektar::ConstMatrix< DataType >::GetColumns(), and Nektar::ConstMatrix< DataType >::GetRows().

◆ MultiplyEqual() [2/11]

template<typename LhsDataType >
const NekSingle void Nektar::MultiplyEqual ( NekMatrix< LhsDataType, StandardMatrixTag > &  lhs,
typename boost::call_traits< LhsDataType >::const_reference  rhs 
)

Definition at line 117 of file MatrixOperations.cpp.

120{
121 typedef
123 for (iterator iter = lhs.begin(); iter != lhs.end(); ++iter)
124 {
125 *iter *= rhs;
126 }
127}

◆ MultiplyEqual() [3/11]

template<typename LhsDataType >
void Nektar::MultiplyEqual ( NekMatrix< LhsDataType, StandardMatrixTag > &  lhs,
typename boost::call_traits< LhsDataType >::const_reference  rhs 
)

Definition at line 117 of file MatrixOperations.cpp.

120{
121 typedef
123 for (iterator iter = lhs.begin(); iter != lhs.end(); ++iter)
124 {
125 *iter *= rhs;
126 }
127}

◆ MultiplyEqual() [4/11]

template<typename RhsInnerType , typename RhsMatrixType >
void Nektar::MultiplyEqual ( NekMatrix< RhsInnerType, StandardMatrixTag > &  result,
const NekMatrix< RhsInnerType, RhsMatrixType > &  rhs,
typename std::enable_if< std::is_same< RawType_t< typename NekMatrix< RhsInnerType, RhsMatrixType >::NumberType >, RhsInnerType >::value &&CanGetRawPtr< NekMatrix< RhsInnerType, RhsMatrixType > >::value >::type *  t = 0 
)

Definition at line 182 of file MatrixOperations.hpp.

191{
192 ASSERTL0(result.GetType() == eFULL && rhs.GetType() == eFULL,
193 "Only full matrices supported.");
194 unsigned int M = result.GetRows();
195 unsigned int N = rhs.GetColumns();
196 unsigned int K = result.GetColumns();
197
198 unsigned int LDA = M;
199 if (result.GetTransposeFlag() == 'T')
200 {
201 LDA = K;
202 }
203
204 unsigned int LDB = K;
205 if (rhs.GetTransposeFlag() == 'T')
206 {
207 LDB = N;
208 }
209 RhsInnerType scale = rhs.Scale();
210 Array<OneD, RhsInnerType> &buf = result.GetTempSpace();
211 Blas::Gemm(result.GetTransposeFlag(), rhs.GetTransposeFlag(), M, N, K,
212 scale, result.GetRawPtr(), LDA, rhs.GetRawPtr(), LDB, 0.0,
213 buf.data(), result.GetRows());
214 result.SetSize(result.GetRows(), rhs.GetColumns());
215 result.SwapTempAndDataBuffers();
216}
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:208
static void Gemm(const char &transa, const char &transb, const int &m, const int &n, const int &k, const double &alpha, const double *a, const int &lda, const double *b, const int &ldb, const double &beta, double *c, const int &ldc)
BLAS level 3: Matrix-matrix multiply C = A x B where op(A)[m x k], op(B)[k x n], C[m x n] DGEMM perfo...
Definition: Blas.hpp:355

References ASSERTL0, eFULL, and Blas::Gemm().

◆ MultiplyEqual() [5/11]

template void Nektar::MultiplyEqual ( NekVector< NekDouble > &  result,
const NekDouble rhs 
)

◆ MultiplyEqual() [6/11]

template void Nektar::MultiplyEqual ( NekVector< NekDouble > &  result,
const NekVector< NekDouble > &  rhs 
)

◆ MultiplyEqual() [7/11]

template void Nektar::MultiplyEqual ( NekVector< NekSingle > &  result,
const NekSingle rhs 
)

◆ MultiplyEqual() [8/11]

template void Nektar::MultiplyEqual ( NekVector< NekSingle > &  result,
const NekVector< NekSingle > &  rhs 
)

◆ MultiplyEqual() [9/11]

template<typename ResultDataType >
void Nektar::MultiplyEqual ( NekVector< ResultDataType > &  result,
const NekDouble rhs 
)

Definition at line 856 of file NekVector.cpp.

857{
858 ResultDataType *r_buf = result.GetRawPtr();
859 const unsigned int rdim = result.GetDimension();
860 for (unsigned int i = 0; i < rdim; ++i)
861 {
862 r_buf[i] *= rhs;
863 }
864}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ MultiplyEqual() [10/11]

template<typename ResultDataType >
void Nektar::MultiplyEqual ( NekVector< ResultDataType > &  result,
const NekSingle rhs 
)

Definition at line 867 of file NekVector.cpp.

868{
869 ResultDataType *r_buf = result.GetRawPtr();
870 const unsigned int rdim = result.GetDimension();
871 for (unsigned int i = 0; i < rdim; ++i)
872 {
873 r_buf[i] *= rhs;
874 }
875}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ MultiplyEqual() [11/11]

template<typename ResultDataType , typename InputDataType >
void Nektar::MultiplyEqual ( NekVector< ResultDataType > &  result,
const NekVector< InputDataType > &  rhs 
)

Definition at line 786 of file NekVector.cpp.

788{
789 ResultDataType *result_buf = result.GetRawPtr();
790 const InputDataType *rhs_buf = rhs.GetRawPtr();
791 const unsigned int resdim = result.GetDimension();
792 for (int i = 0; i < resdim; ++i)
793 {
794 result_buf[i] *= rhs_buf[i];
795 }
796}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ MultiplyInvertedLhs() [1/4]

template void Nektar::MultiplyInvertedLhs ( NekVector< NekDouble > &  result,
const NekDouble lhs,
const NekVector< NekDouble > &  rhs 
)

◆ MultiplyInvertedLhs() [2/4]

template void Nektar::MultiplyInvertedLhs ( NekVector< NekSingle > &  result,
const NekSingle lhs,
const NekVector< NekSingle > &  rhs 
)

◆ MultiplyInvertedLhs() [3/4]

template<typename ResultDataType , typename InputDataType >
void Nektar::MultiplyInvertedLhs ( NekVector< ResultDataType > &  result,
const NekDouble lhs,
const NekVector< InputDataType > &  rhs 
)

Definition at line 914 of file NekVector.cpp.

917{
918 ResultDataType *r_buf = result.GetRawPtr();
919 const InputDataType *rhs_buf = rhs.GetRawPtr();
920 NekDouble inverse = 1.0 / lhs;
921
922 const unsigned int rdim = rhs.GetDimension();
923 for (int i = 0; i < rdim; ++i)
924 {
925 r_buf[i] = inverse * rhs_buf[i];
926 }
927}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ MultiplyInvertedLhs() [4/4]

template<typename ResultDataType , typename InputDataType >
void Nektar::MultiplyInvertedLhs ( NekVector< ResultDataType > &  result,
const NekSingle lhs,
const NekVector< InputDataType > &  rhs 
)

Definition at line 937 of file NekVector.cpp.

940{
941 ResultDataType *r_buf = result.GetRawPtr();
942 const InputDataType *rhs_buf = rhs.GetRawPtr();
943 NekSingle inverse = 1.0 / lhs;
944
945 const unsigned int rdim = rhs.GetDimension();
946 for (int i = 0; i < rdim; ++i)
947 {
948 r_buf[i] = inverse * rhs_buf[i];
949 }
950}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ Negate() [1/3]

template<typename DataType >
NekVector< DataType > Nektar::Negate ( const NekVector< DataType > &  v)

Definition at line 1143 of file NekVector.cpp.

1144{
1145 NekVector<DataType> temp(v);
1146 const unsigned int tdim = temp.GetDimension();
1147 for (unsigned int i = 0; i < tdim; ++i)
1148 {
1149 temp(i) = -temp(i);
1150 }
1151 return temp;
1152}

References Nektar::NekVector< DataType >::GetDimension().

◆ Negate() [2/3]

template NekVector< NekDouble > Nektar::Negate ( const NekVector< NekDouble > &  v)

◆ Negate() [3/3]

template NekVector< NekSingle > Nektar::Negate ( const NekVector< NekSingle > &  v)

◆ negate()

template<typename DataType >
void Nektar::negate ( NekPoint< DataType > &  rhs)

Definition at line 370 of file NekPoint.hpp.

371{
372 rhs.negate();
373}
void negate()
Arithmetic Routines.
Definition: NekPoint.hpp:277

References Nektar::NekPoint< data_type >::negate().

◆ NegateInPlace() [1/11]

void Nektar::NegateInPlace ( NekDouble v)

Definition at line 1225 of file NekVector.cpp.

1226{
1227 v = -v;
1228}

◆ NegateInPlace() [2/11]

template<typename DataType >
void Nektar::NegateInPlace ( NekMatrix< DataType, ScaledMatrixTag > &  v)

Definition at line 238 of file ScaledMatrix.cpp.

239{
240 v.SetScale(-1.0 * v.Scale());
241}

◆ NegateInPlace() [3/11]

template<typename DataType >
void Nektar::NegateInPlace ( NekMatrix< DataType, StandardMatrixTag > &  m)

Definition at line 898 of file StandardMatrix.cpp.

899{
900 for (unsigned int i = 0; i < m.GetRows(); ++i)
901 {
902 for (unsigned int j = 0; j < m.GetColumns(); ++j)
903 {
904 m(i, j) *= -1.0;
905 }
906 }
907}

References Nektar::ConstMatrix< DataType >::GetColumns(), and Nektar::ConstMatrix< DataType >::GetRows().

◆ NegateInPlace() [4/11]

template void Nektar::NegateInPlace ( NekMatrix< double, StandardMatrixTag > &  v)

◆ NegateInPlace() [5/11]

template void Nektar::NegateInPlace ( NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag > &  v)

◆ NegateInPlace() [6/11]

template void Nektar::NegateInPlace ( NekMatrix< NekMatrix< NekSingle, StandardMatrixTag >, ScaledMatrixTag > &  v)

◆ NegateInPlace() [7/11]

template void Nektar::NegateInPlace ( NekMatrix< NekSingle, StandardMatrixTag > &  v)

◆ NegateInPlace() [8/11]

void Nektar::NegateInPlace ( NekSingle v)

Definition at line 1236 of file NekVector.cpp.

1237{
1238 v = -v;
1239}

◆ NegateInPlace() [9/11]

template<typename DataType >
void Nektar::NegateInPlace ( NekVector< DataType > &  v)

Definition at line 1160 of file NekVector.cpp.

1161{
1162 DataType *data = v.GetRawPtr();
1163 const unsigned int vdim = v.GetDimension();
1164 for (unsigned int i = 0; i < vdim; ++i)
1165 {
1166 data[i] = -data[i];
1167 }
1168}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

Referenced by Nektar::NekMatrix< DataType, StandardMatrixTag >::operator-().

◆ NegateInPlace() [10/11]

template void Nektar::NegateInPlace ( NekVector< NekDouble > &  v)

◆ NegateInPlace() [11/11]

template void Nektar::NegateInPlace ( NekVector< NekSingle > &  v)

◆ NekMultiplyBandedMatrix() [1/2]

template<typename DataType , typename LhsDataType >
void Nektar::NekMultiplyBandedMatrix ( DataType *  result,
const NekMatrix< LhsDataType, BlockMatrixTag > &  lhs,
const DataType *  rhs,
typename std::enable_if< !CanGetRawPtr< NekMatrix< LhsDataType, BlockMatrixTag > >::value >::type *  p = nullptr 
)

Definition at line 105 of file MatrixVectorMultiplication.cpp.

112{
113 NEKERROR(ErrorUtil::efatal,
114 "Banded block matrix multiplication not yet implemented");
115}
#define NEKERROR(type, msg)
Assert Level 0 – Fundamental assert which is used whether in FULLDEBUG, DEBUG or OPT compilation mode...
Definition: ErrorUtil.hpp:202

References Nektar::ErrorUtil::efatal, and NEKERROR.

◆ NekMultiplyBandedMatrix() [2/2]

template<typename DataType , typename LhsDataType , typename MatrixType >
void Nektar::NekMultiplyBandedMatrix ( DataType *  result,
const NekMatrix< LhsDataType, MatrixType > &  lhs,
const DataType *  rhs,
typename std::enable_if< CanGetRawPtr< NekMatrix< LhsDataType, MatrixType > >::value >::type *  p = nullptr 
)

Definition at line 82 of file MatrixVectorMultiplication.cpp.

88{
89 int m = lhs.GetRows();
90 int n = lhs.GetColumns();
91 int kl = lhs.GetNumberOfSubDiagonals();
92 int ku = lhs.GetNumberOfSuperDiagonals();
93 DataType alpha = lhs.Scale();
94 const DataType *a = lhs.GetRawPtr();
95 int lda = kl + ku + 1;
96 const DataType *x = rhs;
97 int incx = 1;
98 DataType beta = 0.0;
99 DataType *y = result;
100 int incy = 1;
101 Blas::Gbmv('N', m, n, kl, ku, alpha, a, lda, x, incx, beta, y, incy);
102}
static void Gbmv(const char &trans, const int &m, const int &n, const int &kl, const int &ku, const double &alpha, const double *a, const int &lda, const double *x, const int &incx, const double &beta, double *y, const int &incy)
BLAS level 2: Matrix vector multiply y = alpha A x plus beta y where A[m x n] is banded.
Definition: Blas.hpp:221

References Nektar::LibUtilities::beta, and Blas::Gbmv().

Referenced by Multiply().

◆ NekMultiplyDefaultImpl()

template<typename ResultType , typename LhsDataType , typename RhsDataType , typename LhsMatrixType , typename RhsMatrixType >
SNekMat const NekSingle &void Nektar::NekMultiplyDefaultImpl ( NekMatrix< ResultType, StandardMatrixTag > &  result,
const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 138 of file MatrixOperations.cpp.

141{
142 ASSERTL1(lhs.GetColumns() == rhs.GetRows(),
143 std::string("A left side matrix with column count ") +
144 std::to_string(lhs.GetColumns()) +
145 std::string(" and a right side matrix with row count ") +
146 std::to_string(rhs.GetRows()) +
147 std::string(" can't be multiplied."));
148
149 for (unsigned int i = 0; i < result.GetRows(); ++i)
150 {
151 for (unsigned int j = 0; j < result.GetColumns(); ++j)
152 {
153 ResultType t = ResultType(0);
154
155 // Set the result(i,j) element.
156 for (unsigned int k = 0; k < lhs.GetColumns(); ++k)
157 {
158 t += lhs(i, k) * rhs(k, j);
159 }
160 result(i, j) = t;
161 }
162 }
163}

References ASSERTL1.

Referenced by Multiply(), and NekMultiplyFullMatrixFullMatrix().

◆ NekMultiplyDiagonalMatrix() [1/2]

template<typename DataType , typename LhsDataType , typename MatrixType >
void Nektar::NekMultiplyDiagonalMatrix ( DataType *  result,
const NekMatrix< LhsDataType, MatrixType > &  lhs,
const DataType *  rhs 
)

Definition at line 60 of file MatrixVectorMultiplication.cpp.

63{
64 int n = lhs.GetRows();
65 for (unsigned int i = 0; i < n; ++i)
66 {
67 result[i] = lhs(i, i) * rhs[i];
68 }
69}

Referenced by Multiply().

◆ NekMultiplyDiagonalMatrix() [2/2]

template<typename DataType , typename LhsDataType >
void Nektar::NekMultiplyDiagonalMatrix ( DataType *  result,
const NekMatrix< LhsDataType, StandardMatrixTag > &  lhs,
const DataType *  rhs 
)

Definition at line 72 of file MatrixVectorMultiplication.cpp.

75{
76 int n = lhs.GetRows();
77 const DataType *mat_ptr = lhs.GetRawPtr();
78 Vmath::Vmul(n, mat_ptr, 1, rhs, 1, result, 1);
79}
void Vmul(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Multiply vector z = x*y.
Definition: Vmath.hpp:72

References Vmath::Vmul().

◆ NekMultiplyFullMatrix() [1/2]

template<typename DataType , typename InnerMatrixType , typename MatrixTag >
void Nektar::NekMultiplyFullMatrix ( DataType *  result,
const NekMatrix< InnerMatrixType, MatrixTag > &  lhs,
const DataType *  rhs,
typename std::enable_if< !CanGetRawPtr< NekMatrix< InnerMatrixType, MatrixTag > >::value >::type *  p = nullptr 
)

Definition at line 528 of file MatrixVectorMultiplication.cpp.

534{
535 NekMultiplyUnspecializedMatrixType(result, lhs, rhs);
536}

References NekMultiplyUnspecializedMatrixType().

◆ NekMultiplyFullMatrix() [2/2]

template<typename DataType , typename InnerMatrixType , typename MatrixTag >
void Nektar::NekMultiplyFullMatrix ( DataType *  result,
const NekMatrix< InnerMatrixType, MatrixTag > &  lhs,
const DataType *  rhs,
typename std::enable_if< CanGetRawPtr< NekMatrix< InnerMatrixType, MatrixTag > >::value >::type *  p = nullptr 
)

Definition at line 504 of file MatrixVectorMultiplication.cpp.

510{
511 const unsigned int *size = lhs.GetSize();
512
513 char t = lhs.GetTransposeFlag();
514
515 DataType alpha = lhs.Scale();
516 const DataType *a = lhs.GetRawPtr();
517 int lda = size[0];
518 const DataType *x = rhs;
519 int incx = 1;
520 DataType beta = 0.0;
521 DataType *y = result;
522 int incy = 1;
523
524 Blas::Gemv(t, size[0], size[1], alpha, a, lda, x, incx, beta, y, incy);
525}

References Nektar::LibUtilities::beta, and Blas::Gemv().

Referenced by Multiply().

◆ NekMultiplyFullMatrixFullMatrix() [1/2]

template<typename LhsDataType , typename RhsDataType , typename LhsMatrixType , typename RhsMatrixType >
void Nektar::NekMultiplyFullMatrixFullMatrix ( NekMatrix< LhsDataType, StandardMatrixTag > &  result,
const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs,
typename std::enable_if< CanGetRawPtr< NekMatrix< LhsDataType, LhsMatrixType > >::value &&CanGetRawPtr< NekMatrix< RhsDataType, RhsMatrixType > >::value >::type *  p = nullptr 
)

Definition at line 142 of file MatrixOperations.hpp.

150{
151 ASSERTL1(lhs.GetType() == eFULL && rhs.GetType() == eFULL,
152 "Only full matrices are supported.");
153
154 unsigned int M = lhs.GetRows();
155 unsigned int N = rhs.GetColumns();
156 unsigned int K = lhs.GetColumns();
157
158 unsigned int LDA = M;
159 if (lhs.GetTransposeFlag() == 'T')
160 {
161 LDA = K;
162 }
163
164 unsigned int LDB = K;
165 if (rhs.GetTransposeFlag() == 'T')
166 {
167 LDB = N;
168 }
169
170 Blas::Gemm(lhs.GetTransposeFlag(), rhs.GetTransposeFlag(), M, N, K,
171 lhs.Scale() * rhs.Scale(), lhs.GetRawPtr(), LDA, rhs.GetRawPtr(),
172 LDB, 0.0, result.GetRawPtr(), result.GetRows());
173}

References ASSERTL1, eFULL, and Blas::Gemm().

◆ NekMultiplyFullMatrixFullMatrix() [2/2]

template<typename ResultType , typename LhsDataType , typename RhsDataType , typename LhsMatrixType , typename RhsMatrixType >
void Nektar::NekMultiplyFullMatrixFullMatrix ( NekMatrix< ResultType, StandardMatrixTag > &  result,
const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 167 of file MatrixOperations.cpp.

171{
172 NekMultiplyDefaultImpl(result, lhs, rhs);
173}

References NekMultiplyDefaultImpl().

Referenced by Multiply().

◆ NekMultiplyLowerTriangularMatrix() [1/3]

template<typename DataType >
void Nektar::NekMultiplyLowerTriangularMatrix ( DataType *  result,
const NekMatrix< DataType, StandardMatrixTag > &  lhs,
const DataType *  rhs 
)

Definition at line 380 of file MatrixVectorMultiplication.cpp.

383{
384 int vectorSize = lhs.GetColumns();
385 std::copy(rhs, rhs + vectorSize, result);
386 int n = lhs.GetRows();
387 const DataType *a = lhs.GetRawPtr();
388 DataType *x = result;
389 int incx = 1;
390
391 Blas::Tpmv('L', lhs.GetTransposeFlag(), 'N', n, a, x, incx);
392}
char GetTransposeFlag() const
Definition: MatrixBase.cpp:122
static void Tpmv(const char &uplo, const char &trans, const char &diag, const int &n, const double *ap, double *x, const int &incx)
BLAS level 2: Matrix vector multiply x = alpha A x where A[n x n].
Definition: Blas.hpp:310

References CellMLToNektar.pycml::copy(), Nektar::ConstMatrix< DataType >::GetColumns(), Nektar::NekMatrix< DataType, StandardMatrixTag >::GetRawPtr(), Nektar::ConstMatrix< DataType >::GetRows(), Nektar::ConstMatrix< DataType >::GetTransposeFlag(), and Blas::Tpmv().

Referenced by Multiply(), and NekMultiplyLowerTriangularMatrix().

◆ NekMultiplyLowerTriangularMatrix() [2/3]

template<typename DataType , typename LhsDataType , typename MatrixType >
void Nektar::NekMultiplyLowerTriangularMatrix ( DataType *  result,
const NekMatrix< LhsDataType, MatrixType > &  lhs,
const DataType *  rhs 
)

Definition at line 410 of file MatrixVectorMultiplication.cpp.

413{
414 for (unsigned int i = 0; i < lhs.GetRows(); ++i)
415 {
416 DataType accum = DataType(0);
417 for (unsigned int j = 0; j <= i; ++j)
418 {
419 accum += lhs(i, j) * rhs[j];
420 }
421 result[i] = accum;
422 }
423}

◆ NekMultiplyLowerTriangularMatrix() [3/3]

template<typename DataType >
void Nektar::NekMultiplyLowerTriangularMatrix ( DataType *  result,
const NekMatrix< NekMatrix< DataType, StandardMatrixTag >, ScaledMatrixTag > &  lhs,
const DataType *  rhs 
)

Definition at line 395 of file MatrixVectorMultiplication.cpp.

400{
401 NekMultiplyLowerTriangularMatrix(result, *lhs.GetOwnedMatrix(), rhs);
402
403 for (unsigned int i = 0; i < lhs.GetColumns(); ++i)
404 {
405 result[i] *= lhs.Scale();
406 }
407}

References NekMultiplyLowerTriangularMatrix().

◆ NekMultiplySymmetricMatrix() [1/2]

template<typename DataType , typename InnerMatrixType , typename MatrixTag >
void Nektar::NekMultiplySymmetricMatrix ( DataType *  result,
const NekMatrix< InnerMatrixType, MatrixTag > &  lhs,
const DataType *  rhs,
typename std::enable_if< !CanGetRawPtr< NekMatrix< InnerMatrixType, MatrixTag > >::value >::type *  p = nullptr 
)

Definition at line 493 of file MatrixVectorMultiplication.cpp.

499{
500 NekMultiplyUnspecializedMatrixType(result, lhs, rhs);
501}

References NekMultiplyUnspecializedMatrixType().

◆ NekMultiplySymmetricMatrix() [2/2]

template<typename DataType , typename InnerMatrixType , typename MatrixTag >
void Nektar::NekMultiplySymmetricMatrix ( DataType *  result,
const NekMatrix< InnerMatrixType, MatrixTag > &  lhs,
const DataType *  rhs,
typename std::enable_if< CanGetRawPtr< NekMatrix< InnerMatrixType, MatrixTag > >::value >::type *  p = nullptr 
)

Definition at line 472 of file MatrixVectorMultiplication.cpp.

478{
479 const unsigned int *size = lhs.GetSize();
480
481 DataType alpha = lhs.Scale();
482 const DataType *a = lhs.GetRawPtr();
483 const DataType *x = rhs;
484 int incx = 1;
485 DataType beta = 0.0;
486 DataType *y = result;
487 int incy = 1;
488
489 Blas::Spmv('U', size[0], alpha, a, x, incx, beta, y, incy);
490}
static void Spmv(const char &uplo, const int &n, const double &alpha, const double *a, const double *x, const int &incx, const double &beta, double *y, const int &incy)
BLAS level 2: Matrix vector multiply y = alpha A x plus beta y where A[n x n] is symmetric packed.
Definition: Blas.hpp:254

References Nektar::LibUtilities::beta, and Blas::Spmv().

Referenced by Multiply().

◆ NekMultiplyUnspecializedMatrixType()

template<typename DataType , typename LhsDataType , typename MatrixType >
void Nektar::NekMultiplyUnspecializedMatrixType ( DataType *  result,
const NekMatrix< LhsDataType, MatrixType > &  lhs,
const DataType *  rhs 
)

Definition at line 44 of file MatrixVectorMultiplication.cpp.

47{
48 for (unsigned int i = 0; i < lhs.GetRows(); ++i)
49 {
50 DataType accum = DataType(0);
51 for (unsigned int j = 0; j < lhs.GetColumns(); ++j)
52 {
53 accum += lhs(i, j) * rhs[j];
54 }
55 result[i] = accum;
56 }
57}

Referenced by Multiply(), NekMultiplyFullMatrix(), and NekMultiplySymmetricMatrix().

◆ NekMultiplyUpperTriangularMatrix() [1/3]

template<typename DataType >
void Nektar::NekMultiplyUpperTriangularMatrix ( DataType *  result,
const NekMatrix< DataType, StandardMatrixTag > &  lhs,
const DataType *  rhs 
)

Definition at line 426 of file MatrixVectorMultiplication.cpp.

429{
430 int vectorSize = lhs.GetColumns();
431 std::copy(rhs, rhs + vectorSize, result);
432 int n = lhs.GetRows();
433 const DataType *a = lhs.GetRawPtr();
434 DataType *x = result;
435 int incx = 1;
436
437 Blas::Tpmv('U', lhs.GetTransposeFlag(), 'N', n, a, x, incx);
438}

References CellMLToNektar.pycml::copy(), Nektar::ConstMatrix< DataType >::GetColumns(), Nektar::NekMatrix< DataType, StandardMatrixTag >::GetRawPtr(), Nektar::ConstMatrix< DataType >::GetRows(), Nektar::ConstMatrix< DataType >::GetTransposeFlag(), and Blas::Tpmv().

Referenced by Multiply(), and NekMultiplyUpperTriangularMatrix().

◆ NekMultiplyUpperTriangularMatrix() [2/3]

template<typename DataType , typename LhsDataType , typename MatrixType >
void Nektar::NekMultiplyUpperTriangularMatrix ( DataType *  result,
const NekMatrix< LhsDataType, MatrixType > &  lhs,
const DataType *  rhs 
)

Definition at line 456 of file MatrixVectorMultiplication.cpp.

459{
460 for (unsigned int i = 0; i < lhs.GetRows(); ++i)
461 {
462 DataType accum = DataType(0);
463 for (unsigned int j = i; j < lhs.GetColumns(); ++j)
464 {
465 accum += lhs(i, j) * rhs[j];
466 }
467 result[i] = accum;
468 }
469}

◆ NekMultiplyUpperTriangularMatrix() [3/3]

template<typename DataType >
void Nektar::NekMultiplyUpperTriangularMatrix ( DataType *  result,
const NekMatrix< NekMatrix< DataType, StandardMatrixTag >, ScaledMatrixTag > &  lhs,
const DataType *  rhs 
)

Definition at line 441 of file MatrixVectorMultiplication.cpp.

446{
447 NekMultiplyUpperTriangularMatrix(result, *lhs.GetOwnedMatrix(), rhs);
448
449 for (unsigned int i = 0; i < lhs.GetColumns(); ++i)
450 {
451 result[i] *= lhs.Scale();
452 }
453}

References NekMultiplyUpperTriangularMatrix().

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX() [1/11]

Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX ( AddEqual  ,
NEKTAR_ALL_MATRIX_TYPES  ,
(1,(void))  ,
(1,(DNekMat &))  ,
(0,())   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX() [2/11]

Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX ( Multiply  ,
NEKTAR_ALL_MATRIX_TYPES  ,
(1,(DNekMat))  ,
(0,())  ,
(1,(const NekDouble &))   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX() [3/11]

Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX ( Multiply  ,
NEKTAR_ALL_MATRIX_TYPES  ,
(1,(DNekMat))  ,
(1,(const NekDouble &))  ,
(0,())   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX() [4/11]

Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX ( Multiply  ,
NEKTAR_ALL_MATRIX_TYPES  ,
(1,(NekVector< NekDouble >))  ,
(0,())  ,
(1,(const NekVector< NekDouble > &))   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX() [5/11]

Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX ( Multiply  ,
NEKTAR_ALL_MATRIX_TYPES  ,
(1,(void))  ,
(1,(DNekMat &))  ,
(1,(const NekDouble &))   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX() [6/11]

Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX ( Multiply  ,
NEKTAR_ALL_MATRIX_TYPES  ,
(1,(void))  ,
(2,(DNekMat &, const NekDouble &))  ,
(0,())   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX() [7/11]

Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX ( Multiply  ,
NEKTAR_BLOCK_MATRIX_TYPES  ,
(1,(void))  ,
(1,(NekVector< NekDouble > &))  ,
(1,(const NekVector< NekDouble > &))   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX() [8/11]

Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX ( Multiply  ,
NEKTAR_STANDARD_AND_SCALED_MATRICES  ,
(1,(void))  ,
(1,(NekVector< NekDouble > &))  ,
(1,(const NekVector< NekDouble > &))   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX() [9/11]

Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX ( MultiplyEqual  ,
(1,(DNekMat &))  ,
(1,(void))  ,
(0,())  ,
(1,(const NekDouble &))   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX() [10/11]

Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX ( SubtractEqual  ,
NEKTAR_ALL_MATRIX_TYPES  ,
(1,(void))  ,
(1,(DNekMat &))  ,
(0,())   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX() [11/11]

SNekMat Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX ( SubtractEqualNegatedLhs  ,
NEKTAR_ALL_MATRIX_TYPES  ,
(1,(void))  ,
(1,(DNekMat &))  ,
(0,())   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES() [1/6]

Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES ( Add  ,
NEKTAR_ALL_MATRIX_TYPES  ,
NEKTAR_ALL_MATRIX_TYPES  ,
(1,(DNekMat))  ,
(0,())  ,
(0,())   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES() [2/6]

Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES ( Add  ,
NEKTAR_ALL_MATRIX_TYPES  ,
NEKTAR_ALL_MATRIX_TYPES  ,
(1,(void))  ,
(1,(DNekMat &))  ,
(0,())   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES() [3/6]

Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES ( Multiply  ,
NEKTAR_ALL_MATRIX_TYPES  ,
NEKTAR_ALL_MATRIX_TYPES  ,
(1,(void))  ,
(1,(DNekMat &))  ,
(0,())   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES() [4/6]

Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES ( Subtract  ,
NEKTAR_ALL_MATRIX_TYPES  ,
NEKTAR_ALL_MATRIX_TYPES  ,
(1,(DNekMat))  ,
(0,())  ,
(0,())   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES() [5/6]

Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES ( Subtract  ,
NEKTAR_ALL_MATRIX_TYPES  ,
NEKTAR_ALL_MATRIX_TYPES  ,
(1,(void))  ,
(1,(DNekMat &))  ,
(0,())   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES() [6/6]

SNekMat Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES ( SubtractNegatedLhs  ,
NEKTAR_ALL_MATRIX_TYPES  ,
NEKTAR_ALL_MATRIX_TYPES  ,
(1,(void))  ,
(1,(DNekMat &))  ,
(0,())   
)

◆ Normalize() [1/3]

template<typename DataType >
void Nektar::Normalize ( NekVector< DataType > &  v)

Definition at line 1214 of file NekVector.cpp.

1215{
1216 DataType m = v.Magnitude();
1217 if (m > DataType(0))
1218 {
1219 v /= m;
1220 }
1221}
DataType Magnitude() const
Definition: NekVector.cpp:402

References Nektar::NekVector< DataType >::Magnitude().

Referenced by Nektar::NekVector< DataType >::Normalize().

◆ Normalize() [2/3]

template void Nektar::Normalize ( NekVector< NekDouble > &  v)

◆ Normalize() [3/3]

template void Nektar::Normalize ( NekVector< NekSingle > &  v)

◆ operator!=() [1/6]

template<typename T1 , typename T2 >
bool Nektar::operator!= ( const Array< OneD, T1 > &  lhs,
const Array< OneD, T2 > &  rhs 
)

Definition at line 841 of file SharedArray.hpp.

842{
843 return !(lhs == rhs);
844}

◆ operator!=() [2/6]

template<typename T1 , typename T2 >
bool Nektar::operator!= ( const Array< TwoD, T1 > &  lhs,
const Array< TwoD, T2 > &  rhs 
)

Definition at line 942 of file SharedArray.hpp.

943{
944 return !(lhs == rhs);
945}

◆ operator!=() [3/6]

template<typename DataType >
bool Nektar::operator!= ( const MemoryManager< DataType > &  lhs,
const MemoryManager< DataType > &  rhs 
)

Definition at line 306 of file NekMemoryManager.hpp.

308{
309 return !(lhs == rhs);
310}

◆ operator!=() [4/6]

template<typename DataType >
bool Nektar::operator!= ( const NekVector< DataType > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 1049 of file NekVector.cpp.

1050{
1051 return !(lhs == rhs);
1052}

◆ operator!=() [5/6]

template bool Nektar::operator!= ( const NekVector< NekDouble > &  lhs,
const NekVector< NekDouble > &  rhs 
)

◆ operator!=() [6/6]

template bool Nektar::operator!= ( const NekVector< NekSingle > &  lhs,
const NekVector< NekSingle > &  rhs 
)

◆ operator*() [1/9]

template<typename DataType , typename RhsDataType , typename RhsMatrixType >
NekMatrix< typename NekMatrix< RhsDataType, RhsMatrixType >::NumberType, StandardMatrixTag > Nektar::operator* ( const DataType &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 118 of file MatrixOperations.hpp.

119{
120 return Multiply(lhs, rhs);
121}

References Multiply().

◆ operator*() [2/9]

template<typename DataType >
NekVector< DataType > Nektar::operator* ( const NekDouble lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 314 of file NekVector.hpp.

316{
317 return Multiply(lhs, rhs);
318}
void Multiply(NekMatrix< ResultDataType, StandardMatrixTag > &result, const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const ResultDataType &rhs)

References Multiply().

◆ operator*() [3/9]

template<typename LhsDataType , typename RhsDataType , typename LhsMatrixType , typename RhsMatrixType >
NekMatrix< typename std::remove_const< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType >::type, StandardMatrixTag > Nektar::operator* ( const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 278 of file MatrixOperations.hpp.

280{
281 return Multiply(lhs, rhs);
282}

References Multiply().

◆ operator*() [4/9]

template<typename DataType , typename LhsDataType , typename MatrixType >
NekVector< DataType > Nektar::operator* ( const NekMatrix< LhsDataType, MatrixType > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 72 of file MatrixOperations.hpp.

74{
75 return Multiply(lhs, rhs);
76}

References Multiply().

◆ operator*() [5/9]

template<typename DataType , typename RhsDataType , typename RhsMatrixType >
NekMatrix< typename NekMatrix< RhsDataType, RhsMatrixType >::NumberType, StandardMatrixTag > Nektar::operator* ( const NekMatrix< RhsDataType, RhsMatrixType > &  lhs,
const DataType &  rhs 
)

Definition at line 126 of file MatrixOperations.hpp.

127{
128 return Multiply(lhs, rhs);
129}

References Multiply().

◆ operator*() [6/9]

template<typename DataType , typename dim , typename space , typename ScalarType >
NekPoint< DataType > Nektar::operator* ( const NekPoint< DataType > &  lhs,
const ScalarType &  rhs 
)

Definition at line 443 of file NekPoint.hpp.

445{
446 NekPoint<DataType> result(lhs);
447 result *= rhs;
448 return result;
449}

◆ operator*() [7/9]

template<typename DataType >
NekVector< DataType > Nektar::operator* ( const NekVector< DataType > &  lhs,
const NekDouble rhs 
)

Definition at line 307 of file NekVector.hpp.

309{
310 return Multiply(lhs, rhs);
311}

References Multiply().

◆ operator*() [8/9]

template<typename DataType >
NekVector< DataType > Nektar::operator* ( const NekVector< DataType > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 321 of file NekVector.hpp.

323{
324 return Multiply(lhs, rhs);
325}

References Multiply().

◆ operator*() [9/9]

template<typename DataType , typename dim , typename space , typename ScalarType >
NekPoint< DataType > Nektar::operator* ( const ScalarType &  lhs,
const NekPoint< DataType > &  rhs 
)

Definition at line 434 of file NekPoint.hpp.

436{
437 NekPoint<DataType> result(rhs);
438 result *= lhs;
439 return result;
440}

◆ operator+() [1/7]

template<typename DataType >
Array< OneD, DataType > Nektar::operator+ ( const Array< OneD, DataType > &  lhs,
typename Array< OneD, DataType >::size_type  offset 
)

Definition at line 847 of file SharedArray.hpp.

850{
852}

◆ operator+() [2/7]

template<typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Nektar::operator+ ( const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 309 of file MatrixOperations.hpp.

311{
312 return Add(lhs, rhs);
313}
NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Add(const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)

References Add().

◆ operator+() [3/7]

template<typename DataType >
NekPoint< DataType > Nektar::operator+ ( const NekPoint< DataType > &  lhs,
const NekPoint< DataType > &  rhs 
)

Definition at line 376 of file NekPoint.hpp.

378{
379 NekPoint<DataType> result(lhs);
380 result += rhs;
381 return result;
382}

◆ operator+() [4/7]

template<typename DataType >
NekPoint< DataType > Nektar::operator+ ( const NekPoint< DataType > &  lhs,
typename boost::call_traits< DataType >::const_reference  rhs 
)

Definition at line 395 of file NekPoint.hpp.

398{
399 NekPoint<DataType> result(lhs);
400 result += rhs;
401 return result;
402}

◆ operator+() [5/7]

template<typename DataType >
NekVector< DataType > Nektar::operator+ ( const NekVector< DataType > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 335 of file NekVector.hpp.

337{
338 return Add(lhs, rhs);
339}
SNekMat SNekMat void Add(NekMatrix< DataType, StandardMatrixTag > &result, const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)

References Add().

◆ operator+() [6/7]

template<typename DataType >
Array< OneD, DataType > Nektar::operator+ ( typename Array< OneD, DataType >::size_type  offset,
const Array< OneD, DataType > &  rhs 
)

Definition at line 855 of file SharedArray.hpp.

858{
860}

◆ operator+() [7/7]

template<typename DataType >
NekPoint< DataType > Nektar::operator+ ( typename boost::call_traits< DataType >::const_reference  lhs,
const NekPoint< DataType > &  rhs 
)

Definition at line 385 of file NekPoint.hpp.

388{
389 NekPoint<DataType> result(rhs);
390 result += lhs;
391 return result;
392}

◆ operator-() [1/5]

template<typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Nektar::operator- ( const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 359 of file MatrixOperations.hpp.

361{
362 return Subtract(lhs, rhs);
363}
NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Subtract(const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)

References Subtract().

◆ operator-() [2/5]

template<typename DataType >
NekPoint< DataType > Nektar::operator- ( const NekPoint< DataType > &  lhs,
const NekPoint< DataType > &  rhs 
)

Definition at line 405 of file NekPoint.hpp.

407{
408 NekPoint<DataType> result(lhs);
409 result -= rhs;
410 return result;
411}

◆ operator-() [3/5]

template<typename DataType >
NekPoint< DataType > Nektar::operator- ( const NekPoint< DataType > &  lhs,
typename boost::call_traits< DataType >::const_reference  rhs 
)

Definition at line 424 of file NekPoint.hpp.

427{
428 NekPoint<DataType> result(lhs);
429 result -= rhs;
430 return result;
431}

◆ operator-() [4/5]

template<typename DataType >
NekVector< DataType > Nektar::operator- ( const NekVector< DataType > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 342 of file NekVector.hpp.

344{
345 return Subtract(lhs, rhs);
346}
void Subtract(NekMatrix< DataType, StandardMatrixTag > &result, const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)

References Subtract().

◆ operator-() [5/5]

template<typename DataType >
NekPoint< DataType > Nektar::operator- ( typename boost::call_traits< DataType >::const_reference  lhs,
const NekPoint< DataType > &  rhs 
)

Definition at line 414 of file NekPoint.hpp.

417{
418 NekPoint<DataType> result(-rhs);
419 result += lhs;
420 return result;
421}

◆ operator/() [1/2]

template<typename DataType >
NekPoint< DataType > Nektar::operator/ ( const NekPoint< DataType > &  lhs,
typename boost::call_traits< DataType >::param_type  rhs 
)

Definition at line 452 of file NekPoint.hpp.

455{
456 NekPoint<DataType> result(lhs);
457 result /= rhs;
458 return result;
459}

◆ operator/() [2/2]

template<typename DataType >
NekVector< DataType > Nektar::operator/ ( const NekVector< DataType > &  lhs,
const NekDouble rhs 
)

Definition at line 328 of file NekVector.hpp.

330{
331 return Divide(lhs, rhs);
332}
void Divide(NekVector< ResultDataType > &result, const NekVector< InputDataType > &lhs, const NekDouble &rhs)
Definition: NekVector.cpp:675

References Divide().

◆ operator<<() [1/10]

template<typename T >
std::ostream & Nektar::operator<< ( std::ostream &  os,
const CountedObject< T > &  lhs 
)

Definition at line 155 of file CountedObject.h.

156{
157 os << lhs.GetValue();
158 return os;
159}
unsigned int GetValue() const

References Nektar::CountedObject< DerivedType >::GetValue().

◆ operator<<() [2/10]

template<typename DataType , typename FormType >
std::ostream & Nektar::operator<< ( std::ostream &  os,
const NekMatrix< DataType, FormType > &  rhs 
)

Definition at line 49 of file NekMatrix.hpp.

51{
52 int oswidth = 9;
53 int osprecision = 6;
54
55 for (unsigned int i = 0; i < rhs.GetRows(); ++i)
56 {
57 os << "[";
58 for (unsigned int j = 0; j < rhs.GetColumns(); ++j)
59 {
60 os.width(oswidth);
61 os.precision(osprecision);
62 os << rhs(i, j);
63 if (j != rhs.GetColumns() - 1)
64 {
65 os << ", ";
66 }
67 }
68 os << "]";
69 if (i != rhs.GetRows() - 1)
70 {
71 os << std::endl;
72 }
73 }
74 return os;
75}

◆ operator<<() [3/10]

template<typename DataType >
std::ostream & Nektar::operator<< ( std::ostream &  os,
const NekPoint< DataType > &  p 
)

Definition at line 499 of file NekPoint.hpp.

500{
501 os << p.AsString();
502 return os;
503}

References CellMLToNektar.cellml_metadata::p.

◆ operator<<() [4/10]

template<typename SparseStorageType >
std::ostream & Nektar::operator<< ( std::ostream &  os,
const NekSparseDiagBlkMatrix< SparseStorageType > &  rhs 
)

Definition at line 110 of file SparseUtils.cpp.

112{
113 int oswidth = 9;
114 int osprecision = 6;
115
116 for (unsigned int i = 0; i < rhs.GetRows(); ++i)
117 {
118 os << "[";
119 for (unsigned int j = 0; j < rhs.GetColumns(); ++j)
120 {
121 os.width(oswidth);
122 os.precision(osprecision);
123 os << rhs(i, j);
124 if (j != rhs.GetColumns() - 1)
125 {
126 os << ", ";
127 }
128 }
129 os << "]";
130 if (i != rhs.GetRows() - 1)
131 {
132 os << std::endl;
133 }
134 }
135 return os;
136}

References Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetColumns(), and Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetRows().

◆ operator<<() [5/10]

template std::ostream & Nektar::operator<< ( std::ostream &  os,
const NekSparseDiagBlkMatrix< StorageSmvBsr< NekDouble > > &  rhs 
)

◆ operator<<() [6/10]

template<typename SparseStorageType >
std::ostream & Nektar::operator<< ( std::ostream &  os,
const NekSparseMatrix< SparseStorageType > &  rhs 
)

Definition at line 81 of file SparseUtils.cpp.

83{
84 int oswidth = 9;
85 int osprecision = 6;
86
87 for (unsigned int i = 0; i < rhs.GetRows(); ++i)
88 {
89 os << "[";
90 for (unsigned int j = 0; j < rhs.GetColumns(); ++j)
91 {
92 os.width(oswidth);
93 os.precision(osprecision);
94 os << rhs(i, j);
95 if (j != rhs.GetColumns() - 1)
96 {
97 os << ", ";
98 }
99 }
100 os << "]";
101 if (i != rhs.GetRows() - 1)
102 {
103 os << std::endl;
104 }
105 }
106 return os;
107}
IndexType GetRows() const
IndexType GetColumns() const

References Nektar::NekSparseMatrix< SparseStorageType >::GetColumns(), and Nektar::NekSparseMatrix< SparseStorageType >::GetRows().

◆ operator<<() [7/10]

template std::ostream & Nektar::operator<< ( std::ostream &  os,
const NekSparseMatrix< StorageSmvBsr< NekDouble > > &  rhs 
)

◆ operator<<() [8/10]

template<typename DataType >
std::ostream & Nektar::operator<< ( std::ostream &  os,
const NekVector< DataType > &  rhs 
)

Definition at line 982 of file NekVector.cpp.

983{
984 os << rhs.AsString();
985 return os;
986}
std::string AsString() const
Definition: NekVector.cpp:420

References Nektar::NekVector< DataType >::AsString().

◆ operator<<() [9/10]

template std::ostream & Nektar::operator<< ( std::ostream &  os,
const NekVector< NekDouble > &  rhs 
)

◆ operator<<() [10/10]

template std::ostream & Nektar::operator<< ( std::ostream &  os,
const NekVector< NekSingle > &  rhs 
)

◆ operator==() [1/6]

template<typename T1 , typename T2 >
bool Nektar::operator== ( const Array< OneD, T1 > &  lhs,
const Array< OneD, T2 > &  rhs 
)

Definition at line 816 of file SharedArray.hpp.

817{
818 if (lhs.size() != rhs.size())
819 {
820 return false;
821 }
822
823 if (lhs.data() == rhs.data())
824 {
825 return true;
826 }
827
828 typename Array<OneD, T1>::size_type size_value(lhs.size());
829 for (typename Array<OneD, T1>::size_type i = 0; i < size_value; ++i)
830 {
831 if (!IsEqual(lhs[i], rhs[i]))
832 {
833 return false;
834 }
835 }
836
837 return true;
838}
bool IsEqual(const T &lhs, const T &rhs)

References IsEqual().

◆ operator==() [2/6]

template<typename T1 , typename T2 >
bool Nektar::operator== ( const Array< TwoD, T1 > &  lhs,
const Array< TwoD, T2 > &  rhs 
)

Definition at line 913 of file SharedArray.hpp.

914{
915 if ((lhs.GetRows() != rhs.GetRows()) ||
916 (lhs.GetColumns() != rhs.GetColumns()))
917 {
918 return false;
919 }
920
921 if (lhs.data() == rhs.data())
922 {
923 return true;
924 }
925
926 for (typename Array<OneD, T1>::size_type i = 0; i < lhs.GetRows(); ++i)
927 {
928 for (typename Array<OneD, T1>::size_type j = 0; j < lhs.GetColumns();
929 ++j)
930 {
931 if (!IsEqual(lhs[i][j], rhs[i][j]))
932 {
933 return false;
934 }
935 }
936 }
937
938 return true;
939}

References IsEqual().

◆ operator==() [3/6]

template<typename DataType >
bool Nektar::operator== ( const MemoryManager< DataType > &  lhs,
const MemoryManager< DataType > &  rhs 
)

Definition at line 299 of file NekMemoryManager.hpp.

301{
302 return true;
303}

◆ operator==() [4/6]

template<typename DataType >
bool Nektar::operator== ( const NekVector< DataType > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 1032 of file NekVector.cpp.

1033{
1034 if (lhs.GetDimension() != rhs.GetDimension())
1035 {
1036 return false;
1037 }
1038
1039 return std::equal(lhs.begin(), lhs.end(), rhs.begin());
1040}

References Nektar::NekVector< DataType >::begin(), Nektar::NekVector< DataType >::end(), and Nektar::NekVector< DataType >::GetDimension().

◆ operator==() [5/6]

template bool Nektar::operator== ( const NekVector< NekDouble > &  lhs,
const NekVector< NekDouble > &  rhs 
)

◆ operator==() [6/6]

template bool Nektar::operator== ( const NekVector< NekSingle > &  lhs,
const NekVector< NekSingle > &  rhs 
)

◆ operator>>()

template<typename DataType , typename FormType >
std::ostream & Nektar::operator>> ( std::ostream &  os,
const NekMatrix< DataType, FormType > &  rhs 
)

Definition at line 78 of file NekMatrix.hpp.

80{
81 NekDouble tol = 1e-12;
82 os << "[" << std::endl;
83
84 for (unsigned int i = 0; i < rhs.GetRows(); ++i)
85 {
86 for (unsigned int j = 0; j < rhs.GetColumns(); ++j)
87 {
88 if ((NekDouble)rhs(i, j) > tol)
89 {
90 os << '+';
91 }
92 else if ((NekDouble)rhs(i, j) < -tol)
93 {
94 os << '*';
95 }
96 else
97 {
98 os << '-';
99 }
100 }
101 if (i != rhs.GetRows() - 1)
102 {
103 os << std::endl;
104 }
105 }
106 os << "]" << std::endl;
107 return os;
108}

◆ prefun()

void Nektar::prefun ( NekDouble g,
NekDouble  p,
NekDouble  dk,
NekDouble  pk,
NekDouble  ck,
NekDouble f,
NekDouble fd 
)
inline

Evaluate pressure functions fL and fR in Newton iteration of Riemann solver (see equation 4.85 and 4.86 of Toro 2009).

Parameters
gArray of gamma parameters.
pPressure at current iteration.
dkDensity (left or right state)
pkPressure (left or right state)
ckSound speed (left or right state)
fComputed pressure (shock).
fdComputed pressure (rarefaction).

Definition at line 117 of file ExactSolverToro.cpp.

119{
120 if (p <= pk)
121 {
122 // Rarefaction wave
123 NekDouble prat = p / pk;
124 f = g[4] * ck * (pow(prat, g[1]) - 1.0);
125 fd = pow(prat, -g[2]) / (dk * ck);
126 }
127 else
128 {
129 // Shock wave
130 NekDouble ak = g[5] / dk;
131 NekDouble bk = g[6] * pk;
132 NekDouble qrt = sqrt(ak / (bk + p));
133 f = (p - pk) * qrt;
134 fd = (1.0 - 0.5 * (p - pk) / (bk + p)) * qrt;
135 }
136}

References CellMLToNektar.cellml_metadata::p, and tinysimd::sqrt().

Referenced by Nektar::ExactSolverToro::v_PointSolve().

◆ RoeKernel()

template<class T , typename = typename std::enable_if< std::is_floating_point<T>::value || tinysimd::is_vector_floating_point<T>::value>::type>
void Nektar::RoeKernel ( T &  rhoL,
T &  rhouL,
T &  rhovL,
T &  rhowL,
T &  EL,
T &  rhoR,
T &  rhouR,
T &  rhovR,
T &  rhowR,
T &  ER,
T &  rhof,
T &  rhouf,
T &  rhovf,
T &  rhowf,
T &  Ef,
NekDouble  gamma 
)
inline

Definition at line 73 of file RoeSolver.h.

76{
77 // Left and right velocities
78 T uL = rhouL / rhoL;
79 T vL = rhovL / rhoL;
80 T wL = rhowL / rhoL;
81 T uR = rhouR / rhoR;
82 T vR = rhovR / rhoR;
83 T wR = rhowR / rhoR;
84
85 // Left and right pressures
86 T pL = (gamma - 1.0) * (EL - 0.5 * (rhouL * uL + rhovL * vL + rhowL * wL));
87 T pR = (gamma - 1.0) * (ER - 0.5 * (rhouR * uR + rhovR * vR + rhowR * wR));
88
89 // Left and right enthalpy
90 T hL = (EL + pL) / rhoL;
91 T hR = (ER + pR) / rhoR;
92
93 // Square root of rhoL and rhoR.
94 T srL = sqrt(rhoL);
95 T srR = sqrt(rhoR);
96 T srLR = srL + srR;
97
98 // Velocity, enthalpy and sound speed Roe averages (equation 11.60).
99 T uRoe = (srL * uL + srR * uR) / srLR;
100 T vRoe = (srL * vL + srR * vR) / srLR;
101 T wRoe = (srL * wL + srR * wR) / srLR;
102 T hRoe = (srL * hL + srR * hR) / srLR;
103 T URoe = (uRoe * uRoe + vRoe * vRoe + wRoe * wRoe);
104 T cRoe = sqrt((gamma - 1.0) * (hRoe - 0.5 * URoe));
105
106 // Compute eigenvectors (equation 11.59).
107 T k[5][5] = {{1., uRoe - cRoe, vRoe, wRoe, hRoe - uRoe * cRoe},
108 {1., uRoe, vRoe, wRoe, 0.5 * URoe},
109 {0., 0., 1., 0., vRoe},
110 {0., 0., 0., 1., wRoe},
111 {1., uRoe + cRoe, vRoe, wRoe, hRoe + uRoe * cRoe}};
112
113 // Calculate jumps \Delta u_i (defined preceding equation 11.67).
114 T jump[5] = {rhoR - rhoL, rhouR - rhouL, rhovR - rhovL, rhowR - rhowL,
115 ER - EL};
116
117 // Define \Delta u_5 (equation 11.70).
118 T jumpbar = jump[4] - (jump[2] - vRoe * jump[0]) * vRoe -
119 (jump[3] - wRoe * jump[0]) * wRoe;
120
121 // Compute wave amplitudes (equations 11.68, 11.69).
122 T alpha[5];
123 alpha[1] = (gamma - 1.0) *
124 (jump[0] * (hRoe - uRoe * uRoe) + uRoe * jump[1] - jumpbar) /
125 (cRoe * cRoe);
126 alpha[0] =
127 (jump[0] * (uRoe + cRoe) - jump[1] - cRoe * alpha[1]) / (2.0 * cRoe);
128 alpha[4] = jump[0] - (alpha[0] + alpha[1]);
129 alpha[2] = jump[2] - vRoe * jump[0];
130 alpha[3] = jump[3] - wRoe * jump[0];
131
132 // Compute average of left and right fluxes needed for equation 11.29.
133 rhof = 0.5 * (rhoL * uL + rhoR * uR);
134 rhouf = 0.5 * (pL + rhoL * uL * uL + pR + rhoR * uR * uR);
135 rhovf = 0.5 * (rhoL * uL * vL + rhoR * uR * vR);
136 rhowf = 0.5 * (rhoL * uL * wL + rhoR * uR * wR);
137 Ef = 0.5 * (uL * (EL + pL) + uR * (ER + pR));
138
139 // Needed to get right overload resolution for std::abs
140 using std::abs;
141
142 // Compute eigenvalues \lambda_i (equation 11.58).
143 T uRoeAbs = abs(uRoe);
144 T lambda[5] = {abs(uRoe - cRoe), uRoeAbs, uRoeAbs, uRoeAbs,
145 abs(uRoe + cRoe)};
146
147 // Finally perform summation (11.29).
148 for (size_t i = 0; i < 5; ++i)
149 {
150 uRoeAbs = 0.5 * alpha[i] * lambda[i];
151
152 rhof -= uRoeAbs * k[i][0];
153 rhouf -= uRoeAbs * k[i][1];
154 rhovf -= uRoeAbs * k[i][2];
155 rhowf -= uRoeAbs * k[i][3];
156 Ef -= uRoeAbs * k[i][4];
157 }
158}
scalarT< T > abs(scalarT< T > in)
Definition: scalar.hpp:298

References tinysimd::abs(), and tinysimd::sqrt().

Referenced by main(), Nektar::RoeSolver::v_ArraySolve(), Nektar::RoeSolver::v_PointSolve(), and Nektar::RoeSolverSIMD::v_Solve().

◆ RunAllAddCombinations()

template<typename LhsScaledInnerMatrixType , typename LhsBlockInnerMatrixType , typename RhsScaledInnerMatrixType , typename RhsBlockInnerMatrixType >
void Nektar::RunAllAddCombinations ( const NekMatrix< NekDouble, StandardMatrixTag > &  l1,
const NekMatrix< NekMatrix< NekDouble, LhsScaledInnerMatrixType >, ScaledMatrixTag > &  l2,
const NekMatrix< NekMatrix< NekDouble, LhsBlockInnerMatrixType >, BlockMatrixTag > &  l3,
const NekMatrix< NekDouble, StandardMatrixTag > &  r1,
const NekMatrix< NekMatrix< NekDouble, RhsScaledInnerMatrixType >, ScaledMatrixTag > &  r2,
const NekMatrix< NekMatrix< NekDouble, RhsBlockInnerMatrixType >, BlockMatrixTag > &  r3,
const NekMatrix< NekDouble, StandardMatrixTag > &  result 
)

Definition at line 47 of file TestCombinationRunner.h.

59{
60 BOOST_CHECK_EQUAL(l1 + r1, result);
61 BOOST_CHECK_EQUAL(l1 + r2, result);
62 BOOST_CHECK_EQUAL(l1 + r3, result);
63 BOOST_CHECK_EQUAL(l2 + r1, result);
64 BOOST_CHECK_EQUAL(l2 + r2, result);
65 BOOST_CHECK_EQUAL(l2 + r3, result);
66 BOOST_CHECK_EQUAL(l3 + r1, result);
67 BOOST_CHECK_EQUAL(l3 + r2, result);
68 BOOST_CHECK_EQUAL(l3 + r3, result);
69}

Referenced by Nektar::StandardMatrixOperationsUnitTests::BOOST_AUTO_TEST_CASE(), and Nektar::MatrixOperationTests::BOOST_AUTO_TEST_CASE().

◆ RunAllSubCombinations()

template<typename LhsScaledInnerMatrixType , typename LhsBlockInnerMatrixType , typename RhsScaledInnerMatrixType , typename RhsBlockInnerMatrixType >
void Nektar::RunAllSubCombinations ( const NekMatrix< NekDouble, StandardMatrixTag > &  l1,
const NekMatrix< NekMatrix< NekDouble, LhsScaledInnerMatrixType >, ScaledMatrixTag > &  l2,
const NekMatrix< NekMatrix< NekDouble, LhsBlockInnerMatrixType >, BlockMatrixTag > &  l3,
const NekMatrix< NekDouble, StandardMatrixTag > &  r1,
const NekMatrix< NekMatrix< NekDouble, RhsScaledInnerMatrixType >, ScaledMatrixTag > &  r2,
const NekMatrix< NekMatrix< NekDouble, RhsBlockInnerMatrixType >, BlockMatrixTag > &  r3,
const NekMatrix< NekDouble, StandardMatrixTag > &  result 
)

Definition at line 73 of file TestCombinationRunner.h.

85{
86 BOOST_CHECK_EQUAL(l1 - r1, result);
87 BOOST_CHECK_EQUAL(l1 - r2, result);
88 BOOST_CHECK_EQUAL(l1 - r3, result);
89 BOOST_CHECK_EQUAL(l2 - r1, result);
90 BOOST_CHECK_EQUAL(l2 - r2, result);
91 BOOST_CHECK_EQUAL(l2 - r3, result);
92 BOOST_CHECK_EQUAL(l3 - r1, result);
93 BOOST_CHECK_EQUAL(l3 - r2, result);
94 BOOST_CHECK_EQUAL(l3 - r3, result);
95}

Referenced by Nektar::MatrixSubtractionTests::BOOST_AUTO_TEST_CASE(), and Nektar::StandardMatrixOperationsUnitTests::BOOST_AUTO_TEST_CASE().

◆ Subtract() [1/9]

template<typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
SNekMat SNekMat NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Nektar::Subtract ( const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 483 of file MatrixOperations.cpp.

485{
486 typedef
488 NekMatrix<NumberType, StandardMatrixTag> result(lhs.GetRows(),
489 lhs.GetColumns());
490 Subtract(result, lhs, rhs);
491 return result;
492}
SNekMat SNekMat NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Subtract(const NekMatrix< LhsDataType, LhsMatrixType > &lhs, const NekMatrix< RhsDataType, RhsMatrixType > &rhs)

References Subtract().

◆ Subtract() [2/9]

template<typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
NekMatrix< typename NekMatrix< LhsDataType, LhsMatrixType >::NumberType, StandardMatrixTag > Nektar::Subtract ( const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 483 of file MatrixOperations.cpp.

485{
486 typedef
488 NekMatrix<NumberType, StandardMatrixTag> result(lhs.GetRows(),
489 lhs.GetColumns());
490 Subtract(result, lhs, rhs);
491 return result;
492}

References Subtract().

◆ Subtract() [3/9]

template<typename DataType >
NekVector< DataType > Nektar::Subtract ( const NekVector< DataType > &  lhs,
const NekVector< DataType > &  rhs 
)

Definition at line 660 of file NekVector.cpp.

662{
663 NekVector<DataType> result(lhs.GetDimension());
664 Subtract(result, lhs, rhs);
665 return result;
666}
template NekVector< NekSingle > Subtract(const NekVector< NekSingle > &lhs, const NekVector< NekSingle > &rhs)

References Nektar::NekVector< DataType >::GetDimension(), and Subtract().

◆ Subtract() [4/9]

template NekVector< NekDouble > Nektar::Subtract ( const NekVector< NekDouble > &  lhs,
const NekVector< NekDouble > &  rhs 
)

◆ Subtract() [5/9]

template NekVector< NekSingle > Nektar::Subtract ( const NekVector< NekSingle > &  lhs,
const NekVector< NekSingle > &  rhs 
)

Referenced by Subtract().

◆ Subtract() [6/9]

template<typename DataType , typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
void Nektar::Subtract ( NekMatrix< DataType, StandardMatrixTag > &  result,
const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 355 of file MatrixOperations.cpp.

358{
359 ASSERTL1(lhs.GetRows() == rhs.GetRows(),
360 std::string("Matrices with different row counts ") +
361 std::to_string(lhs.GetRows()) + std::string(" and ") +
362 std::to_string(rhs.GetRows()) +
363 std::string(" can't be subtracted."));
364 ASSERTL1(lhs.GetColumns() == rhs.GetColumns(),
365 std::string("Matrices with different column counts ") +
366 std::to_string(lhs.GetColumns()) + std::string(" and ") +
367 std::to_string(rhs.GetColumns()) +
368 std::string(" can't be subtracted."));
369
370 for (unsigned int i = 0; i < lhs.GetRows(); ++i)
371 {
372 for (unsigned int j = 0; j < lhs.GetColumns(); ++j)
373 {
374 result(i, j) = lhs(i, j) - rhs(i, j);
375 }
376 }
377}

References ASSERTL1.

Referenced by operator-(), and Subtract().

◆ Subtract() [7/9]

template void Nektar::Subtract ( NekVector< NekDouble > &  result,
const NekVector< NekDouble > &  lhs,
const NekVector< NekDouble > &  rhs 
)

◆ Subtract() [8/9]

template void Nektar::Subtract ( NekVector< NekSingle > &  result,
const NekVector< NekSingle > &  lhs,
const NekVector< NekSingle > &  rhs 
)

◆ Subtract() [9/9]

template<typename ResultDataType , typename InputDataType >
void Nektar::Subtract ( NekVector< ResultDataType > &  result,
const NekVector< InputDataType > &  lhs,
const NekVector< InputDataType > &  rhs 
)

Definition at line 576 of file NekVector.cpp.

579{
580 ResultDataType *r_buf = result.GetRawPtr();
581 typename std::add_const<InputDataType>::type *lhs_buf = lhs.GetRawPtr();
582 typename std::add_const<InputDataType>::type *rhs_buf = rhs.GetRawPtr();
583 const unsigned int ldim = lhs.GetDimension();
584 for (int i = 0; i < ldim; ++i)
585 {
586 r_buf[i] = lhs_buf[i] - rhs_buf[i];
587 }
588}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ SubtractEqual() [1/5]

template<typename DataType , typename RhsDataType , typename RhsMatrixType >
SNekMat SNekMat void Nektar::SubtractEqual ( NekMatrix< DataType, StandardMatrixTag > &  result,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 419 of file MatrixOperations.cpp.

421{
422 ASSERTL1(result.GetRows() == rhs.GetRows(),
423 std::string("Matrices with different row counts ") +
424 std::to_string(result.GetRows()) + std::string(" and ") +
425 std::to_string(rhs.GetRows()) +
426 std::string(" can't be subtracted."));
427 ASSERTL1(result.GetColumns() == rhs.GetColumns(),
428 std::string("Matrices with different column counts ") +
429 std::to_string(result.GetColumns()) + std::string(" and ") +
430 std::to_string(rhs.GetColumns()) +
431 std::string(" can't be subtracted."));
432
433 for (unsigned int i = 0; i < rhs.GetRows(); ++i)
434 {
435 for (unsigned int j = 0; j < rhs.GetColumns(); ++j)
436 {
437 result(i, j) -= rhs(i, j);
438 }
439 }
440}

References ASSERTL1.

◆ SubtractEqual() [2/5]

template<typename DataType , typename RhsDataType , typename RhsMatrixType >
void Nektar::SubtractEqual ( NekMatrix< DataType, StandardMatrixTag > &  result,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 419 of file MatrixOperations.cpp.

421{
422 ASSERTL1(result.GetRows() == rhs.GetRows(),
423 std::string("Matrices with different row counts ") +
424 std::to_string(result.GetRows()) + std::string(" and ") +
425 std::to_string(rhs.GetRows()) +
426 std::string(" can't be subtracted."));
427 ASSERTL1(result.GetColumns() == rhs.GetColumns(),
428 std::string("Matrices with different column counts ") +
429 std::to_string(result.GetColumns()) + std::string(" and ") +
430 std::to_string(rhs.GetColumns()) +
431 std::string(" can't be subtracted."));
432
433 for (unsigned int i = 0; i < rhs.GetRows(); ++i)
434 {
435 for (unsigned int j = 0; j < rhs.GetColumns(); ++j)
436 {
437 result(i, j) -= rhs(i, j);
438 }
439 }
440}

References ASSERTL1.

◆ SubtractEqual() [3/5]

template void Nektar::SubtractEqual ( NekVector< NekDouble > &  result,
const NekVector< NekDouble > &  rhs 
)

◆ SubtractEqual() [4/5]

template void Nektar::SubtractEqual ( NekVector< NekSingle > &  result,
const NekVector< NekSingle > &  rhs 
)

◆ SubtractEqual() [5/5]

template<typename ResultDataType , typename InputDataType >
void Nektar::SubtractEqual ( NekVector< ResultDataType > &  result,
const NekVector< InputDataType > &  rhs 
)

Definition at line 622 of file NekVector.cpp.

624{
625 ResultDataType *r_buf = result.GetRawPtr();
626 typename std::add_const<InputDataType>::type *rhs_buf = rhs.GetRawPtr();
627 const unsigned int rdim = rhs.GetDimension();
628 for (int i = 0; i < rdim; ++i)
629 {
630 r_buf[i] -= rhs_buf[i];
631 }
632}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ SubtractEqualNegatedLhs() [1/4]

template<typename DataType , typename RhsDataType , typename RhsMatrixType >
void Nektar::SubtractEqualNegatedLhs ( NekMatrix< DataType, StandardMatrixTag > &  result,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 443 of file MatrixOperations.cpp.

445{
446 ASSERTL1(result.GetRows() == rhs.GetRows(),
447 std::string("Matrices with different row counts ") +
448 std::to_string(result.GetRows()) + std::string(" and ") +
449 std::to_string(rhs.GetRows()) +
450 std::string(" can't be subtracted."));
451 ASSERTL1(result.GetColumns() == rhs.GetColumns(),
452 std::string("Matrices with different column counts ") +
453 std::to_string(result.GetColumns()) + std::string(" and ") +
454 std::to_string(rhs.GetColumns()) +
455 std::string(" can't be subtracted."));
456
457 for (unsigned int i = 0; i < rhs.GetRows(); ++i)
458 {
459 for (unsigned int j = 0; j < rhs.GetColumns(); ++j)
460 {
461 result(i, j) = -result(i, j) - rhs(i, j);
462 }
463 }
464}

References ASSERTL1, Nektar::ConstMatrix< DataType >::GetColumns(), and Nektar::ConstMatrix< DataType >::GetRows().

◆ SubtractEqualNegatedLhs() [2/4]

template void Nektar::SubtractEqualNegatedLhs ( NekVector< NekDouble > &  result,
const NekVector< NekDouble > &  rhs 
)

◆ SubtractEqualNegatedLhs() [3/4]

template void Nektar::SubtractEqualNegatedLhs ( NekVector< NekSingle > &  result,
const NekVector< NekSingle > &  rhs 
)

◆ SubtractEqualNegatedLhs() [4/4]

template<typename ResultDataType , typename InputDataType >
void Nektar::SubtractEqualNegatedLhs ( NekVector< ResultDataType > &  result,
const NekVector< InputDataType > &  rhs 
)

Definition at line 635 of file NekVector.cpp.

637{
638 ResultDataType *r_buf = result.GetRawPtr();
639 typename std::add_const<InputDataType>::type *rhs_buf = rhs.GetRawPtr();
640 const unsigned int rdim = rhs.GetDimension();
641 for (int i = 0; i < rdim; ++i)
642 {
643 r_buf[i] = -r_buf[i] - rhs_buf[i];
644 }
645}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ SubtractNegatedLhs() [1/4]

template<typename DataType , typename LhsDataType , typename LhsMatrixType , typename RhsDataType , typename RhsMatrixType >
void Nektar::SubtractNegatedLhs ( NekMatrix< DataType, StandardMatrixTag > &  result,
const NekMatrix< LhsDataType, LhsMatrixType > &  lhs,
const NekMatrix< RhsDataType, RhsMatrixType > &  rhs 
)

Definition at line 381 of file MatrixOperations.cpp.

384{
385 ASSERTL1(lhs.GetRows() == rhs.GetRows(),
386 std::string("Matrices with different row counts ") +
387 std::to_string(lhs.GetRows()) + std::string(" and ") +
388 std::to_string(rhs.GetRows()) +
389 std::string(" can't be subtracted."));
390 ASSERTL1(lhs.GetColumns() == rhs.GetColumns(),
391 std::string("Matrices with different column counts ") +
392 std::to_string(lhs.GetColumns()) + std::string(" and ") +
393 std::to_string(rhs.GetColumns()) +
394 std::string(" can't be subtracted."));
395
396 for (unsigned int i = 0; i < lhs.GetRows(); ++i)
397 {
398 for (unsigned int j = 0; j < lhs.GetColumns(); ++j)
399 {
400 result(i, j) = -lhs(i, j) - rhs(i, j);
401 }
402 }
403}

References ASSERTL1.

◆ SubtractNegatedLhs() [2/4]

template void Nektar::SubtractNegatedLhs ( NekVector< NekDouble > &  result,
const NekVector< NekDouble > &  lhs,
const NekVector< NekDouble > &  rhs 
)

◆ SubtractNegatedLhs() [3/4]

template void Nektar::SubtractNegatedLhs ( NekVector< NekSingle > &  result,
const NekVector< NekSingle > &  lhs,
const NekVector< NekSingle > &  rhs 
)

◆ SubtractNegatedLhs() [4/4]

template<typename ResultDataType , typename InputDataType >
void Nektar::SubtractNegatedLhs ( NekVector< ResultDataType > &  result,
const NekVector< InputDataType > &  lhs,
const NekVector< InputDataType > &  rhs 
)

Definition at line 591 of file NekVector.cpp.

594{
595 ResultDataType *r_buf = result.GetRawPtr();
596 typename std::add_const<InputDataType>::type *lhs_buf = lhs.GetRawPtr();
597 typename std::add_const<InputDataType>::type *rhs_buf = rhs.GetRawPtr();
598 const unsigned int ldim = lhs.GetDimension();
599 for (int i = 0; i < ldim; ++i)
600 {
601 r_buf[i] = -lhs_buf[i] - rhs_buf[i];
602 }
603}

References Nektar::NekVector< DataType >::GetDimension(), and Nektar::NekVector< DataType >::GetRawPtr().

◆ Transpose() [1/7]

template<typename DataType >
NekMatrix< DataType, ScaledMatrixTag > Nektar::Transpose ( NekMatrix< DataType, ScaledMatrixTag > &  rhs)

Definition at line 221 of file ScaledMatrix.cpp.

223{
225 result.Transpose();
226 return result;
227}

◆ Transpose() [2/7]

template<typename DataType >
NekMatrix< DataType, StandardMatrixTag > Nektar::Transpose ( NekMatrix< DataType, StandardMatrixTag > &  rhs)

◆ Transpose() [3/7]

template<typename InnerMatrixType >
NekMatrix< InnerMatrixType, BlockMatrixTag > Nektar::Transpose ( NekMatrix< InnerMatrixType, BlockMatrixTag > &  rhs)

◆ Transpose() [4/7]

template NekMatrix< NekDouble, StandardMatrixTag > Nektar::Transpose ( NekMatrix< NekDouble, StandardMatrixTag > &  rhs)

◆ Transpose() [5/7]

template NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag > Nektar::Transpose ( NekMatrix< NekMatrix< NekDouble, StandardMatrixTag >, ScaledMatrixTag > &  rhs)

◆ Transpose() [6/7]

template NekMatrix< NekMatrix< NekSingle, StandardMatrixTag >, ScaledMatrixTag > Nektar::Transpose ( NekMatrix< NekMatrix< NekSingle, StandardMatrixTag >, ScaledMatrixTag > &  rhs)

◆ Transpose() [7/7]

template NekMatrix< NekSingle, StandardMatrixTag > Nektar::Transpose ( NekMatrix< NekSingle, StandardMatrixTag > &  rhs)

Variable Documentation

◆ EigenvaluesAnaMeshesAB2

NekDouble Nektar::EigenvaluesAnaMeshesAB2[6][14]
static
Initial value:
= {
{18.849560, 37.699110, 62.254810, 92.114370, 127.199300, 167.209300,
212.189900, 261.852900, 316.311600, 375.280200, 438.911800, 506.922500,
579.489600, 656.332100},
{625.358147, 1196.328877, 1817.986152, 2475.195638, 3162.726621,
3867.689152, 4595.324620, 5340.967597, 6188.286000, 7399.972000,
8708.072000, 10111.160000, 11608.000000, 13197.470000},
{705.738221, 1268.022370, 1883.167893, 2533.621042, 3215.460527,
3915.574276, 4638.993612, 5380.985954, 6153.131100, 6914.337599,
7721.969961, 8529.801758, 9326.138300, 10138.712574},
{733.261678, 1293.053007, 1905.511959, 2553.681869, 3233.562783,
3932.056639, 4654.037626, 5394.854534, 6165.912400, 6926.174929,
7732.912435, 8509.531270, 9335.504451, 10147.409120},
{747.053764, 1305.602041, 1916.689465, 2563.704820, 3242.557000,
3940.217950, 4661.410438, 5401.601883, 6172.029656, 6931.769221,
7737.958233, 8514.117977, 9339.576627, 10151.066350},
{755.354971, 1313.162315, 1923.399136, 2569.711788, 3247.904628,
3945.042610, 4665.705043, 5405.487354, 6175.462753, 6934.840253,
7740.605266, 8518.215978, 9343.872193, 10156.126788}}

Definition at line 77 of file CFLtester.h.

◆ EigenvaluesAnaMeshesRK2

NekDouble Nektar::EigenvaluesAnaMeshesRK2[6][14]
static
Initial value:
= {
{18.849560, 37.699110, 62.254810, 92.114370, 127.199300, 167.209300,
212.189900, 261.852900, 316.311600, 375.280200, 438.911800, 506.922500,
579.489600, 656.332100},
{557.050244, 1050.871071, 1626.248117, 2260.761693, 2948.760275,
3677.949231, 4461.704082, 5269.668301, 6188.286000, 7399.972000,
8708.072000, 10111.160000, 11608.000000, 13197.470000},
{628.920938, 1115.037602, 1684.555318, 2314.125522, 2997.926601,
3723.485221, 4504.103288, 5309.152432, 6144.425035, 6997.224333,
7899.393530, 8799.536577, 9741.728144, 10730.151339},
{653.448558, 1137.048335, 1704.542817, 2332.448417, 3014.804194,
3739.158997, 4518.709861, 5322.835874, 6157.188251, 7009.203565,
7910.587422, 8810.047856, 9751.511668, 10739.355196},
{665.739421, 1148.083349, 1714.541462, 2341.603048, 3023.189930,
3746.919933, 4525.868290, 5329.493149, 6163.296851, 7014.864920,
7915.749155, 8814.796544, 9755.765307, 10668.230508},
{673.137069, 1154.731489, 1720.543482, 2347.089614, 3028.175778,
3751.507906, 4508.994826, 5306.299694, 6166.725091, 7017.972766,
7918.457008, 8818.796544, 9759.765307, 10672.230508}}

Definition at line 97 of file CFLtester.h.

◆ EigenvaluesAnaMeshesRK4

NekDouble Nektar::EigenvaluesAnaMeshesRK4[6][14]
static
Initial value:
= {
{18.849560, 37.699110, 62.254810, 92.114370, 127.199300, 167.209300,
212.189900, 261.852900, 316.311600, 375.280200, 438.911800, 506.922500,
579.489600, 656.332100},
{606.168101, 1187.787270, 1793.615712, 2391.865039, 2950.786843,
3487.596192, 4060.011000, 5074.723000, 6188.286000, 7399.972000,
8708.072000, 10111.160000, 11608.000000, 13197.470000},
{684.081594, 1260.315774, 1857.923680, 2448.327633, 2999.987783,
3530.775456, 4073.368829, 4591.645387, 5121.018725, 5647.554500,
6330.380000, 7341.464000, 8418.710000, 9561.240000},
{710.760453, 1285.192482, 1879.968339, 2467.708932, 3016.876152,
3545.638033, 4086.578922, 4603.479913, 5131.656118, 5657.223101,
6197.802683, 7022.172000, 8034.773000, 9107.511000},
{724.129308, 1297.665239, 1890.995890, 2477.394447, 3025.267650,
3552.997300, 4093.052410, 4609.237151, 5136.747279, 5661.792457,
6397.687000, 7383.760000, 8431.678000, 9540.598000},
{732.175780, 1305.179484, 1897.615616, 2483.199183, 3030.256925,
3557.347822, 4096.823380, 4612.552660, 5139.604517, 5664.300842,
6771.812000, 7388.760000, 8436.678000, 9546.598000}}

Definition at line 117 of file CFLtester.h.

◆ EigenvaluesRegMeshes

NekDouble Nektar::EigenvaluesRegMeshes[10][14]
static

Definition at line 45 of file CFLtester.h.

◆ FlagTypeMap

const char* const Nektar::FlagTypeMap[] = {"UseGlobal"}

String map for FlagType enumeration.

Definition at line 95 of file NektarUnivTypeDefs.hpp.

◆ InitWaveTypeMap

const char* const Nektar::InitWaveTypeMap[]
Initial value:
= {
"Left", "BothEnd", "Center", "LeftBottomCorner", "Point", "SpiralDock",
}

Definition at line 74 of file MMFDiffusion.h.

Referenced by Nektar::MMFDiffusion::v_InitObject().

◆ kAdvectionFormStr

const std::string Nektar::kAdvectionFormStr[]
Initial value:
= {"NoType",
"Convective",
"NonConservative",
"Linearised",
"Adjoint",
"SkewSymmetric"
"NoAdvection"}

Definition at line 105 of file IncNavierStokes.h.

◆ kEquationTypeStr

const std::string Nektar::kEquationTypeStr[]
Initial value:
= {
"NoType",
"SteadyStokes",
"SteadyOseen",
"SteadyLinearisedNS",
"UnsteadyStokes",
"UnsteadyLinearisedNS",
"UnsteadyNavierStokes",
"SteadyNavierStokes",
}

Definition at line 81 of file IncNavierStokes.h.

Referenced by Nektar::IncNavierStokes::v_InitObject().

◆ NEKTAR_ALL_MATRIX_TYPES_SINGLE

SNekMat Nektar::NEKTAR_ALL_MATRIX_TYPES_SINGLE

Definition at line 61 of file MatrixOperations.cpp.

◆ NEKTAR_BLOCK_MATRIX_TYPES_SINGLE

Nektar::NEKTAR_BLOCK_MATRIX_TYPES_SINGLE

Definition at line 611 of file MatrixVectorMultiplication.cpp.

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX

SNekMat Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX(SubtractEqualNegatedLhs, NEKTAR_ALL_MATRIX_TYPES,(1,(void)),(1,(DNekMat &)),(0,())) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_SINGLE_MATRIX(SubtractEqualNegatedLhs ( AddEqualNegatedLhs  ,
NEKTAR_ALL_MATRIX_TYPES  ,
(1,(void))  ,
(1,(DNekMat &))  ,
(0,())   
)

◆ NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES

SNekMat Nektar::NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES(SubtractNegatedLhs, NEKTAR_ALL_MATRIX_TYPES, NEKTAR_ALL_MATRIX_TYPES,(1,(void)),(1,(DNekMat &)),(0,())) NEKTAR_GENERATE_EXPLICIT_FUNCTION_INSTANTIATION_TWO_MATRICES(SubtractNegatedLhs ( AddNegatedLhs  ,
NEKTAR_ALL_MATRIX_TYPES  ,
NEKTAR_ALL_MATRIX_TYPES  ,
(1,(void))  ,
(1,(DNekMat &))  ,
(0,())   
)

◆ NEKTAR_STANDARD_AND_SCALED_MATRICES_SINGLE

Nektar::NEKTAR_STANDARD_AND_SCALED_MATRICES_SINGLE

Definition at line 589 of file MatrixVectorMultiplication.cpp.

◆ NekVector< NekSingle >

Definition at line 627 of file MatrixVectorMultiplication.cpp.

◆ NistSpBlasDescra

const int Nektar::NistSpBlasDescra[5][9]
static

Definition at line 44 of file NistSparseDescriptors.hpp.

◆ NullArrayDNekBlkMatSharedPtr

Array<OneD, DNekBlkMatSharedPtr> Nektar::NullArrayDNekBlkMatSharedPtr
static

Definition at line 93 of file NekTypeDefs.hpp.

◆ NullArraySNekBlkMatSharedPtr

Array<OneD, SNekBlkMatSharedPtr> Nektar::NullArraySNekBlkMatSharedPtr
static

Definition at line 134 of file NekTypeDefs.hpp.

◆ NullDNekMatSharedPtr

DNekMatSharedPtr Nektar::NullDNekMatSharedPtr
static

◆ NullDNekScalBlkMatSharedPtr

DNekScalBlkMatSharedPtr Nektar::NullDNekScalBlkMatSharedPtr
static

◆ NullDNekScalMatSharedPtr

DNekScalMatSharedPtr Nektar::NullDNekScalMatSharedPtr
static

Definition at line 84 of file NekTypeDefs.hpp.

Referenced by Nektar::LocalRegions::Expansion::v_GetLocMatrix().

◆ NullInt1DArray

Array<OneD, int> Nektar::NullInt1DArray
static

◆ NullNekDouble1DArray

Array<OneD, NekDouble> Nektar::NullNekDouble1DArray
static

Definition at line 888 of file SharedArray.hpp.

Referenced by Nektar::SolverUtils::DiffusionIP::AddSecondDerivToTrace(), Nektar::MultiRegions::ExpList::AddTraceJacToElmtJac(), Nektar::VelocityCorrectionScheme::AppendSVVFactors(), Nektar::MultiRegions::GJPStabilisation::Apply(), Nektar::Collections::Collection::ApplyOperator(), Nektar::CoupledAssemblyMap::CoupledAssemblyMap(), Nektar::UnsteadyAdvection::DoOdeProjection(), Nektar::VariableConverter::GetAv(), Nektar::VariableConverter::GetAvTrace(), Nektar::VariableConverter::GetElmtMinHP(), Nektar::SolverUtils::FilterAeroForces::GetForces(), Nektar::StdRegions::StdExpansion::H1(), Nektar::SolverUtils::EquationSystem::L2Error(), Nektar::MultiRegions::ExpList::Linf(), Nektar::StdRegions::StdExpansion::Linf(), Nektar::CFSImplicit::NumCalcRiemFluxJac(), Nektar::CFSImplicit::PreconCoeff(), Nektar::VariableConverter::SetAv(), Nektar::VariableConverter::SetElmtMinHP(), Nektar::VelocityCorrectionScheme::SetUpSVV(), Nektar::LocalRegions::Expansion::StdDerivBaseOnTraceMat(), Nektar::SolverUtils::ForcingMovingReferenceFrame::Update(), Nektar::SolverUtils::DiffusionIP::v_DiffuseCalcDerivative(), Nektar::MultiRegions::PreconditionerLinear::v_DoPreconditioner(), Nektar::MultiRegions::PreconditionerLinear::v_DoPreconditionerWithNonVertOutput(), Nektar::VelocityCorrectionScheme::v_GenerateSummary(), Nektar::VCSImplicit::v_GenerateSummary(), Nektar::LocalRegions::Expansion2D::v_GenMatrix(), Nektar::LocalRegions::Expansion3D::v_GenMatrix(), Nektar::MultiRegions::DisContField::v_GetLocTraceFromTracePts(), Nektar::LocalRegions::Expansion::v_GetPhysNormals(), Nektar::LocalRegions::SegExp::v_GetPhysNormals(), Nektar::MultiRegions::ContField::v_HelmSolve(), Nektar::MultiRegions::ExpList3DHomogeneous1D::v_L2(), Nektar::MultiRegions::ExpList::v_L2(), Nektar::MultiRegions::ContField::v_LinearAdvectionDiffusionReactionSolve(), Nektar::MultiRegions::ExpListHomogeneous1D::v_PhysDeriv(), Nektar::StdRegions::StdPrismExp::v_PhysDeriv(), Nektar::StdRegions::StdTetExp::v_PhysDeriv(), Nektar::LocalRegions::HexExp::v_PhysDeriv(), Nektar::LocalRegions::QuadExp::v_PhysDeriv(), Nektar::LocalRegions::SegExp::v_PhysDeriv(), Nektar::LocalRegions::TriExp::v_PhysDeriv(), Nektar::StdRegions::StdHexExp::v_PhysDeriv(), Nektar::StdRegions::StdPyrExp::v_PhysDeriv(), Nektar::StdRegions::StdQuadExp::v_PhysDeriv(), Nektar::StdRegions::StdTriExp::v_PhysDeriv(), Nektar::FieldUtils::ProcessEquiSpacedOutput::v_Process(), Nektar::FieldUtils::ProcessInterpField::v_Process(), Nektar::VCSImplicit::v_SolvePressure(), Nektar::VCSWeakPressure::v_SolvePressure(), Nektar::CFSImplicit::v_UpdateTimeStepCheck(), and Nektar::VariableConverter::VariableConverter().

◆ NullNekDoubleArrayOfArray

Array<OneD, Array<OneD, NekDouble> > Nektar::NullNekDoubleArrayOfArray
static

◆ NullNekDoubleTensorOfArray3D

Array<OneD, Array<OneD, Array<OneD, NekDouble> > > Nektar::NullNekDoubleTensorOfArray3D
static

◆ NullPulseWaveBoundarySharedPtr

PulseWaveBoundarySharedPtr Nektar::NullPulseWaveBoundarySharedPtr
static

Definition at line 52 of file PulseWaveBoundary.h.

◆ NullPulseWavePressureAreaSharedPtr

PulseWavePressureAreaSharedPtr Nektar::NullPulseWavePressureAreaSharedPtr
static

Definition at line 51 of file PulseWavePressureArea.h.

◆ NullSNekMatSharedPtr

SNekMatSharedPtr Nektar::NullSNekMatSharedPtr
static

Definition at line 130 of file NekTypeDefs.hpp.

◆ NullSNekScalBlkMatSharedPtr

SNekScalBlkMatSharedPtr Nektar::NullSNekScalBlkMatSharedPtr
static

Definition at line 132 of file NekTypeDefs.hpp.

◆ NullSNekScalMatSharedPtr

SNekScalMatSharedPtr Nektar::NullSNekScalMatSharedPtr
static

Definition at line 131 of file NekTypeDefs.hpp.

◆ ProblemTypeMap

const char* const Nektar::ProblemTypeMap[] = {"General", "SolitaryWave"}

Definition at line 51 of file NonlinearPeregrine.h.

Referenced by Nektar::NonlinearPeregrine::v_InitObject().

◆ TestTypeMap

const char *const Nektar::TestTypeMap
Initial value:
= {
"TestPlane", "TestCube", "TestLinearSphere", "TestNonlinearSphere",
"FHNStandard", "FHNRogers", "FHNAlievPanf",
}

Definition at line 58 of file MMFDiffusion.h.

Referenced by Nektar::MMFAdvection::v_GenerateSummary(), Nektar::MMFDiffusion::v_GenerateSummary(), Nektar::MMFSWE::v_GenerateSummary(), Nektar::MMFDiffusion::v_InitObject(), Nektar::MMFAdvection::v_InitObject(), and Nektar::MMFSWE::v_InitObject().

◆ UpwindTypeMapPulse

const char* const Nektar::UpwindTypeMapPulse[]
Initial value:
= {
"NoSetPulse",
"UpwindPulse",
}

Definition at line 54 of file PulseWaveSystem.h.

Referenced by Nektar::PulseWaveSystem::v_InitObject().

◆ void

SNekMat Nektar::void

◆ VWIIterationTypeMap

const std::string Nektar::VWIIterationTypeMap[]
Initial value:
= {
"FixedAlpha", "FixedWaveForcing", "FixedAlphaWaveForcing",
"FixedWaveForcingWithSubIterationOnAlpha"}

Definition at line 62 of file VortexWaveInteraction.h.

Referenced by Nektar::VortexWaveInteraction::VortexWaveInteraction().