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 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 Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool UseNumMode=false) |
void | TransposeZtoXY (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool UseNumMode=false) |
void | TransposeXtoYZ (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool UseNumMode=false) |
void | TransposeYZtoX (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool UseNumMode=false) |
void | TransposeYZtoZY (const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &outarray, bool UseNumMode=false) |
void | TransposeZYtoYZ (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 69 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 51 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 115 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 146 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 | ) |
Definition at line 174 of file Transposition.cpp.
References m_K.
Definition at line 179 of file Transposition.cpp.
References m_K.
unsigned int Nektar::LibUtilities::Transposition::GetPlaneID | ( | int | i | ) |
Definition at line 184 of file Transposition.cpp.
References m_planes_IDs.
Definition at line 189 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 194 of file Transposition.cpp.
References m_strip_ID.
void Nektar::LibUtilities::Transposition::Transpose | ( | 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 203 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 473 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 264 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 559 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 367 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 588 of file Transposition.cpp.
References ASSERTL0, m_num_homogeneous_points, m_num_processes, and Vmath::Vcopy().
Referenced by Transpose().
|
protected |
Definition at line 107 of file Transposition.h.
Referenced by TransposeXYtoZ(), TransposeZtoXY(), and Transposition().
Fourier wave numbers associated with the planes.
Definition at line 157 of file Transposition.h.
Referenced by GetK(), GetKs(), and Transposition().
Total number of homogeneous coefficients.
Definition at line 143 of file Transposition.h.
Referenced by TransposeXtoYZ(), TransposeXYtoZ(), TransposeYZtoX(), TransposeZtoXY(), and Transposition().
|
private |
Definition at line 134 of file Transposition.h.
Referenced by Transposition().
Total homogeneous points per direction.
Definition at line 140 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 137 of file Transposition.h.
Referenced by TransposeXYtoZ(), TransposeZtoXY(), and Transposition().
Definition at line 145 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 163 of file Transposition.h.
Referenced by TransposeXYtoZ(), and TransposeZtoXY().
IDs of the planes on the processes.
Definition at line 151 of file Transposition.h.
Referenced by GetPlaneID(), GetPlanesIDs(), and Transposition().
|
private |
MPI_Alltoallv map containing size of send/recv buffer.
Definition at line 160 of file Transposition.h.
Referenced by TransposeXYtoZ(), and TransposeZtoXY().
|
private |
IDs of the strips on the processes.
Definition at line 154 of file Transposition.h.
Referenced by GetStripID(), and Transposition().