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. | |
Array< OneD, int > | m_num_homogeneous_points |
Total homogeneous points per direction. | |
Array< OneD, int > | m_num_homogeneous_coeffs |
Total number of homogeneous coefficients. | |
Array< OneD, int > | m_num_processes |
int | m_rank_id |
Rank of process. | |
Array< OneD, unsigned int > | m_planes_IDs |
IDs of the planes on the processes. | |
Array< OneD, unsigned int > | m_K |
Fourier wave numbers associated with the planes. | |
Array< OneD, int > | m_SizeMap |
MPI_Alltoallv map containing size of send/recv buffer. | |
Array< OneD, int > | m_OffsetMap |
MPI_Alltoallv offset map of send/recv buffer in global vector. |
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 | ) |
unsigned int Nektar::LibUtilities::Transposition::GetPlaneID | ( | int | i | ) |
Definition at line 192 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().
|
private |
Fourier wave numbers associated with the planes.
Definition at line 156 of file Transposition.h.
Referenced by GetK(), GetKs(), and Transposition().
|
private |
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().
|
private |
Total homogeneous points per direction.
Definition at line 142 of file Transposition.h.
Referenced by TransposeXtoYZ(), TransposeXYtoZ(), TransposeYZtoX(), TransposeYZtoZY(), TransposeZtoXY(), TransposeZYtoYZ(), and Transposition().
|
private |
Number of homogeneous points on each processor per direction.
Definition at line 139 of file Transposition.h.
Referenced by TransposeXYtoZ(), TransposeZtoXY(), and Transposition().
|
private |
Definition at line 147 of file Transposition.h.
Referenced by TransposeXtoYZ(), TransposeXYtoZ(), TransposeYZtoX(), TransposeYZtoZY(), TransposeZtoXY(), TransposeZYtoYZ(), and Transposition().
|
private |
MPI_Alltoallv offset map of send/recv buffer in global vector.
Definition at line 162 of file Transposition.h.
Referenced by TransposeXYtoZ(), and TransposeZtoXY().
|
private |
IDs of the planes on the processes.
Definition at line 153 of file Transposition.h.
Referenced by GetPlaneID(), GetPlanesIDs(), and Transposition().
|
private |
|
private |
MPI_Alltoallv map containing size of send/recv buffer.
Definition at line 159 of file Transposition.h.
Referenced by TransposeXYtoZ(), and TransposeZtoXY().