29 #include <boost/tokenizer.hpp>
30 #include <boost/token_functions.hpp>
31 #include <boost/algorithm/string/split.hpp>
32 #include <boost/algorithm/string/classification.hpp>
34 #include <feel/feelcore/feel.hpp>
38 #include <feel/feelfilters/exportergmsh.hpp>
39 #include <feel/feelfilters/exporterensight.hpp>
40 #include <feel/feelfilters/exporterensightgold.hpp>
45 template<
typename MeshType,
int N>
class ExporterEnsight;
46 template<
typename MeshType,
int N>
class ExporterEnsightGold;
47 template<
typename MeshType,
int N>
class ExporterGmsh;
49 template<
typename MeshType,
int N>
54 M_worldComm( worldComm ),
57 M_prefix( Environment::about().appName() ),
62 M_ex_geometry( EXPORTER_GEOMETRY_CHANGE_COORDS_ONLY )
64 VLOG(1) <<
"[exporter::exporter] do export = " <<
doExport() <<
"\n";
67 template<
typename MeshType,
int N>
72 M_worldComm( worldComm ),
80 M_ex_geometry( EXPORTER_GEOMETRY_CHANGE_COORDS_ONLY )
85 template<
typename MeshType,
int N>
90 M_worldComm( worldComm ),
93 M_prefix( exp_prefix ),
98 M_ex_geometry( EXPORTER_GEOMETRY_CHANGE_COORDS_ONLY )
100 VLOG(1) <<
"[exporter::exporter] do export = " <<
doExport() <<
"\n";
103 template<
typename MeshType,
int N>
108 M_worldComm( __ex.M_worldComm ),
109 M_do_export( __ex.M_do_export ),
110 M_type( __ex.M_type ),
111 M_prefix( __ex.M_prefix ),
112 M_freq( __ex.M_freq ),
113 M_cptOfSave( __ex.M_cptOfSave ),
115 M_path( __ex.M_path ),
116 M_ex_geometry( EXPORTER_GEOMETRY_CHANGE_COORDS_ONLY )
121 template<
typename MeshType,
int N>
125 template<
typename MeshType,
int N>
126 boost::shared_ptr<Exporter<MeshType, N> >
131 if ( N == 1 && ( exportername ==
"ensight" ) )
133 else if ( N == 1 && ( exportername ==
"ensightgold" ) )
135 else if ( N == 1 && ( exportername ==
"exodus" ) )
137 else if ( N > 1 || ( exportername ==
"gmsh" ) )
144 return boost::shared_ptr<Exporter<MeshType, N> >(exporter);
147 template<
typename MeshType,
int N>
148 boost::shared_ptr<Exporter<MeshType, N> >
151 std::string estr = vm[
"exporter.format"].template as<std::string>();
154 if ( N == 1 && ( estr ==
"ensight" ) )
156 else if ( N == 1 && ( estr ==
"ensightgold" ) )
158 else if ( N == 1 && ( estr ==
"exodus" ) )
160 else if ( N > 1 || estr ==
"gmsh" )
168 exporter->addTimeSet( timeset_ptrtype(
new timeset_type( prefix ) ) );
169 exporter->setPrefix( prefix );
170 return boost::shared_ptr<Exporter<MeshType, N> >( exporter );
173 template<
typename MeshType,
int N>
178 M_do_export = Environment::vm(_name=
"exporter.export",_prefix=exp_prefix).template as<bool>();
179 M_type = Environment::vm(_name=
"exporter.format",_prefix=exp_prefix).template as<std::string>();
181 std::string p = exp_prefix;
184 if ( Environment::vm().count( p+
"exporter.prefix" ) )
185 M_prefix = Environment::vm(_name=
"exporter.prefix",_prefix=exp_prefix).template as<std::string>();
187 M_freq = Environment::vm(_name=
"exporter.freq",_prefix=exp_prefix).template as<int>();
188 M_ft = file_type( Environment::vm(_name=
"exporter.file-type",_prefix=exp_prefix).
template as<int>() );
190 VLOG(1) <<
"[Exporter] type: " << M_type <<
"\n";
191 VLOG(1) <<
"[Exporter] prefix: " << M_prefix <<
"\n";
192 VLOG(1) <<
"[Exporter] freq: " << M_freq <<
"\n";
193 VLOG(1) <<
"[Exporter] ft: " << M_ft <<
"\n";
197 template<
typename MeshType,
int N>
201 fs::path rep_path =
".";
202 typedef std::vector< std::string > split_vector_type;
204 split_vector_type dirs;
205 std::string fmtstr = fmt.str();
206 boost::split( dirs, fmtstr, boost::is_any_of(
"/" ) );
208 BOOST_FOREACH( std::string
const& dir, dirs )
211 rep_path = rep_path / dir;
213 if ( !fs::exists( rep_path ) )
214 fs::create_directory( rep_path );
217 M_path = rep_path.string();