{"action":"closed","issue":{"url":"https://api.github.com/repos/paboyle/Grid/issues/153","repository_url":"https://api.github.com/repos/paboyle/Grid","labels_url":"https://api.github.com/repos/paboyle/Grid/issues/153/labels{/name}","comments_url":"https://api.github.com/repos/paboyle/Grid/issues/153/comments","events_url":"https://api.github.com/repos/paboyle/Grid/issues/153/events","html_url":"https://github.com/paboyle/Grid/issues/153","id":298632693,"number":153,"title":"Deflation interface","user":{"login":"paboyle","id":7544013,"avatar_url":"https://avatars3.githubusercontent.com/u/7544013?v=4","gravatar_id":"","url":"https://api.github.com/users/paboyle","html_url":"https://github.com/paboyle","followers_url":"https://api.github.com/users/paboyle/followers","following_url":"https://api.github.com/users/paboyle/following{/other_user}","gists_url":"https://api.github.com/users/paboyle/gists{/gist_id}","starred_url":"https://api.github.com/users/paboyle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paboyle/subscriptions","organizations_url":"https://api.github.com/users/paboyle/orgs","repos_url":"https://api.github.com/users/paboyle/repos","events_url":"https://api.github.com/users/paboyle/events{/privacy}","received_events_url":"https://api.github.com/users/paboyle/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-02-20T15:19:08Z","updated_at":"2018-03-09T20:45:42Z","closed_at":"2018-03-09T20:45:42Z","author_association":"OWNER","body":"\r\nhttps://github.com/paboyle/Grid/blob/develop/lib/algorithms/iterative/Deflation.h\r\n\r\nCreated a bunch of \"Guesser\" classes. See below.\r\n\r\nModified \r\n\r\nhttps://github.com/paboyle/Grid/blob/develop/lib/algorithms/iterative/SchurRedBlack.h\r\n\r\nTo take:\r\n\r\n   // Preserve old interface with zero guess\r\n   template<class Matrix>\r\n    void operator() (Matrix & _Matrix,const Field &in, Field &out){\r\n      ZeroGuesser guess;\r\n      (*this)(_Matrix,in,out,guess);\r\n    }\r\n\r\n    template<class Matrix, class Guesser>\r\n    void operator() (Matrix & _Matrix,const Field &in, Field &out,Guesser &guess){\r\n          // Applies Guess at appropriate time.\r\n    }\r\n\r\nSolvers themselves continue with \"guess = input result vector.\r\n\r\n\r\nDetails:\r\n-------------------------------\r\nstruct ZeroGuesser {\r\n  template<class Field>   void operator()(const Field &src,Field &guess) { guess = Zero(); };\r\n};\r\n\r\nstruct SourceGuesser {\r\n  template<class Field>   void operator()(const Field &src,Field &guess) { guess = src; };\r\n};\r\n\r\ntemplate<class Field>\r\nstruct DeflatedGuesser {\r\nprivate:\r\n  const std::vector<Field> &evec;\r\n  const std::vector<RealD> &eval;\r\npublic:\r\n....\r\n}\r\n\r\nand\r\ntemplate<class FineField, class CoarseField>\r\nclass LocalCoherenceDeflatedGuesser {\r\nprivate:\r\n  const std::vector<FineField>   &subspace;\r\n  const std::vector<CoarseField> &evec_coarse;\r\n  const std::vector<RealD>       &eval_coarse;\r\n}\r\n"}}
{"actor":{"display_login":"paboyle"}}