00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include <assert.h>
00031
00032 #include <fstream>
00033 #include <fstream>
00034 #include <iostream>
00035 #include <iomanip>
00036
00037 #include "NLPInterfacePack_ExampleNLPDirectRun.hpp"
00038 #include "AbstractLinAlgPack_exampleNLPDiagSetup.hpp"
00039 #include "AbstractLinAlgPack_VectorSpace.hpp"
00040 #include "Teuchos_Workspace.hpp"
00041 #include "Teuchos_oblackholestream.hpp"
00042
00043 int main( int argc, char* argv[] ) {
00044
00045 using std::endl;
00046 using std::setw;
00047 namespace mmp = MemMngPack;
00048 using Teuchos::RCP;
00049 typedef AbstractLinAlgPack::size_type size_type;
00050 typedef AbstractLinAlgPack::value_type value_type;
00051 namespace NLPIP = NLPInterfacePack;
00052 namespace rsqp = MoochoPack;
00053 using rsqp::MoochoSolver;
00054
00055 using AbstractLinAlgPack::VectorSpace;
00056
00057 using Teuchos::Workspace;
00058 Teuchos::WorkspaceStore* wss = Teuchos::get_default_workspace_store().get();
00059
00060 int err = 0;
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070 MPI_Init(&argc,&argv);
00071 int num_proc, proc_rank;
00072 MPI_Comm_size( MPI_COMM_WORLD, &num_proc );
00073 MPI_Comm_rank( MPI_COMM_WORLD, &proc_rank );
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084 const int
00085 PROG_SUCCESS = 0,
00086 PROG_NLP_TEST_ERR = -1,
00087 PROG_EXCEPTION = -2,
00088 PROG_MAX_ITER_EXEEDED = -3,
00089 PROG_MAX_TIME_EXEEDED = -4;
00090
00091 int prog_return = PROG_SUCCESS;
00092
00093
00094 std::ostream &out = std::cout;
00095 std::ostream &eout = std::cerr;
00096 Teuchos::oblackholestream blackhole;
00097
00098 try {
00099
00100
00101
00102
00103
00104 size_type n;
00105 value_type xo;
00106 bool has_bounds;
00107 bool dep_bounded;
00108
00109 VectorSpace::space_ptr_t vec_space;
00110 const int err = AbstractLinAlgPack::exampleNLPDiagSetup(argc,argv,MPI_COMM_WORLD,&vec_space,&n,&xo,&has_bounds,&dep_bounded);
00111 if(err) return err;
00112
00113
00114 const MoochoSolver::ESolutionStatus
00115 solve_return = NLPIP::ExampleNLPDirectRun(
00116 *vec_space, xo, has_bounds, dep_bounded
00117 ,proc_rank == 0 ? &out : &blackhole
00118 ,proc_rank == 0 ? &eout : &blackhole
00119 ,proc_rank == 0 ? false : true
00120 ,proc_rank == 0 ? NULL : &blackhole
00121 ,proc_rank == 0 ? NULL : &blackhole
00122 ,proc_rank == 0 ? NULL : &blackhole
00123 );
00124
00125 switch(solve_return) {
00126 case MoochoSolver::SOLVE_RETURN_SOLVED:
00127 prog_return = PROG_SUCCESS;
00128 break;
00129 case MoochoSolver::SOLVE_RETURN_MAX_ITER:
00130 prog_return = PROG_MAX_ITER_EXEEDED;
00131 break;
00132 case MoochoSolver::SOLVE_RETURN_MAX_RUN_TIME:
00133 prog_return = PROG_MAX_TIME_EXEEDED;
00134 break;
00135 case MoochoSolver::SOLVE_RETURN_NLP_TEST_FAILED:
00136 prog_return = PROG_NLP_TEST_ERR;
00137 break;
00138 case MoochoSolver::SOLVE_RETURN_EXCEPTION:
00139 prog_return = PROG_EXCEPTION;
00140 break;
00141 default:
00142 TEST_FOR_EXCEPT(true);
00143 }
00144
00145 }
00146 catch(const std::exception& excpt) {
00147 eout << "\nCaught a std::exception on process " << proc_rank<< ": " << excpt.what() << endl;
00148 prog_return = PROG_EXCEPTION;
00149 }
00150 catch(...) {
00151 eout << "\nCaught an unknown exception on process " << proc_rank<< "\n";
00152 prog_return = PROG_EXCEPTION;
00153 }
00154
00155 MPI_Finalize();
00156
00157 return prog_return;
00158 }