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 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 52 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 122 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 160 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 194 of file Transposition.cpp.
References m_K.
Definition at line 199 of file Transposition.cpp.
References m_K.
unsigned int Nektar::LibUtilities::Transposition::GetPlaneID | ( | int | i | ) |
Definition at line 204 of file Transposition.cpp.
References m_planes_IDs.
Definition at line 209 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 214 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 223 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 510 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 286 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 557 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 604 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 396 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 638 of file Transposition.cpp.
References ASSERTL0, m_num_homogeneous_points, m_num_processes, and Vmath::Vcopy().
Referenced by Transpose().
|
protected |
Definition at line 105 of file Transposition.h.
Referenced by TransposeXYtoZ(), TransposeZtoXY(), and Transposition().
Fourier wave numbers associated with the planes.
Definition at line 162 of file Transposition.h.
Referenced by GetK(), GetKs(), and Transposition().
Total number of homogeneous coefficients.
Definition at line 148 of file Transposition.h.
Referenced by TransposeXtoYZ(), TransposeXYtoZ(), TransposeYZtoX(), TransposeZtoXY(), and Transposition().
|
private |
Definition at line 139 of file Transposition.h.
Referenced by Transposition().
Total homogeneous points per direction.
Definition at line 145 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 142 of file Transposition.h.
Referenced by TransposeXYtoZ(), TransposeZtoXY(), and Transposition().
Definition at line 150 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 168 of file Transposition.h.
Referenced by TransposeXYtoZ(), and TransposeZtoXY().
IDs of the planes on the processes.
Definition at line 156 of file Transposition.h.
Referenced by GetPlaneID(), GetPlanesIDs(), and Transposition().
|
private |
MPI_Alltoallv map containing size of send/recv buffer.
Definition at line 165 of file Transposition.h.
Referenced by TransposeXYtoZ(), and TransposeZtoXY().
|
private |
IDs of the strips on the processes.
Definition at line 159 of file Transposition.h.
Referenced by GetStripID(), and Transposition().