45 const std::string &dc_type)
49 if (dc_type ==
"visit")
57 else if ( dc_type ==
"sidre" || dc_type ==
"sidre_hdf5")
62 MFEM_ABORT(
"Must build with MFEM_USE_SIDRE=YES for sidre support.");
65 else if ( dc_type ==
"json" ||
66 dc_type ==
"conduit_json" ||
67 dc_type ==
"conduit_bin" ||
70#ifdef MFEM_USE_CONDUIT
80 MFEM_ABORT(
"Must build with MFEM_USE_CONDUIT=YES for conduit support.");
83 else if ( dc_type.substr(0,3) ==
"fms")
87 std::string::size_type pos = dc_type.find(
"_");
88 if (pos != std::string::npos)
90 std::string fms_protocol(dc_type.substr(pos+1, dc_type.size()-pos-1));
91 fms_dc->SetProtocol(fms_protocol);
95 MFEM_ABORT(
"Must build with MFEM_USE_FMS=YES for FMS support.");
100 MFEM_ABORT(
"Unsupported Data Collection type:" << dc_type);
106int main(
int argc,
char *argv[])
115 const char *src_coll_name = NULL;
116 const char *src_coll_type =
"visit";
118 int src_pad_digits_cycle = 6;
119 int src_pad_digits_rank = 6;
120 const char *out_coll_name = NULL;
121 const char *out_coll_type =
"visit";
122 int out_pad_digits_cycle = -1;
123 int out_pad_digits_rank = -1;
126 args.
AddOption(&src_coll_name,
"-s",
"--source-root-prefix",
127 "Set the source data collection root file prefix.",
true);
128 args.
AddOption(&out_coll_name,
"-o",
"--output-root-prefix",
129 "Set the source data collection root file prefix.",
true);
130 args.
AddOption(&src_cycle,
"-c",
"--cycle",
131 "Set the source cycle index to read.");
132 args.
AddOption(&src_pad_digits_cycle,
"-pdc",
"--pad-digits-cycle",
133 "Number of digits in source cycle.");
134 args.
AddOption(&out_pad_digits_cycle,
"-opdc",
"--out-pad-digits-cycle",
135 "Number of digits in output cycle.");
136 args.
AddOption(&src_pad_digits_rank,
"-pdr",
"--pad-digits-rank",
137 "Number of digits in source MPI rank.");
138 args.
AddOption(&out_pad_digits_rank,
"-opdr",
"--out-pad-digits-rank",
139 "Number of digits in output MPI rank.");
140 args.
AddOption(&src_coll_type,
"-st",
"--source-type",
141 "Set the source data collection type. Options:\n"
142 "\t visit: VisItDataCollection (default)\n"
143 "\t sidre or sidre_hdf5: SidreDataCollection\n"
144 "\t json: ConduitDataCollection w/ protocol json\n"
145 "\t conduit_json: ConduitDataCollection w/ protocol conduit_json\n"
146 "\t conduit_bin: ConduitDataCollection w/ protocol conduit_bin\n"
147 "\t hdf5: ConduitDataCollection w/ protocol hdf5\n"
148 "\t fms: FMSDataCollection w/ protocol ascii\n"
149 "\t fms_json: FMSDataCollection w/ protocol json\n"
150 "\t fms_yaml: FMSDataCollection w/ protocol yaml\n"
151 "\t fms_hdf5: FMSDataCollection w/ protocol hdf5");
152 args.
AddOption(&out_coll_type,
"-ot",
"--output-type",
153 "Set the output data collection type. Options:\n"
154 "\t visit: VisItDataCollection (default)\n"
155 "\t sidre or sidre_hdf5: SidreDataCollection\n"
156 "\t json: ConduitDataCollection w/ protocol json\n"
157 "\t conduit_json: ConduitDataCollection w/ protocol conduit_json\n"
158 "\t conduit_bin: ConduitDataCollection w/ protocol conduit_bin\n"
159 "\t hdf5: ConduitDataCollection w/ protocol hdf5\n"
160 "\t fms: FMSDataCollection w/ protocol ascii\n"
161 "\t fms_json: FMSDataCollection w/ protocol json\n"
162 "\t fms_yaml: FMSDataCollection w/ protocol yaml\n"
163 "\t fms_hdf5: FMSDataCollection w/ protocol hdf5");
170 if (out_pad_digits_cycle < 0)
172 out_pad_digits_cycle = src_pad_digits_cycle;
174 if (out_pad_digits_rank < 0)
176 out_pad_digits_rank = src_pad_digits_rank;
181 std::string(src_coll_type));
184 std::string(out_coll_type));
190 src_dc->
Load(src_cycle);
194 mfem::out <<
"Error loading data collection: "
220 for (DataCollection::FieldMapType::const_iterator it = src_fields.begin();
221 it != src_fields.end();
231 mfem::out <<
"Error saving data collection: "
Data collection that uses the Conduit Mesh Blueprint specification.
void SetProtocol(const std::string &protocol)
Set the Conduit relay i/o protocol to use.
virtual void SetMesh(Mesh *new_mesh)
Set/change the mesh associated with the collection.
int GetCycle() const
Get time cycle (for time-dependent simulations)
void SetTimeStep(real_t ts)
Set the simulation time step (for time-dependent simulations)
virtual void RegisterField(const std::string &field_name, GridFunction *gf)
Add a grid function to the collection.
virtual void SetPadDigitsRank(int digits)
Set the number of digits used for the MPI rank in filenames.
int Error() const
Get the current error state.
void SetCycle(int c)
Set time cycle (for time-dependent simulations)
void SetTime(real_t t)
Set physical time (for time-dependent simulations)
virtual void Load(int cycle_=0)
Load the collection. Not implemented in the base class DataCollection.
real_t GetTimeStep() const
Get the simulation time step (for time-dependent simulations)
const FieldMapType & GetFieldMap() const
Get a const reference to the internal field map.
Mesh * GetMesh()
Get a pointer to the mesh in the collection.
void SetOwnData(bool o)
Set the ownership of collection data.
virtual void Save()
Save the collection to disk.
GFieldMap::MapType FieldMapType
virtual void SetPadDigitsCycle(int digits)
Set the number of digits used for the cycle.
real_t GetTime() const
Get physical time (for time-dependent simulations)
Data collection that uses FMS.
static void Init()
Initialize hypre by calling HYPRE_Init() and set default options. After calling Hypre::Init(),...
static bool Root()
Return true if the rank in MPI_COMM_WORLD is zero.
static void Init(int &argc, char **&argv, int required=default_thread_required, int *provided=nullptr)
Singleton creation with Mpi::Init(argc, argv).
void Parse()
Parse the command-line options. Note that this function expects all the options provided through the ...
void PrintUsage(std::ostream &out) const
Print the usage message.
void PrintOptions(std::ostream &out) const
Print the options.
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...
bool Good() const
Return true if the command line options were parsed successfully.
void Disable()
Disable output.
Data collection with Sidre routines following the Conduit mesh blueprint specification.
Data collection with VisIt I/O routines.
DataCollection * create_data_collection(const std::string &dc_name, const std::string &dc_type)
OutStream out(std::cout)
Global stream used by the library for standard output. Initially it uses the same std::streambuf as s...
OutStream err(std::cerr)
Global stream used by the library for standard error output. Initially it uses the same std::streambu...