32 #ifndef HEX_DOM_PRECONDITIONER_H 33 #define HEX_DOM_PRECONDITIONER_H 42 #include "hex-csrmatrix.h" 43 #include "hex-densematrix.h" 89 Bspline const & bspline_panel_x,
101 virtual void setup ();
102 virtual void update (Real E);
103 virtual void precondition (BlockArray<Complex>
const & r, BlockArray<Complex> & z)
const;
140 int xpanels,
int ypanels,
144 rArray cxspline1_inner, rArray rxspline_inner, rArray cxspline2_inner,
145 rArray cyspline1_inner, rArray ryspline_inner, rArray cyspline2_inner,
146 rArray cxspline1_full, rArray rxspline_full, rArray cxspline2_full,
147 rArray cyspline1_full, rArray ryspline_full, rArray cyspline2_full,
173 int cycle,
int cycles,
174 std::vector<PanelSolution> & p,
182 std::vector<PanelSolution>
const & panels,
183 int ipanel,
int jpanel
190 int i,
int j,
int k,
int l
205 void splitResidual (cBlockArray
const & r, std::vector<PanelSolution> & p)
const;
208 void collectSolution (cBlockArray & z, std::vector<PanelSolution> & p)
const;
Domain decomposition preconditioner.
Definition: DOMPreconditioner.h:70
virtual std::string description() const
Description of the preconditioner.
Definition: DOMPreconditioner.cpp:71
int iypanel
Definition: DOMPreconditioner.h:161
Definition: DOMPreconditioner.h:115
Definition: DOMPreconditioner.h:113
int xoffset
Definition: DOMPreconditioner.h:163
PanelSolution(int ixpanel, int iypanel, int xpanels, int ypanels, int order, Real theta, Bspline const &xspline, Bspline const &yspline, rArray cxspline1_inner, rArray rxspline_inner, rArray cxspline2_inner, rArray cyspline1_inner, rArray ryspline_inner, rArray cyspline2_inner, rArray cxspline1_full, rArray rxspline_full, rArray cxspline2_full, rArray cyspline1_full, rArray ryspline_full, rArray cyspline2_full, int Nang)
Definition: DOMPreconditioner.cpp:722
int minpxspline
Definition: DOMPreconditioner.h:166
cBlockArray r
Definition: DOMPreconditioner.h:157
int ixpanel
Definition: DOMPreconditioner.h:160
int rev(int dir) const
Definition: DOMPreconditioner.h:119
int maxpxspline
Definition: DOMPreconditioner.h:166
Solution driver without actual preconditioner.
Definition: NoPreconditioner.h:55
B-spline environment.
Definition: bspline.h:57
int yoffset
Definition: DOMPreconditioner.h:164
Angular basis.
Definition: ang.h:44
int minpyspline
Definition: DOMPreconditioner.h:167
void solvePanel(int cycle, int cycles, std::vector< PanelSolution > &p, int i, int j) const
Definition: DOMPreconditioner.cpp:202
virtual void precondition(BlockArray< Complex > const &r, BlockArray< Complex > &z) const
Precondition the equation.
Definition: DOMPreconditioner.cpp:86
int maxpyspline
Definition: DOMPreconditioner.h:167
Complex couplingMatrixElement(int ill, int illp, int i, int j, int k, int l) const
Definition: DOMPreconditioner.cpp:547
int gap_
Definition: DOMPreconditioner.h:211
Definition: DOMPreconditioner.h:114
Command line parameters.
Definition: io.h:57
virtual void update(Real E)
Update the preconditioner for the next energy.
Definition: DOMPreconditioner.cpp:81
void knotSubsequence(int ipanel, int npanels, Bspline const &bspline, rArray &rknots, rArray &cknots1, rArray &cknots2) const
Definition: DOMPreconditioner.cpp:585
virtual void rhs(BlockArray< Complex > &chi, int ienergy, int instate) const
Calculate the right-hand side.
Definition: NoPreconditioner.cpp:821
virtual void finish()
Clean up memory etc.
Definition: DOMPreconditioner.cpp:197
Definition: DOMPreconditioner.h:111
MPI info.
Definition: parallel.h:50
Neighbours
Definition: DOMPreconditioner.h:109
DOMPreconditioner(CommandLine const &cmd, InputFile const &inp, Parallel const &par, AngularBasis const &ang, Bspline const &bspline_inner, Bspline const &bspline_full, Bspline const &bspline_panel_x, Bspline const &bspline_panel_y)
Definition: DOMPreconditioner.cpp:51
Definition: DOMPreconditioner.h:133
Bspline yspline_full
Definition: DOMPreconditioner.h:155
void splitResidual(cBlockArray const &r, std::vector< PanelSolution > &p) const
Definition: DOMPreconditioner.cpp:638
Bspline yspline_inner
Definition: DOMPreconditioner.h:152
Bspline xspline_full
Definition: DOMPreconditioner.h:154
preconditionerRunTimeSelectionDefinitions(DOMPreconditioner, "DOM") DOMPreconditioner()
Definition: DOMPreconditioner.h:75
void collectSolution(cBlockArray &z, std::vector< PanelSolution > &p) const
Definition: DOMPreconditioner.cpp:672
virtual void multiply(BlockArray< Complex > const &p, BlockArray< Complex > &q, MatrixSelection::Selection tri=MatrixSelection::Both) const
Multiply by the matrix equation.
Definition: NoPreconditioner.cpp:1233
void correctSource(cBlockArray &chi, std::vector< PanelSolution > const &panels, int ipanel, int jpanel) const
Definition: DOMPreconditioner.cpp:456
cBlockArray z
Definition: DOMPreconditioner.h:158
Bspline xspline_inner
Definition: DOMPreconditioner.h:151
virtual void setup()
Initialize the preconditioner.
Definition: DOMPreconditioner.cpp:76
Definition: DOMPreconditioner.h:112