DP3
IterativeFullJonesSolver.h
Go to the documentation of this file.
1 // Copyright (C) 2021 ASTRON (Netherlands Institute for Radio Astronomy)
2 // SPDX-License-Identifier: GPL-3.0-or-later
3 
4 #ifndef DDECAL_ITERATIVE_FULL_JONES_SOLVER_H
5 #define DDECAL_ITERATIVE_FULL_JONES_SOLVER_H
6 
7 #include "SolverBase.h"
8 #include "SolveData.h"
9 
10 namespace dp3 {
11 namespace ddecal {
12 
17 class IterativeFullJonesSolver final : public SolverBase {
18  public:
20  std::vector<std::vector<DComplex>>& solutions,
21  double time) override;
22 
23  size_t NSolutionPolarizations() const override { return 4; }
24 
25  bool SupportsDdSolutionIntervals() const override { return true; }
26 
27  private:
28  void PerformIteration(size_t ch_block,
29  const FullSolveData::ChannelBlockData& cb_data,
30  std::vector<aocommon::MC2x2F>& v_residual,
31  const std::vector<DComplex>& solutions,
32  SolutionTensor& next_solutions);
33 
34  template <bool Add>
35  void AddOrSubtractDirection(const FullSolveData::ChannelBlockData& cb_data,
36  std::vector<aocommon::MC2x2F>& v_residual,
37  size_t direction,
38  const std::vector<DComplex>& solutions);
39 
40  void SolveDirection(size_t ch_block,
41  const FullSolveData::ChannelBlockData& cb_data,
42  const std::vector<aocommon::MC2x2F>& v_residual,
43  size_t direction, const std::vector<DComplex>& solutions,
44  SolutionTensor& next_solutions);
45 };
46 
47 } // namespace ddecal
48 } // namespace dp3
49 
50 #endif // DDECAL_ITERATIVE_SCALAR_SOLVER_H
Definition: IterativeFullJonesSolver.h:17
SolveResult Solve(const FullSolveData &data, std::vector< std::vector< DComplex >> &solutions, double time) override
bool SupportsDdSolutionIntervals() const override
Definition: IterativeFullJonesSolver.h:25
size_t NSolutionPolarizations() const override
Definition: IterativeFullJonesSolver.h:23
Definition: SolveData.h:29
Definition: SolverBase.h:24
xt::xtensor< std::complex< double >, 4 > SolutionTensor
Definition: Solutions.h:19
This file has generic helper routines for testing steps.
Definition: AntennaConfig.h:53
Definition: SolverBase.h:61