Trilinos based (stochastic) FEM solvers
main.cpp
Go to the documentation of this file.
1 #include "Epetra_ConfigDefs.h"
2 #ifdef HAVE_MPI
3 #include "mpi.h"
4 #include "Epetra_MpiComm.h"
5 #else
6 #include "Epetra_SerialComm.h"
7 #endif
8 
9 #include "meshpp.hpp"
10 #include "laplacepp.hpp"
11 
12 int main(int argc, char *argv[]){
13 
14 #ifdef HAVE_MPI
15 MPI_Init(&argc, &argv);
16 Epetra_MpiComm Comm(MPI_COMM_WORLD);
17 #else
18 Epetra_SerialComm Comm;
19 #endif
20 
21  //Create a parameter list and two sublists "Mesh" and "Laplace".
22  Teuchos::ParameterList Laplace_parameters;
23  Teuchos::ParameterList & mesh_sublist = Laplace_parameters.sublist("Mesh");
24  Teuchos::ParameterList & aztec_sublist = Laplace_parameters.sublist("Aztec");
25  Teuchos::ParameterList & amesos_sublist = Laplace_parameters.sublist("Amesos");
26 
27  unsigned int nb_phys_groups = 4;
28  mesh_sublist.set("mesh_file","test2.msh");
29  mesh_sublist.set("boundary_file","nodes_to_boundaries_less_bumpy.txt");
30  mesh_sublist.set("nb_phys_groups",nb_phys_groups);
31 
32  aztec_sublist.set("solver", "cg");
33  aztec_sublist.set("precond", "jacobi");
34  //aztec_sublist.set("subdomain_solve", "ilut");
35  aztec_sublist.set("AZ_conv", "noscaled");
36  aztec_sublist.set("AZ_tol", 1e-6);
37  aztec_sublist.set("AZ_output", 0);
38  aztec_sublist.set("AZ_diagnostics", 0);
39  aztec_sublist.set("AZ_reorder", 1);
40 
41  bool display = 1;
42  amesos_sublist.set("display",display);
43  amesos_sublist.set("solver_type","Mumps");
44 
45  //$$ Laplace example
46  Teuchos::RCP<laplace> LaplaceO = Teuchos::rcp(new laplace(Comm,Laplace_parameters.sublist("Mesh")));
47  Epetra_FECrsMatrix matrix(Copy,*LaplaceO->FEGraph);
48  Epetra_Vector lhs(*LaplaceO->StandardMap);
49  Epetra_FEVector rhs(*LaplaceO->StandardMap);
50  //Problem number one with aztec
51  int bc_indx[2];
52  double bc_val[2];
53  bc_indx[0] = 0; bc_indx[1] = 1;
54  bc_val[0] = 0.0; bc_val[1] = 1.0;
55  LaplaceO->solve_aztec(Laplace_parameters.sublist("Aztec"), matrix, lhs, rhs, &bc_indx[0], &bc_val[0]);
56  LaplaceO->print_solution(lhs, "laplace_inner_to_outer_aztec.mtx");
57  //Problem number two with aztec
58  bc_indx[0] = 2; bc_indx[1] = 3;
59  LaplaceO->solve_aztec(Laplace_parameters.sublist("Aztec"), matrix, lhs, rhs, &bc_indx[0], &bc_val[0]);
60  LaplaceO->print_solution(lhs, "laplace_inlet_to_outlet_aztec.mtx");
61  //$$ End example
62 
63 #ifdef HAVE_MPI
64 MPI_Finalize();
65 #endif
66 return 0;
67 
68 }
int main(int argc, char *argv[])
Definition: main.cpp:23
e
Definition: run.m:10