Nektar++
|
#include <Transposition.h>
Public Member Functions | |
Transposition (const LibUtilities::BasisKey &HomoBasis0, LibUtilities::CommSharedPtr hcomm) | |
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) |
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... | |
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 | hcomm | ||
) |
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, and m_rank_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 148 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 182 of file Transposition.cpp.
References m_K.
Definition at line 187 of file Transposition.cpp.
References m_K.
unsigned int Nektar::LibUtilities::Transposition::GetPlaneID | ( | int | i | ) |
Definition at line 192 of file Transposition.cpp.
References m_planes_IDs.
Definition at line 197 of file Transposition.cpp.
References m_planes_IDs.
NekDouble Nektar::LibUtilities::Transposition::GetSpecVanVisc | ( | const int | k | ) |
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 207 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 494 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 270 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 541 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 588 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 380 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 622 of file Transposition.cpp.
References ASSERTL0, m_num_homogeneous_points, m_num_processes, and Vmath::Vcopy().
Referenced by Transpose().
|
protected |
Definition at line 102 of file Transposition.h.
Referenced by TransposeXYtoZ(), TransposeZtoXY(), and Transposition().
Fourier wave numbers associated with the planes.
Definition at line 156 of file Transposition.h.
Referenced by GetK(), GetKs(), and Transposition().
Total number of homogeneous coefficients.
Definition at line 145 of file Transposition.h.
Referenced by TransposeXtoYZ(), TransposeXYtoZ(), TransposeYZtoX(), TransposeZtoXY(), and Transposition().
|
private |
Definition at line 136 of file Transposition.h.
Referenced by Transposition().
Total homogeneous points per direction.
Definition at line 142 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 139 of file Transposition.h.
Referenced by TransposeXYtoZ(), TransposeZtoXY(), and Transposition().
Definition at line 147 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 162 of file Transposition.h.
Referenced by TransposeXYtoZ(), and TransposeZtoXY().
IDs of the planes on the processes.
Definition at line 153 of file Transposition.h.
Referenced by GetPlaneID(), GetPlanesIDs(), and Transposition().
|
private |
MPI_Alltoallv map containing size of send/recv buffer.
Definition at line 159 of file Transposition.h.
Referenced by TransposeXYtoZ(), and TransposeZtoXY().