30 #ifndef __application_H
31 #define __application_H 1
33 #include <boost/optional.hpp>
34 #include <boost/format.hpp>
35 #include <boost/ptr_container/ptr_list.hpp>
37 #include <feel/feelcore/feel.hpp>
43 #include <boost/archive/binary_iarchive.hpp>
44 #include <boost/archive/binary_oarchive.hpp>
45 #include <boost/archive/text_iarchive.hpp>
46 #include <boost/archive/text_oarchive.hpp>
47 #include <boost/archive/xml_iarchive.hpp>
48 #include <boost/archive/xml_oarchive.hpp>
49 #include <boost/serialization/string.hpp>
51 #include <boost/mpi.hpp>
52 #if defined(FEELPP_HAS_MPI_H)
56 #if defined(FEELPP_HAS_TAU)
57 #include <Profile/Profiler.h>
63 namespace mpi = boost::mpi;
100 #if defined( FEELPP_HAS_MPI )
113 #if defined( FEELPP_HAS_MPI )
114 Application(
AboutData const& ad, po::options_description
const& od, MPI_Comm Comm = MPI_COMM_WORLD );
127 #if defined( FEELPP_HAS_MPI )
142 #if defined( FEELPP_HAS_MPI )
143 Application(
int argc,
char** argv,
AboutData const& ad, po::options_description
const& od, MPI_Comm Comm = MPI_COMM_WORLD );
186 po::variables_map
const&
vm()
const
208 return M_to_pass_further.size()+1;
221 return uint16_type( M_comm.size() );
229 return uint16_type( M_comm.rank() );
237 return mpi::environment::initialized();
248 return mpi::environment::initialized();
259 return mpi::environment::finalized();
273 #if defined( FEELPP_HAS_MPI )
274 return mpi::environment::processor_name();
277 return std::string(
"localhost" );
287 return M_simgets.begin();
293 return M_simgets.end();
299 return M_simgets.size();
308 return M_vm.count(
"verbose" );
320 void setName1( std::string
const& name1 );
325 void setName2( std::string
const& name2 );
330 void setH(
double h,
int precision = 4 );
349 #if defined( FEELPP_HAS_MPI )
350 static MPI_Comm COMM_WORLD;
351 #endif // FEELPP_HAS_MPI
394 virtual void run(
const double* X,
unsigned long P,
double* Y,
unsigned long N );
404 ALL = ERRORS | TIME | DATA | NUMBERS
410 void setStats( std::vector<std::string>
const& keys );
421 void printStats( std::ostream& out, std::vector<std::string>
const& keys,
size_type stats = ALL )
const;
446 void processGenericOptions();
455 void parseAndStoreOptions( po::command_line_parser parser,
bool extra_parser =
false );
465 void initMPI(
int,
char**, MPI_Comm );
473 po::options_description M_desc;
474 po::variables_map M_vm;
476 boost::optional<std::string> M_name1;
477 boost::optional<std::string> M_name2;
478 boost::optional<std::pair<double, int> > M_h;
479 boost::optional<int> M_dim;
481 std::vector<std::string> M_to_pass_further;
484 boost::shared_ptr<mpi::environment> M_env;
488 std::map<std::string,std::vector<ptree::ptree> > M_stats;
489 std::vector<std::string> M_keys;