Nektar++
|
#include <Transposition.h>
Public Member Functions | |
Transposition (const LibUtilities::BasisKey &HomoBasis0, LibUtilities::CommSharedPtr hcomm0, LibUtilities::CommSharedPtr hcomm1) | |
Transposition (const LibUtilities::BasisKey &HomoBasis0, const LibUtilities::BasisKey &HomoBasis1, LibUtilities::CommSharedPtr hcomm) | |
Transposition (const LibUtilities::BasisKey &HomoBasis0, const LibUtilities::BasisKey &HomoBasis1, const LibUtilities::BasisKey &HomoBasis2, LibUtilities::CommSharedPtr hcomm) | |
~Transposition () | |
unsigned int | GetK (int i) |
Array< OneD, unsigned int > | GetKs (void) |
unsigned int | GetPlaneID (int i) |
unsigned int | GetStripID (void) |
Array< OneD, unsigned int > | GetPlanesIDs (void) |
void | Transpose (const int npts, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool UseNumMode=false, TranspositionDir dir=eNoTrans) |
void | SetSpecVanVisc (Array< OneD, NekDouble > visc) |
NekDouble | GetSpecVanVisc (const int k) |
Protected Attributes | |
CommSharedPtr | m_hcomm |
Private Member Functions | |
void | TransposeXYtoZ (const int npts, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool UseNumMode=false) |
void | TransposeZtoXY (const int npts, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool UseNumMode=false) |
void | TransposeXtoYZ (const int npts, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool UseNumMode=false) |
void | TransposeYZtoX (const int npts, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool UseNumMode=false) |
void | TransposeYZtoZY (const int npts, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool UseNumMode=false) |
void | TransposeZYtoYZ (const int npts, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool UseNumMode=false) |
Private Attributes | |
int | m_num_homogeneous_directions |
Array< OneD, int > | m_num_points_per_proc |
Number of homogeneous points on each processor per direction. More... | |
Array< OneD, int > | m_num_homogeneous_points |
Total homogeneous points per direction. More... | |
Array< OneD, int > | m_num_homogeneous_coeffs |
Total number of homogeneous coefficients. More... | |
Array< OneD, int > | m_num_processes |
int | m_rank_id |
Rank of process. More... | |
Array< OneD, unsigned int > | m_planes_IDs |
IDs of the planes on the processes. More... | |
unsigned int | m_strip_ID |
IDs of the strips on the processes. More... | |
Array< OneD, unsigned int > | m_K |
Fourier wave numbers associated with the planes. More... | |
Array< OneD, int > | m_SizeMap |
MPI_Alltoallv map containing size of send/recv buffer. More... | |
Array< OneD, int > | m_OffsetMap |
MPI_Alltoallv offset map of send/recv buffer in global vector. More... | |
Definition at line 63 of file Transposition.h.
Nektar::LibUtilities::Transposition::Transposition | ( | const LibUtilities::BasisKey & | HomoBasis0, |
LibUtilities::CommSharedPtr | hcomm0, | ||
LibUtilities::CommSharedPtr | hcomm1 | ||
) |
Constructor for 1D transform.
Definition at line 46 of file Transposition.cpp.
References Nektar::LibUtilities::eFourier, Nektar::LibUtilities::eFourierHalfModeIm, Nektar::LibUtilities::eFourierHalfModeRe, Nektar::LibUtilities::eFourierSingleMode, Nektar::LibUtilities::BasisKey::GetBasisType(), Nektar::LibUtilities::BasisKey::GetNumModes(), Nektar::LibUtilities::BasisKey::GetNumPoints(), m_hcomm, m_K, m_num_homogeneous_coeffs, m_num_homogeneous_directions, m_num_homogeneous_points, m_num_points_per_proc, m_num_processes, m_planes_IDs, m_rank_id, and m_strip_ID.
Nektar::LibUtilities::Transposition::Transposition | ( | const LibUtilities::BasisKey & | HomoBasis0, |
const LibUtilities::BasisKey & | HomoBasis1, | ||
LibUtilities::CommSharedPtr | hcomm | ||
) |
Constructor for 2D transform.
Definition at line 110 of file Transposition.cpp.
References Nektar::LibUtilities::BasisKey::GetNumModes(), Nektar::LibUtilities::BasisKey::GetNumPoints(), m_hcomm, m_num_homogeneous_coeffs, m_num_homogeneous_directions, m_num_homogeneous_points, m_num_points_per_proc, and m_num_processes.
Nektar::LibUtilities::Transposition::Transposition | ( | const LibUtilities::BasisKey & | HomoBasis0, |
const LibUtilities::BasisKey & | HomoBasis1, | ||
const LibUtilities::BasisKey & | HomoBasis2, | ||
LibUtilities::CommSharedPtr | hcomm | ||
) |
Constructor for 3D transform.
Definition at line 141 of file Transposition.cpp.
References ASSERTL0, m_hcomm, m_num_homogeneous_coeffs, m_num_homogeneous_directions, m_num_homogeneous_points, m_num_points_per_proc, and m_num_processes.
Nektar::LibUtilities::Transposition::~Transposition | ( | ) |
unsigned int Nektar::LibUtilities::Transposition::GetK | ( | int | i | ) |
unsigned int Nektar::LibUtilities::Transposition::GetPlaneID | ( | int | i | ) |
Definition at line 180 of file Transposition.cpp.
References m_planes_IDs.
Definition at line 185 of file Transposition.cpp.
References m_planes_IDs.
NekDouble Nektar::LibUtilities::Transposition::GetSpecVanVisc | ( | const int | k | ) |
unsigned int Nektar::LibUtilities::Transposition::GetStripID | ( | void | ) |
Definition at line 190 of file Transposition.cpp.
References m_strip_ID.
void Nektar::LibUtilities::Transposition::Transpose | ( | const int | npts, |
const Array< OneD, const NekDouble > & | inarray, | ||
Array< OneD, NekDouble > & | outarray, | ||
bool | UseNumMode = false , |
||
TranspositionDir | dir = eNoTrans |
||
) |
Main method: General transposition, the dir parameters define if 1D,2D,3D and which transposition is required at the same time
Definition at line 199 of file Transposition.cpp.
References ASSERTL0, Nektar::LibUtilities::eXtoY, Nektar::LibUtilities::eXtoYZ, Nektar::LibUtilities::eXYtoZ, Nektar::LibUtilities::eYtoZ, Nektar::LibUtilities::eYZtoX, Nektar::LibUtilities::eYZtoZY, Nektar::LibUtilities::eZtoX, Nektar::LibUtilities::eZtoXY, Nektar::LibUtilities::eZYtoYZ, TransposeXtoYZ(), TransposeXYtoZ(), TransposeYZtoX(), TransposeYZtoZY(), TransposeZtoXY(), and TransposeZYtoYZ().
|
private |
Homogeneous 2D transposition from SEM to Homogeneous(YZ) ordering.
Definition at line 472 of file Transposition.cpp.
References ASSERTL0, ASSERTL1, m_num_homogeneous_coeffs, m_num_homogeneous_points, m_num_processes, and Vmath::Vcopy().
Referenced by Transpose().
|
private |
Homogeneous 1D transposition from SEM to Homogeneous ordering.
Definition at line 261 of file Transposition.cpp.
References ASSERTL1, m_hcomm, m_num_homogeneous_coeffs, m_num_homogeneous_points, m_num_points_per_proc, m_num_processes, m_OffsetMap, m_SizeMap, and Vmath::Vcopy().
Referenced by Transpose().
|
private |
Homogeneous 2D transposition from Homogeneous (YZ) ordering to SEM.
Definition at line 516 of file Transposition.cpp.
References ASSERTL0, ASSERTL1, m_num_homogeneous_coeffs, m_num_homogeneous_points, m_num_processes, and Vmath::Vcopy().
Referenced by Transpose().
|
private |
Homogeneous 2D transposition from Y ordering to Z.
Definition at line 560 of file Transposition.cpp.
References ASSERTL0, m_num_homogeneous_points, m_num_processes, and Vmath::Vcopy().
Referenced by Transpose().
|
private |
Homogeneous 1D transposition from Homogeneous to SEM ordering.
Definition at line 365 of file Transposition.cpp.
References ASSERTL1, m_hcomm, m_num_homogeneous_coeffs, m_num_homogeneous_points, m_num_points_per_proc, m_num_processes, m_OffsetMap, m_SizeMap, and Vmath::Vcopy().
Referenced by Transpose().
|
private |
Homogeneous 2D transposition from Z ordering to Y.
Definition at line 590 of file Transposition.cpp.
References ASSERTL0, m_num_homogeneous_points, m_num_processes, and Vmath::Vcopy().
Referenced by Transpose().
|
protected |
Definition at line 101 of file Transposition.h.
Referenced by TransposeXYtoZ(), TransposeZtoXY(), and Transposition().
Fourier wave numbers associated with the planes.
Definition at line 151 of file Transposition.h.
Referenced by GetK(), GetKs(), and Transposition().
Total number of homogeneous coefficients.
Definition at line 137 of file Transposition.h.
Referenced by TransposeXtoYZ(), TransposeXYtoZ(), TransposeYZtoX(), TransposeZtoXY(), and Transposition().
|
private |
Definition at line 128 of file Transposition.h.
Referenced by Transposition().
Total homogeneous points per direction.
Definition at line 134 of file Transposition.h.
Referenced by TransposeXtoYZ(), TransposeXYtoZ(), TransposeYZtoX(), TransposeYZtoZY(), TransposeZtoXY(), TransposeZYtoYZ(), and Transposition().
Number of homogeneous points on each processor per direction.
Definition at line 131 of file Transposition.h.
Referenced by TransposeXYtoZ(), TransposeZtoXY(), and Transposition().
Definition at line 139 of file Transposition.h.
Referenced by TransposeXtoYZ(), TransposeXYtoZ(), TransposeYZtoX(), TransposeYZtoZY(), TransposeZtoXY(), TransposeZYtoYZ(), and Transposition().
MPI_Alltoallv offset map of send/recv buffer in global vector.
Definition at line 157 of file Transposition.h.
Referenced by TransposeXYtoZ(), and TransposeZtoXY().
IDs of the planes on the processes.
Definition at line 145 of file Transposition.h.
Referenced by GetPlaneID(), GetPlanesIDs(), and Transposition().
|
private |
MPI_Alltoallv map containing size of send/recv buffer.
Definition at line 154 of file Transposition.h.
Referenced by TransposeXYtoZ(), and TransposeZtoXY().
|
private |
IDs of the strips on the processes.
Definition at line 148 of file Transposition.h.
Referenced by GetStripID(), and Transposition().