Trilinos based (stochastic) FEM solvers
nonLinearFiniteElementProblem.hpp
Go to the documentation of this file.
1 /*
2 Brian Staber (brian.staber@gmail.com)
3 */
4 
5 #ifndef NONLINEARFINITEELEMENTPROBLEM_HPP
6 #define NONLINEARFINITEELEMENTPROBLEM_HPP
7 
8 #include "meshpp.hpp"
9 #include "baseClassFEM.hpp"
10 
12 {
13 
14 public:
16  };
18  };
19 
20  double pressure_load;
21 
22  virtual void get_matrix_and_rhs(Epetra_Vector & x, Epetra_FECrsMatrix & K, Epetra_FEVector & F) = 0;
23  virtual void setup_dirichlet_conditions() = 0;
24  virtual void apply_dirichlet_conditions(Epetra_FECrsMatrix & K, Epetra_FEVector & F, double & displacement) = 0;
25 
27  Amesos Factory;
28  std::cout << "Available Amesos solvers: \n";
29  bool isAvailable;
30  isAvailable = Factory.Query("Lapack"); if(isAvailable){ std::cout << "Lapack: yes.\n"; } else{ std::cout << "Lapack: no.\n"; }
31  isAvailable = Factory.Query("Klu"); if(isAvailable){ std::cout << "Klu: yes.\n"; } else{ std::cout << "Klu: no.\n"; }
32  isAvailable = Factory.Query("Umfpack"); if(isAvailable){ std::cout << "Umfpack: yes.\n"; } else{ std::cout << "Umfpack: no.\n"; }
33  isAvailable = Factory.Query("Pardiso"); if(isAvailable){ std::cout << "Pardiso: yes.\n"; } else{ std::cout << "Pardiso: no.\n"; }
34  isAvailable = Factory.Query("Taucs"); if(isAvailable){ std::cout << "Taucs: yes.\n"; } else{ std::cout << "Taucs: no.\n"; }
35  isAvailable = Factory.Query("Superlu"); if(isAvailable){ std::cout << "Superlu: yes.\n"; } else{ std::cout << "Superlu: no.\n"; }
36  isAvailable = Factory.Query("Superludist"); if(isAvailable){ std::cout << "Superludist: yes.\n"; } else{ std::cout << "Superludist: no.\n"; }
37  isAvailable = Factory.Query("Mumps"); if(isAvailable){ std::cout << "Mumps: yes.\n"; } else{ std::cout << "Mumps: no.\n"; }
38  isAvailable = Factory.Query("Dscpack"); if(isAvailable){ std::cout << "Dscpack: yes.\n"; } else{ std::cout << "Dscpack: no.\n"; }
39  }
40 
41 };
42 
43 #endif
virtual void setup_dirichlet_conditions()=0
virtual void apply_dirichlet_conditions(Epetra_FECrsMatrix &K, Epetra_FEVector &F, double &displacement)=0
virtual void get_matrix_and_rhs(Epetra_Vector &x, Epetra_FECrsMatrix &K, Epetra_FEVector &F)=0