25 "Name of single image file to extract mesh parameters from. "
26 "If provided, a 2D mesh is created.");
27 params.
addParam<FileNameNoExtension>(
"file_base",
28 "Image file base to open, use this option when "
29 "a stack of images must be read (ignored if "
31 params.
addParam<std::vector<unsigned int>>(
33 "Range of images to analyze, used with 'file_base' (ignored if 'file' is given)");
34 params.
addParam<std::string>(
"file_suffix",
"Suffix of the file to open, e.g. 'png'");
46 std::string file_base;
47 std::vector<unsigned int> file_range;
51 file = params.get<FileName>(
"file");
57 file_base = params.get<FileNameNoExtension>(
"file_base");
59 file_range = params.get<std::vector<unsigned int>>(
"file_range");
66 if (has_file && has_file_base)
73 if (!has_file && !has_file_base)
80 if (has_file_base && !has_file_suffix)
87 if (has_file && has_file_range)
88 mooseWarning(
"Warning: file_range was ignored since a filename was provided.");
91 if (has_file_base && !has_file_range)
93 file_range.push_back(0);
94 file_range.push_back(std::numeric_limits<unsigned int>::max());
100 if (has_file_range && file_range.size() == 1)
101 file_range.push_back(file_range[0]);
105 if (has_file_range && file_range.size() != 2)
107 mooseWarning(
"A maximum of two values are allowed in the file_range, extra values truncated.");
108 file_range.resize(2);
112 std::sort(file_range.begin(), file_range.end());
118 else if (has_file_base)
125 tinydir_open_sorted(&dir, split_file.first.c_str());
128 std::ostringstream oss;
129 oss <<
"(" << split_file.second <<
".*?(\\d+))\\..*";
130 pcrecpp::RE file_base_and_num_regex(oss.str());
133 for (
int i = 0; i < dir.n_files; i++)
137 tinydir_readfile_n(&dir, &file, i);
142 std::string the_base;
143 unsigned int file_num = 0;
144 file_base_and_num_regex.FullMatch(file.name, &the_base, &file_num);
146 if (!the_base.empty() && file_num >= file_range[0] && file_num <= file_range[1])
147 _filenames.push_back(split_file.first +
"/" + file.name);
167 mooseError(
"Cannot provide both file and file_base parameters");
170 mooseError(
"You must provide a valid value for either the 'file' parameter or the "
171 "'file_base' parameter.");
175 "If you provide a 'file_base', you must also provide a valid 'file_suffix', e.g. 'png'.");