Trilinos based (stochastic) FEM solvers
main.cpp
Go to the documentation of this file.
1 /*
2 Brian Staber (brian.staber@gmail.com)
3 */
4 
5 #include "Epetra_ConfigDefs.h"
6 #ifdef HAVE_MPI
7 #include "mpi.h"
8 #include "Epetra_MpiComm.h"
9 #else
10 #include "Epetra_SerialComm.h"
11 #endif
12 
13 #include "Teuchos_CommandLineProcessor.hpp"
14 #include "Teuchos_StandardCatchMacros.hpp"
15 #include "Teuchos_ParameterList.hpp"
16 #include "Teuchos_XMLParameterListCoreHelpers.hpp"
17 
19 #include <boost/math/special_functions/gamma.hpp>
20 
21 #include "shinozukapp.hpp"
22 
23 int main(int argc, char *argv[]){
24 
25  std::string xmlInFileName = "";
26  std::string extraXmlFile = "";
27  std::string xmlOutFileName = "paramList.out";
28 
29  Teuchos::CommandLineProcessor clp(false);
30  clp.setOption("xml-in-file",&xmlInFileName,"The XML file to read into a parameter list");
31  clp.setDocString("TO DO.");
32 
33  Teuchos::CommandLineProcessor::EParseCommandLineReturn
34  parse_return = clp.parse(argc,argv);
35  if( parse_return != Teuchos::CommandLineProcessor::PARSE_SUCCESSFUL ) {
36  std::cout << "\nEnd Result: TEST FAILED" << std::endl;
37  return parse_return;
38  }
39 
40 #ifdef HAVE_MPI
41  MPI_Init(&argc, &argv);
42  Epetra_MpiComm Comm(MPI_COMM_WORLD);
43 #else
44  Epetra_SerialComm Comm;
45 #endif
46 
47  Teuchos::RCP<Teuchos::ParameterList> paramList = Teuchos::rcp(new Teuchos::ParameterList);
48  if(xmlInFileName.length()) {
49  Teuchos::updateParametersFromXmlFile(xmlInFileName, inoutArg(*paramList));
50  }
51 
52  if (Comm.MyPID()==0){
53  paramList->print(std::cout,2,true,true);
54  }
55 
56  Teuchos::RCP<neumannInnerSurface_StochasticPolyconvexHGO> my_interface
57  = Teuchos::rcp(new neumannInnerSurface_StochasticPolyconvexHGO(Comm,*paramList));
58 
59  std::ifstream parameters_file_1, parameters_file_2, parameters_file_3, parameters_file_4;
60 
61  std::string path1 = "/Users/Brian/Documents/Thesis/Trilinos_results/arteries/gmrf_neumann/a100_gamma3_delta010/";
62  parameters_file_1.open(path1+"w1.txt");
63  parameters_file_2.open(path1+"w2.txt");
64  parameters_file_3.open(path1+"w3.txt");
65  parameters_file_4.open(path1+"w4.txt");
66 
67  unsigned int n_cells_p1_med = 297828;
68  unsigned int n_nodes_p1_med = 58464;
69 
70  Epetra_Map StandardMap(int(n_nodes_p1_med),0,Comm);
71 
72  Epetra_Vector c1(StandardMap);
73  Epetra_Vector c2(StandardMap);
74  Epetra_Vector u1(StandardMap);
75  Epetra_Vector mu4(StandardMap);
76 
77  std::string path = "/Users/Brian/Documents/Thesis/Trilinos/arteries/mesh/connectivity_p1_media.txt";
78  my_interface->get_media(n_cells_p1_med,n_nodes_p1_med,path);
79 
80  if (parameters_file_1.is_open() && parameters_file_2.is_open() && parameters_file_3.is_open() && parameters_file_4.is_open()){
81 
82  for (unsigned nmc=0; nmc<1; ++nmc){
83  for (int i=0; i<n_nodes_p1_med; ++i){
84  parameters_file_1 >> my_interface->w1_gmrf(i);
85  parameters_file_2 >> my_interface->w2_gmrf(i);
86  parameters_file_3 >> my_interface->w3_gmrf(i);
87  parameters_file_4 >> my_interface->w4_gmrf(i);
88  }
89  for (int j=0; j<n_nodes_p1_med; ++j){
90  if (StandardMap.MyGID(j)){
91  c1[StandardMap.LID(j)] = my_interface->icdf_gamma(my_interface->w1_gmrf[j],my_interface->alpha1,my_interface->alpha2);
92  c2[StandardMap.LID(j)] = my_interface->icdf_gamma(my_interface->w2_gmrf[j],my_interface->alpha3,my_interface->alpha4);
93  u1[StandardMap.LID(j)] = my_interface->icdf_beta(my_interface->w3_gmrf[j],my_interface->tau1,my_interface->tau2);
94  mu4[StandardMap.LID(j)] = my_interface->icdf_gamma(my_interface->w4_gmrf[j],my_interface->alpha5,my_interface->alpha6);
95  }
96  }
97  }
98  Comm.Barrier();
99  parameters_file_1.close();
100  parameters_file_2.close();
101  parameters_file_3.close();
102  parameters_file_4.close();
103  }
104  else{
105  std::cout << "Couldn't open one of the parameters_file.\n";
106  }
107 
108  int error;
109  int NumTargetElements = 0;
110  if (Comm.MyPID()==0){
111  NumTargetElements = n_nodes_p1_med;
112  }
113  Epetra_Map MapOnRoot(-1,NumTargetElements,0,Comm);
114  Epetra_Export ExportOnRoot(StandardMap,MapOnRoot);
115  Epetra_MultiVector lhs_root(MapOnRoot,true);
116  lhs_root.Export(c1,ExportOnRoot,Insert);
117  std::string filename = "/Users/Brian/Documents/Thesis/Trilinos_results/arteries/boost_gmrf/gmrf_nodes/c1_test.mtx";
118  error = EpetraExt::MultiVectorToMatrixMarketFile(filename.c_str(),lhs_root,0,0,false);
119 
120  lhs_root.PutScalar(0.0);
121  lhs_root.Export(c2,ExportOnRoot,Insert);
122  filename = "/Users/Brian/Documents/Thesis/Trilinos_results/arteries/boost_gmrf/gmrf_nodes/c2_test.mtx";
123  error = EpetraExt::MultiVectorToMatrixMarketFile(filename.c_str(),lhs_root,0,0,false);
124 
125  lhs_root.PutScalar(0.0);
126  lhs_root.Export(u1,ExportOnRoot,Insert);
127  filename = "/Users/Brian/Documents/Thesis/Trilinos_results/arteries/boost_gmrf/gmrf_nodes/u1_test.mtx";
128  error = EpetraExt::MultiVectorToMatrixMarketFile(filename.c_str(),lhs_root,0,0,false);
129 
130  lhs_root.PutScalar(0.0);
131  lhs_root.Export(mu4,ExportOnRoot,Insert);
132  filename = "/Users/Brian/Documents/Thesis/Trilinos_results/arteries/boost_gmrf/gmrf_nodes/mu4_test.mtx";
133  error = EpetraExt::MultiVectorToMatrixMarketFile(filename.c_str(),lhs_root,0,0,false);
134 
135 
136 #ifdef HAVE_MPI
137  MPI_Finalize();
138 #endif
139 return 0;
140 
141 }
for j
Definition: costFunction.m:42
optimParameters nmc
filename
Definition: costFunction.m:44
int main(int argc, char *argv[])
Definition: main.cpp:23
for i
Definition: costFunction.m:38