3
0
mirror of https://github.com/triqs/dft_tools synced 2024-12-26 14:23:38 +01:00
dft_tools/test/triqs/parameters/mpi_param.cpp
Olivier Parcollet af084f5d59 parameters & wrapper
- new parameter class :
  parameters are viewed as form, built in C++, and filled in C++/python.
  Each field of the form as a precise C++ type (erased using standard techniques).
  First tests ok, to be reread/checked.

  TODO : serialization is commented. Lead to long compilation time & large code
  due to boost::serialization. Use h5 when possible.

- wrapper :
  - separated the converters of the wrapped type in the TRIQS library
  - necessary for parameters (it used outside an .so) and potentially
    other codes, outside an .so module
2014-05-19 15:19:18 +02:00

45 lines
845 B
C++

#include <triqs/parameters.hpp>
#include <iostream>
#include <vector>
#include <complex>
#include <string>
#include <boost/mpi.hpp>
#include <boost/mpi/environment.hpp>
#include <boost/mpi/communicator.hpp>
#include <boost/serialization/complex.hpp>
using namespace triqs::params;
int main(int argc, char* argv[]) {
boost::mpi::environment env(argc, argv);
boost::mpi::communicator world;
parameters P;
P.add_field("a", 1, "?")
.add_field("d", 2.0, "")
.add_field("s", "", "");
if (world.rank() == 0) {
P["a"] = long(1);
P["d"] = 2.7;
P["s"] = std::string("-14.3");
}
/*
* WITH SERIALIZATION
std::cout << "Before bcast rank " << world.rank() << " : " << P << std::endl ;
boost::mpi::broadcast(world,P,0);
std::cout << "After bcast rank " << world.rank() << " : " << P << std::endl ;
*/
return 0;
}