46 const std::string &dc_type)
50 if (dc_type ==
"visit")
58 else if ( dc_type ==
"sidre" || dc_type ==
"sidre_hdf5")
63 MFEM_ABORT(
"Must build with MFEM_USE_SIDRE=YES for sidre support.");
66 else if ( dc_type ==
"json" ||
67 dc_type ==
"conduit_json" ||
68 dc_type ==
"conduit_bin" ||
71 #ifdef MFEM_USE_CONDUIT 81 MFEM_ABORT(
"Must build with MFEM_USE_CONDUIT=YES for conduit support.");
84 else if ( dc_type.substr(0,3) ==
"fms")
88 std::string::size_type pos = dc_type.find(
"_");
89 if (pos != std::string::npos)
91 std::string fms_protocol(dc_type.substr(pos+1, dc_type.size()-pos-1));
92 fms_dc->SetProtocol(fms_protocol);
96 MFEM_ABORT(
"Must build with MFEM_USE_FMS=YES for FMS support.");
101 MFEM_ABORT(
"Unsupported Data Collection type:" << dc_type);
107 int main(
int argc,
char *argv[])
116 const char *src_coll_name = NULL;
117 const char *src_coll_type =
"visit";
119 int src_pad_digits_cycle = 6;
120 int src_pad_digits_rank = 6;
121 const char *out_coll_name = NULL;
122 const char *out_coll_type =
"visit";
123 int out_pad_digits_cycle = -1;
124 int out_pad_digits_rank = -1;
127 args.
AddOption(&src_coll_name,
"-s",
"--source-root-prefix",
128 "Set the source data collection root file prefix.",
true);
129 args.
AddOption(&out_coll_name,
"-o",
"--output-root-prefix",
130 "Set the source data collection root file prefix.",
true);
131 args.
AddOption(&src_cycle,
"-c",
"--cycle",
132 "Set the source cycle index to read.");
133 args.
AddOption(&src_pad_digits_cycle,
"-pdc",
"--pad-digits-cycle",
134 "Number of digits in source cycle.");
135 args.
AddOption(&out_pad_digits_cycle,
"-opdc",
"--out-pad-digits-cycle",
136 "Number of digits in output cycle.");
137 args.
AddOption(&src_pad_digits_rank,
"-pdr",
"--pad-digits-rank",
138 "Number of digits in source MPI rank.");
139 args.
AddOption(&out_pad_digits_rank,
"-opdr",
"--out-pad-digits-rank",
140 "Number of digits in output MPI rank.");
141 args.
AddOption(&src_coll_type,
"-st",
"--source-type",
142 "Set the source data collection type. Options:\n" 143 "\t visit: VisItDataCollection (default)\n" 144 "\t sidre or sidre_hdf5: SidreDataCollection\n" 145 "\t json: ConduitDataCollection w/ protocol json\n" 146 "\t conduit_json: ConduitDataCollection w/ protocol conduit_json\n" 147 "\t conduit_bin: ConduitDataCollection w/ protocol conduit_bin\n" 148 "\t hdf5: ConduitDataCollection w/ protocol hdf5\n" 149 "\t fms: FMSDataCollection w/ protocol ascii\n" 150 "\t fms_json: FMSDataCollection w/ protocol json\n" 151 "\t fms_yaml: FMSDataCollection w/ protocol yaml\n" 152 "\t fms_hdf5: FMSDataCollection w/ protocol hdf5");
153 args.
AddOption(&out_coll_type,
"-ot",
"--output-type",
154 "Set the output data collection type. Options:\n" 155 "\t visit: VisItDataCollection (default)\n" 156 "\t sidre or sidre_hdf5: SidreDataCollection\n" 157 "\t json: ConduitDataCollection w/ protocol json\n" 158 "\t conduit_json: ConduitDataCollection w/ protocol conduit_json\n" 159 "\t conduit_bin: ConduitDataCollection w/ protocol conduit_bin\n" 160 "\t hdf5: ConduitDataCollection w/ protocol hdf5\n" 161 "\t fms: FMSDataCollection w/ protocol ascii\n" 162 "\t fms_json: FMSDataCollection w/ protocol json\n" 163 "\t fms_yaml: FMSDataCollection w/ protocol yaml\n" 164 "\t fms_hdf5: FMSDataCollection w/ protocol hdf5");
171 if (out_pad_digits_cycle < 0)
173 out_pad_digits_cycle = src_pad_digits_cycle;
175 if (out_pad_digits_rank < 0)
177 out_pad_digits_rank = src_pad_digits_rank;
182 std::string(src_coll_type));
185 std::string(out_coll_type));
191 src_dc->
Load(src_cycle);
193 if (src_dc->
Error() != DataCollection::No_Error)
195 mfem::out <<
"Error loading data collection: " 221 for (DataCollection::FieldMapType::const_iterator it = src_fields.begin();
222 it != src_fields.end();
230 if (out_dc->
Error() != DataCollection::No_Error)
232 mfem::out <<
"Error saving data collection: " virtual void SetPadDigitsRank(int digits)
Set the number of digits used for the MPI rank in filenames.
void SetCycle(int c)
Set time cycle (for time-dependent simulations)
int Error() const
Get the current error state.
OutStream err(std::cerr)
Global stream used by the library for standard error output. Initially it uses the same std::streambu...
void PrintOptions(std::ostream &out) const
Print the options.
int main(int argc, char *argv[])
Data collection that uses the Conduit Mesh Blueprint specification.
void PrintUsage(std::ostream &out) const
Print the usage message.
bool Good() const
Return true if the command line options were parsed successfully.
int GetCycle() const
Get time cycle (for time-dependent simulations)
Data collection that uses FMS.
Data collection with Sidre routines following the Conduit mesh blueprint specification.
virtual void RegisterField(const std::string &field_name, GridFunction *gf)
Add a grid function to the collection.
void Parse()
Parse the command-line options. Note that this function expects all the options provided through the ...
virtual void Save()
Save the collection to disk.
Data collection with VisIt I/O routines.
double GetTimeStep() const
Get the simulation time step (for time-dependent simulations)
DataCollection * create_data_collection(const std::string &dc_name, const std::string &dc_type)
void SetTime(double t)
Set physical time (for time-dependent simulations)
const FieldMapType & GetFieldMap() const
Get a const reference to the internal field map.
void SetOwnData(bool o)
Set the ownership of collection data.
OutStream out(std::cout)
Global stream used by the library for standard output. Initially it uses the same std::streambuf as s...
void AddOption(bool *var, const char *enable_short_name, const char *enable_long_name, const char *disable_short_name, const char *disable_long_name, const char *description, bool required=false)
Add a boolean option and set 'var' to receive the value. Enable/disable tags are used to set the bool...
void Disable()
Disable output.
GFieldMap::MapType FieldMapType
void SetTimeStep(double ts)
Set the simulation time step (for time-dependent simulations)
virtual void SetPadDigitsCycle(int digits)
Set the number of digits used for the cycle.
virtual void Load(int cycle_=0)
Load the collection. Not implemented in the base class DataCollection.
Mesh * GetMesh()
Get a pointer to the mesh in the collection.
virtual void SetMesh(Mesh *new_mesh)
Set/change the mesh associated with the collection.
void SetProtocol(const std::string &protocol)
Set the Conduit relay i/o protocol to use.
double GetTime() const
Get physical time (for time-dependent simulations)