28 template <
typename MATRIX>
29 Matrix
linsolve(
const SymMatrix& H,
const MATRIX& S) {
30 Matrix res(S.nlin(),H.nlin());
31 Jacobi<SymMatrix> M(H);
32 #pragma omp parallel for
33 #ifdef OPENMP_UNSIGNED
34 for (
unsigned i=0; i<S.nlin(); ++i) {
36 for (
int i=0; i<static_cast<int>(S.nlin()); ++i) {
38 Vector vtemp(H.nlin());
39 GMRes(H,M,vtemp,S.getlin(i),1000,1e-7,H.nlin());
42 PROGRESSBAR(i,S.nlin());
47 template <
typename SelectionMatrix>
57 using Matrix::operator=;
66 using Matrix::operator=;
76 using Matrix::operator=;
81 for (
unsigned i=0; i<
ncol(); ++i,++pb)
89 using Matrix::operator=;
96 for (
unsigned i=0; i<
ncol(); ++i,++pb)
115 for (
unsigned i=0; i<dipoles.
nlin(); ++i,++pb) {
122 void saveEEG(
const std::string filename )
const { EEGleadfield.
save(filename); }
123 void saveMEG(
const std::string filename )
const { MEGleadfield.
save(filename); }
125 size_t nlin()
const {
return MEGleadfield.
nlin() + EEGleadfield.
nlin(); }
135 using Matrix::operator=;
137 Matrix(Source2IPMat+(Head2IPMat*HeadMatInv)*SourceMat)
143 using Matrix::operator=;
145 Matrix((Head2IPMat*HeadMatInv)*SourceMat)
Various helper functions for assembling matrices.
GainEEGMEGadjoint(const Geometry &geo, const Matrix &dipoles, const SymMatrix &HeadMat, const SparseMatrix &Head2EEGMat, const Matrix &Head2MEGMat, const Matrix &Source2MEGMat)
void saveMEG(const std::string filename) const
void saveEEG(const std::string filename) const
GainEEG(const Matrix &GainMat)
GainEEG(const SymMatrix &HeadMatInv, const Matrix &SourceMat, const SparseMatrix &Head2EEGMat)
GainEEGadjoint(const Geometry &geo, const Matrix &dipoles, const SymMatrix &HeadMat, const SparseMatrix &Head2EEGMat)
GainEITInternalPot(const SymMatrix &HeadMatInv, const Matrix &SourceMat, const Matrix &Head2IPMat)
GainInternalPot(const SymMatrix &HeadMatInv, const Matrix &SourceMat, const Matrix &Head2IPMat, const Matrix &Source2IPMat)
GainMEG(const SymMatrix &HeadMatInv, const Matrix &SourceMat, const Matrix &Head2MEGMat, const Matrix &Source2MEGMat)
GainMEG(const Matrix &GainMat)
GainMEGadjoint(const Geometry &geo, const Matrix &dipoles, const SymMatrix &HeadMat, const Matrix &Head2MEGMat, const Matrix &Source2MEGMat)
Geometry contains the electrophysiological model Vertices, meshes and domains are stored in this geom...
virtual Dimension ncol() const
Matrix class Matrix class.
void save(const char *filename) const
Save Matrix to file (Format set using file name extension)
Vector getcol(const Index j) const
Vector getlin(const Index i) const
Matrix submat(const Index istart, const Index isize, const Index jstart, const Index jsize) const
void setcol(const Index j, const Vector &v)
void setlin(const Index i, const Vector &v)
Vector getlin(const size_t i) const
Vector solveLin(const Vector &B) const
SymMatrix HeadMat(const Geometry &geo, const Integrator &integrator=Integrator(3, 0, 0.005))
Matrix linsolve(const SymMatrix &H, const SelectionMatrix &S)
unsigned GMRes(const T &A, const P &M, Vector &x, const Vector &b, int max_iter, double tol, unsigned m)
Matrix DipSourceMat(const Geometry &geo, const Matrix &dipoles, const Integrator &integrator, const std::string &domain_name)
SparseMatrix Head2EEGMat(const Geometry &geo, const Sensors &electrodes)
Matrix Head2MEGMat(const Geometry &geo, const Sensors &sensors)