Computation of eigenvalues and eigenvectors in Montjoie
For formulations of second order, the evolution problem is equal to
where Mh and Kh are the mass and stiffness matrix. The associated eigenvalue problem is equal to :
The eigenvale λ is associated with the square of the pulsation :
For formulations of first order, the evolution problem is equal to :
where Mh and Kh are the mass and stiffness matrix. The associated eigenvalue problem is equal to :
The eigenvale λ is associated with the pulsation :
For the first-order problems, the interested eigenvalues are often located on the imaginary axis. The eigenmodes (λ, U) are computed via the interface of eigenvalue solvers achieved in Seldon. The class EigenProblemMontjoie is deriving from the class SparseEigenProblem with some overloads of methods in order to handle finite element matrices stored in Montjoie. Below, an example of use of this class is detailed :
// construction of EllipticProblem class EllipticProblem<TypeElement, TypeEquation> var; ReadInputFile(input_file, var); // ... var.ComputeMassMatrix(); // then you can declare a solver relying on the considered problem All_LinearSolver<TypeElement, TypeEquation> glob_solver(var); // you can read parameters of the data file : ReadInputFile(input_file, glob_solver); // you can select the solver, for example a direct solver glob_solver.SetDirectSolver(); // then you declare an eigenvalue problem that will use // the linear solver to compute the eigenvalues EigenProblemMontjoie<TypeElement, TypeEquation> eigen_solver(var, glob_solver); // parameters can be read in a file ReadInputFile(input_file, eigen_solver); // effective computation of eigenvalues and eigenvectors Vector<Complexe> lambda_real, lambda_imag; Matrix<Complexe> eigen_vectors; GetEigenvaluesEigenvectors(eigen_solver, lambda_real, lambda_imag, eigen_vectors);