DP3
Public Types | Public Member Functions | List of all members
dp3::ddecal::IterativeDiagonalSolver< VisMatrix > Class Template Referencefinal

#include <IterativeDiagonalSolver.h>

Inheritance diagram for dp3::ddecal::IterativeDiagonalSolver< VisMatrix >:
dp3::ddecal::SolverBase

Public Types

using ChannelBlockData = typename SolveData< VisMatrix >::ChannelBlockData
 
- Public Types inherited from dp3::ddecal::SolverBase
typedef std::complex< float > Complex
 
typedef std::complex< double > DComplex
 

Public Member Functions

size_t NSolutionPolarizations () const override
 
SolveResult Solve (const SolveData< VisMatrix > &data, std::vector< std::vector< DComplex >> &solutions, double time) override
 
bool SupportsDdSolutionIntervals () const override
 
- Public Member Functions inherited from dp3::ddecal::SolverBase
 SolverBase ()
 
virtual ~SolverBase ()=default
 
void AddConstraint (std::unique_ptr< Constraint > constraint)
 
virtual std::vector< SolverBase * > ConstraintSolvers ()
 
const std::vector< std::unique_ptr< Constraint > > & GetConstraints ()
 
LLSSolverType GetLLSSolverType () const
 
bool GetPhaseOnly () const
 
void GetTimings (std::ostream &os, double duration) const
 
virtual void Initialize (size_t n_antennas, const std::vector< size_t > &n_solutions_per_direction, size_t n_channel_blocks)
 
void SetDdConstraintWeights (const std::vector< std::vector< double >> &weights)
 
void SetLLSSolverType (LLSSolverType solver_type)
 
void SetPhaseOnly (bool phase_only)
 
virtual SolveResult Solve (const DuoSolveData &data, std::vector< std::vector< DComplex >> &solutions, double time)
 
virtual SolveResult Solve (const FullSolveData &data, std::vector< std::vector< DComplex >> &solutions, double time)
 
virtual SolveResult Solve (const UniSolveData &data, std::vector< std::vector< DComplex >> &solutions, double time)
 
size_t GetMaxIterations () const
 
void SetMaxIterations (size_t max_iterations)
 
size_t GetMinIterations () const
 
void SetMinIterations (size_t min_iterations)
 
void SetAccuracy (double accuracy)
 
double GetAccuracy () const
 
void SetConstraintAccuracy (double constraint_accuracy)
 
double GetConstraintAccuracy () const
 
void SetStepSize (double step_size)
 
double GetStepSize () const
 
void SetDetectStalling (bool detect_stalling, double step_diff_sigma)
 
bool GetDetectStalling () const
 

Additional Inherited Members

- Protected Member Functions inherited from dp3::ddecal::SolverBase
bool ApplyConstraints (size_t iteration, double time, bool has_previously_converged, SolutionSpan &next_solutions) const
 
bool ApplyConstraints (size_t iteration, double time, bool has_previously_converged, SolutionTensor &next_solutions) const
 
bool AssignSolutions (std::vector< std::vector< DComplex >> &solutions, SolutionSpan &new_solutions, bool use_constraint_accuracy, double &avg_abs_diff, std::vector< double > &step_magnitudes) const
 
bool AssignSolutions (std::vector< std::vector< DComplex >> &solutions, SolutionTensor &new_solutions, bool use_constraint_accuracy, double &avg_abs_diff, std::vector< double > &step_magnitudes) const
 
std::unique_ptr< LLSSolverCreateLLSSolver (size_t m, size_t n, size_t nrhs) const
 
bool DetectStall (size_t iteration, const std::vector< double > &step_magnitudes)
 
std::unique_ptr< aocommon::RecursiveFor > MakeOptionalRecursiveFor () const
 
SolveResult MakeResult (size_t iteration, bool has_converged, bool constraints_satisfied) const
 
size_t NAntennas () const
 
size_t NChannelBlocks () const
 
size_t NDirections () const
 
size_t NSubSolutions () const
 
size_t NSubThreads () const
 
size_t NVisibilities () const
 
void PrepareConstraints ()
 
bool ReachedStoppingCriterion (size_t iteration, bool has_converged, bool constraints_satisfied, const std::vector< double > &step_magnitudes)
 
void Step (const std::vector< std::vector< DComplex >> &solutions, SolutionTensor &next_solutions) const
 
- Static Protected Member Functions inherited from dp3::ddecal::SolverBase
static void MakeSolutionsFinite1Pol (std::vector< std::vector< DComplex >> &solutions)
 
static void MakeSolutionsFinite2Pol (std::vector< std::vector< DComplex >> &solutions)
 
static void MakeSolutionsFinite4Pol (std::vector< std::vector< DComplex >> &solutions)
 

Member Typedef Documentation

◆ ChannelBlockData

template<typename VisMatrix >
using dp3::ddecal::IterativeDiagonalSolver< VisMatrix >::ChannelBlockData = typename SolveData<VisMatrix>::ChannelBlockData

Member Function Documentation

◆ NSolutionPolarizations()

template<typename VisMatrix >
size_t dp3::ddecal::IterativeDiagonalSolver< VisMatrix >::NSolutionPolarizations ( ) const
inlineoverridevirtual
Returns
The number of polarizations in the solution.

Implements dp3::ddecal::SolverBase.

◆ Solve()

template<typename VisMatrix >
SolveResult dp3::ddecal::IterativeDiagonalSolver< VisMatrix >::Solve ( const SolveData< VisMatrix > &  data,
std::vector< std::vector< DComplex >> &  solutions,
double  time 
)
override

◆ SupportsDdSolutionIntervals()

template<typename VisMatrix >
bool dp3::ddecal::IterativeDiagonalSolver< VisMatrix >::SupportsDdSolutionIntervals ( ) const
inlineoverridevirtual

True if this solver supports direction-dependent solution intervals. In that case, the solver can solve different directions with different solution intervals. More specific, each timestep of each direction can individually be set to belong to a specific solution.

Reimplemented from dp3::ddecal::SolverBase.


The documentation for this class was generated from the following file: