Nektar++
|
#include <DriverModifiedArnoldi.h>
Static Public Member Functions | |
static DriverSharedPtr | create (const LibUtilities::SessionReaderSharedPtr &pSession) |
Creates an instance of this class. |
Static Public Attributes | |
static std::string | className = GetDriverFactory().RegisterCreatorFunction("ModifiedArnoldi", DriverModifiedArnoldi::create) |
Name of the class. |
Protected Member Functions | |
DriverModifiedArnoldi (const LibUtilities::SessionReaderSharedPtr pSession) | |
Constructor. | |
virtual | ~DriverModifiedArnoldi () |
Destructor. | |
virtual void | v_InitObject (ostream &out=cout) |
Virtual function for initialisation implementation. | |
virtual void | v_Execute (ostream &out=cout) |
Virtual function for solve implementation. | |
Protected Member Functions inherited from Nektar::SolverUtils::DriverArnoldi | |
DriverArnoldi (const LibUtilities::SessionReaderSharedPtr pSession) | |
Constructor. | |
virtual | ~DriverArnoldi () |
Destructor. | |
void | CopyArnoldiArrayToField (Array< OneD, NekDouble > &array) |
Copy Arnoldi storage to fields. | |
void | CopyFieldToArnoldiArray (Array< OneD, NekDouble > &array) |
Copy fields to Arnoldi storage. | |
void | CopyFwdToAdj () |
Copy the forward field to the adjoint system in transient growth calculations. | |
void | WriteFld (std::string file, std::vector< Array< OneD, NekDouble > > coeffs) |
void | WriteFld (std::string file, Array< OneD, NekDouble > coeffs) |
void | WriteEvs (ostream &evlout, const int k, const NekDouble real, const NekDouble imag, NekDouble resid=NekConstants::kNekUnsetDouble) |
virtual Array< OneD, NekDouble > | v_GetRealEvl (void) |
virtual Array< OneD, NekDouble > | v_GetImagEvl (void) |
Protected Member Functions inherited from Nektar::SolverUtils::Driver | |
Driver (const LibUtilities::SessionReaderSharedPtr pSession) | |
Initialises EquationSystem class members. |
Private Member Functions | |
void | EV_update (Array< OneD, NekDouble > &src, Array< OneD, NekDouble > &tgt) |
Generates a new vector in the sequence by applying the linear operator. | |
void | EV_small (Array< OneD, Array< OneD, NekDouble > > &Kseq, const int ntot, const Array< OneD, NekDouble > &alpha, const int kdim, Array< OneD, NekDouble > &zvec, Array< OneD, NekDouble > &wr, Array< OneD, NekDouble > &wi, NekDouble &resnorm) |
Generates the upper Hessenberg matrix H and computes its eigenvalues. | |
int | EV_test (const int itrn, const int kdim, Array< OneD, NekDouble > &zvec, Array< OneD, NekDouble > &wr, Array< OneD, NekDouble > &wi, const NekDouble resnorm, const int nvec, ofstream &evlout, NekDouble &resid0) |
Tests for convergence of eigenvalues of H. | |
void | EV_sort (Array< OneD, NekDouble > &evec, Array< OneD, NekDouble > &wr, Array< OneD, NekDouble > &wi, Array< OneD, NekDouble > &test, const int dim) |
Sorts a sequence of eigenvectors/eigenvalues by magnitude. | |
void | EV_post (Array< OneD, Array< OneD, NekDouble > > &Tseq, Array< OneD, Array< OneD, NekDouble > > &Kseq, const int ntot, const int kdim, const int nvec, Array< OneD, NekDouble > &zvec, Array< OneD, NekDouble > &wr, Array< OneD, NekDouble > &wi, const int icon) |
void | EV_big (Array< OneD, Array< OneD, NekDouble > > &bvecs, Array< OneD, Array< OneD, NekDouble > > &evecs, const int ntot, const int kdim, const int nvec, Array< OneD, NekDouble > &zvec, Array< OneD, NekDouble > &wr, Array< OneD, NekDouble > &wi) |
Static Private Attributes | |
static std::string | driverLookupId = LibUtilities::SessionReader::RegisterEnumValue("Driver","ModifiedArnoldi",0) |
Friends | |
class | MemoryManager< DriverModifiedArnoldi > |
Additional Inherited Members | |
Public Member Functions inherited from Nektar::SolverUtils::DriverArnoldi | |
SOLVER_UTILS_EXPORT void | ArnoldiSummary (std::ostream &out) |
Protected Attributes inherited from Nektar::SolverUtils::DriverArnoldi | |
int | m_kdim |
int | m_nvec |
Dimension of Krylov subspace. | |
int | m_nits |
Number of vectors to test. | |
NekDouble | m_evtol |
Maxmum number of iterations. | |
NekDouble | m_period |
Tolerance of iteratiosn. | |
bool | m_timeSteppingAlgorithm |
Period of time stepping algorithm. | |
int | m_infosteps |
underlying operator is time stepping | |
int | m_nfields |
interval to dump information if required. | |
NekDouble | m_realShift |
NekDouble | m_imagShift |
Array< OneD, NekDouble > | m_real_evl |
Array< OneD, NekDouble > | m_imag_evl |
Static Protected Attributes inherited from Nektar::SolverUtils::Driver | |
static std::string | evolutionOperatorLookupIds [] |
static std::string | evolutionOperatorDef = LibUtilities::SessionReader::RegisterDefaultSolverInfo("EvolutionOperator","Nonlinear") |
static std::string | driverDefault = LibUtilities::SessionReader::RegisterDefaultSolverInfo("Driver","Standard") |
Definition at line 46 of file DriverModifiedArnoldi.h.
|
protected |
|
protectedvirtual |
|
inlinestatic |
Creates an instance of this class.
Definition at line 52 of file DriverModifiedArnoldi.h.
|
private |
Definition at line 476 of file DriverModifiedArnoldi.cpp.
References Vmath::Dot(), Nektar::Dot(), Vmath::Smul(), Vmath::Svtvp(), and Vmath::Zero().
Referenced by EV_post().
|
private |
Definition at line 430 of file DriverModifiedArnoldi.cpp.
References ASSERTL0, EV_big(), Nektar::SolverUtils::Driver::m_equ, Nektar::SolverUtils::Driver::m_session, and Nektar::SolverUtils::DriverArnoldi::WriteFld().
Referenced by v_Execute().
|
private |
Generates the upper Hessenberg matrix H and computes its eigenvalues.
Definition at line 284 of file DriverModifiedArnoldi.cpp.
References ASSERTL0, Vmath::Dot(), Nektar::Dot(), Vmath::Smul(), and Vmath::Svtvp().
Referenced by v_Execute().
|
private |
Sorts a sequence of eigenvectors/eigenvalues by magnitude.
Definition at line 395 of file DriverModifiedArnoldi.cpp.
References Vmath::Vcopy().
Referenced by EV_test().
|
private |
Tests for convergence of eigenvalues of H.
Definition at line 341 of file DriverModifiedArnoldi.cpp.
References Vmath::Dot(), EV_sort(), Nektar::SolverUtils::DriverArnoldi::m_evtol, Nektar::SolverUtils::DriverArnoldi::m_timeSteppingAlgorithm, and Nektar::SolverUtils::DriverArnoldi::WriteEvs().
Referenced by v_Execute().
|
private |
Generates a new vector in the sequence by applying the linear operator.
Definition at line 251 of file DriverModifiedArnoldi.cpp.
References Nektar::SolverUtils::DriverArnoldi::CopyArnoldiArrayToField(), Nektar::SolverUtils::DriverArnoldi::CopyFieldToArnoldiArray(), Nektar::SolverUtils::DriverArnoldi::CopyFwdToAdj(), Nektar::SolverUtils::eTransientGrowth, Nektar::SolverUtils::Driver::m_equ, and Nektar::SolverUtils::Driver::m_EvolutionOperator.
Referenced by v_Execute().
|
protectedvirtual |
Virtual function for solve implementation.
Implements Nektar::SolverUtils::Driver.
Definition at line 91 of file DriverModifiedArnoldi.cpp.
References Nektar::SolverUtils::DriverArnoldi::CopyFieldToArnoldiArray(), Vmath::Ddot(), Vmath::Dot(), EV_post(), EV_small(), EV_test(), EV_update(), Vmath::FillWhiteNoise(), Nektar::SolverUtils::Driver::m_comm, Nektar::SolverUtils::Driver::m_equ, Nektar::SolverUtils::DriverArnoldi::m_imag_evl, Nektar::SolverUtils::DriverArnoldi::m_kdim, Nektar::SolverUtils::DriverArnoldi::m_nfields, Nektar::SolverUtils::DriverArnoldi::m_nits, Nektar::SolverUtils::DriverArnoldi::m_nvec, Nektar::SolverUtils::DriverArnoldi::m_real_evl, Nektar::SolverUtils::Driver::m_session, Nektar::LibUtilities::ReduceSum, Vmath::Smul(), and Vmath::Vcopy().
|
protectedvirtual |
Virtual function for initialisation implementation.
Reimplemented from Nektar::SolverUtils::DriverArnoldi.
Definition at line 69 of file DriverModifiedArnoldi.cpp.
References Nektar::SolverUtils::DriverArnoldi::ArnoldiSummary(), Nektar::SolverUtils::Driver::m_equ, and Nektar::SolverUtils::Driver::m_nequ.
|
friend |
Definition at line 49 of file DriverModifiedArnoldi.h.
|
static |
Name of the class.
Definition at line 59 of file DriverModifiedArnoldi.h.
|
staticprivate |
Definition at line 128 of file DriverModifiedArnoldi.h.