From bca4ddca0cfd2cc4892acd76bb047b3fb75efd4d Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Wed, 5 Feb 2025 17:15:57 -0500 Subject: [PATCH 1/3] General cleanup of Material Output system - Fix faulty logic when materials are outputted to different files - Make sure setting outputs = 'all none' results in an error - Confirm that outputs = "exodus", outputs = "all", and outputs = "none" work as expected --- framework/include/outputs/OutputWarehouse.h | 18 ++++++-- framework/src/actions/CheckOutputAction.C | 4 +- framework/src/actions/MaterialOutputAction.C | 28 +++++++++--- framework/src/outputs/OutputWarehouse.C | 45 +++++++++++++++++--- 4 files changed, 78 insertions(+), 17 deletions(-) diff --git a/framework/include/outputs/OutputWarehouse.h b/framework/include/outputs/OutputWarehouse.h index 480ac8c1fc7c..5ae1626ba852 100644 --- a/framework/include/outputs/OutputWarehouse.h +++ b/framework/include/outputs/OutputWarehouse.h @@ -61,8 +61,10 @@ class OutputWarehouse : protected PerfGraphInterface /** * Returns true if the output object exists * @param name The name of the output object for which to test for existence within the warehouse + * @param is_exodus Optional parameter to check if the output object associated with name must be + * Exodus type */ - bool hasOutput(const std::string & name) const; + bool hasOutput(const std::string & name, const bool is_exodus = false) const; /** * Calls the meshChanged method for every output object @@ -117,10 +119,18 @@ class OutputWarehouse : protected PerfGraphInterface /** * Test that the output names exist * @param names A vector of names to check - * This method will produce an error if any of the supplied - * names do not exist in the warehouse. Reserved names are not considered. + * @param is_exodus Optional parameter to check if all output objects associated with names are + * all Exodus type + * This method will produce an error if any of the supplied names do not exist in + * the warehouse. Reserved names are not considered. */ - void checkOutputs(const std::set & names); + void checkOutputs(const std::set & names, const bool is_exodus = false); + + /** + * Returns all output names that have an associated Exodus output object + * @return A set of all output names that have Exodus output objects + */ + const std::set getExodusOutputNames() const; /** * Return an Output object by name diff --git a/framework/src/actions/CheckOutputAction.C b/framework/src/actions/CheckOutputAction.C index ff7432920a05..0fbaba10c9af 100644 --- a/framework/src/actions/CheckOutputAction.C +++ b/framework/src/actions/CheckOutputAction.C @@ -103,8 +103,8 @@ CheckOutputAction::checkMaterialOutput() // Extract the names of the output objects to which the material properties will be exported std::set outputs = mat->getOutputs(); - // Check that the outputs exist - _app.getOutputWarehouse().checkOutputs(outputs); + // Check that the outputs exist, and that they are of Exodus type + _app.getOutputWarehouse().checkOutputs(outputs, /* exodus = */ true); } } diff --git a/framework/src/actions/MaterialOutputAction.C b/framework/src/actions/MaterialOutputAction.C index 0abd7282a170..8d4a9a263bc0 100644 --- a/framework/src/actions/MaterialOutputAction.C +++ b/framework/src/actions/MaterialOutputAction.C @@ -153,12 +153,28 @@ MaterialOutputAction::act() material_names.insert(curr_material_names.begin(), curr_material_names.end()); } } - // If the material object has limited outputs, store the variables associated with the - // output objects - if (!outputs.empty()) - for (const auto & output_name : outputs) - _material_variable_names_map[output_name].insert(_material_variable_names.begin(), - _material_variable_names.end()); + // If the material object has explicitly defined outputs, store the variables associated with + // the output objects + if (outputs.find("none") == outputs.end()) + { + // Get all available Exodus output names from OutputWarehouse + const auto & all_output_names = _output_warehouse.getExodusOutputNames(); + + // For reserved name "all", set outputs to match all avialable Exodus output names + if (outputs.find("all") != outputs.end()) + outputs = all_output_names; + + // Iterate through all available Exodus output names and update _material_variable_names_map + // based on which of these output names are found in 'outputs' parameter + for (const auto & output_name : all_output_names) + { + if (outputs.find(output_name) != outputs.end()) + _material_variable_names_map[output_name].insert(_material_variable_names.begin(), + _material_variable_names.end()); + else + _material_variable_names_map[output_name].insert({}); + } + } } } if (unsupported_names.size() > 0 && get_names_only && diff --git a/framework/src/outputs/OutputWarehouse.C b/framework/src/outputs/OutputWarehouse.C index f3385694df20..625efe0f975b 100644 --- a/framework/src/outputs/OutputWarehouse.C +++ b/framework/src/outputs/OutputWarehouse.C @@ -120,9 +120,18 @@ OutputWarehouse::addOutput(std::shared_ptr const output) } bool -OutputWarehouse::hasOutput(const std::string & name) const +OutputWarehouse::hasOutput(const std::string & name, const bool is_exodus) const { - return _object_map.find(name) != _object_map.end(); + const auto found_object = _object_map.find(name) != _object_map.end(); + if (!is_exodus || !found_object) + return found_object; + else + { + // This condition is met if output object was found and is_exodus is true + // Check if output object can be typecast to Exodus + auto * exodus = dynamic_cast(_object_map.at(name)); + return (exodus != NULL); + } } const std::set & @@ -314,11 +323,37 @@ OutputWarehouse::buildInterfaceHideVariables(const std::string & output_name, } void -OutputWarehouse::checkOutputs(const std::set & names) +OutputWarehouse::checkOutputs(const std::set & names, const bool is_exodus) { + std::string reserved_name = ""; for (const auto & name : names) - if (!isReservedName(name) && !hasOutput(name)) - mooseError("The output object '", name, "' is not a defined output object"); + { + const bool is_reserved_name = isReservedName(name); + if (is_reserved_name) + reserved_name = name; + if (!is_reserved_name && !hasOutput(name, is_exodus)) + mooseError("The output object '", + name, + "' is not a defined ", + (is_exodus ? "Exodus " : ""), + "output object"); + } + if (!reserved_name.empty() && names.size() > 1) + mooseError("When setting output name to reserved name '" + reserved_name + + "', only one entry is allowed in outputs parameter."); +} + +const std::set +OutputWarehouse::getExodusOutputNames() const +{ + std::set exodus_output_names; + for (const auto & pair : _object_map) + { + auto * exodus = dynamic_cast(pair.second); + if (exodus != NULL) + exodus_output_names.insert(pair.first); + } + return exodus_output_names; } const std::set & From 53e8f135c5440a721bb11309e0a77d1b1da02c4b Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Thu, 6 Feb 2025 08:20:01 -0500 Subject: [PATCH 2/3] Add unit tests for checking expected behavior in presence of multiple output files and expected error messages with outputs parameter --- .../materials/output/block_via_outputs.i | 32 +++---- ..._exodus1.e => output_exodus1_mat_block1.e} | Bin .../gold/output_exodus1_mat_block1_with_var.e | Bin 0 -> 59764 bytes .../output/gold/output_exodus1_mat_both.e | Bin 0 -> 60844 bytes .../output/gold/output_exodus2_mat_block1.e | Bin 0 -> 58540 bytes ..._exodus2.e => output_exodus2_mat_block2.e} | Bin .../output/gold/output_exodus2_varonly.e | Bin 0 -> 58748 bytes .../materials/output/limited_via_outputs.i | 28 +++--- test/tests/materials/output/output.i | 24 ++--- .../materials/output/output_block_displaced.i | 44 +++++----- test/tests/materials/output/output_boundary.i | 30 +++---- .../materials/output/output_multiple_files.i | 36 ++++---- test/tests/materials/output/output_steady.i | 24 ++--- .../materials/output/output_via_outputs.i | 28 +++--- test/tests/materials/output/output_warning.i | 24 ++--- test/tests/materials/output/tests | 82 ++++++++++++++++-- 16 files changed, 211 insertions(+), 141 deletions(-) rename test/tests/materials/output/gold/{output_multiple_files_exodus1.e => output_exodus1_mat_block1.e} (100%) create mode 100644 test/tests/materials/output/gold/output_exodus1_mat_block1_with_var.e create mode 100644 test/tests/materials/output/gold/output_exodus1_mat_both.e create mode 100644 test/tests/materials/output/gold/output_exodus2_mat_block1.e rename test/tests/materials/output/gold/{output_multiple_files_exodus2.e => output_exodus2_mat_block2.e} (100%) create mode 100644 test/tests/materials/output/gold/output_exodus2_varonly.e diff --git a/test/tests/materials/output/block_via_outputs.i b/test/tests/materials/output/block_via_outputs.i index f70d0c66c3a5..6fc04f68db1e 100644 --- a/test/tests/materials/output/block_via_outputs.i +++ b/test/tests/materials/output/block_via_outputs.i @@ -6,48 +6,48 @@ [] [Variables] - [./u] - [../] + [u] + [] [] [Kernels] - [./diff] + [diff] type = CoefDiffusion variable = u coef = 10 - [../] - [./time] + [] + [time] type = TimeDerivative variable = u - [../] + [] [] [BCs] - [./left] + [left] type = DirichletBC variable = u boundary = 1 value = 0 - [../] - [./right] + [] + [right] type = DirichletBC variable = u boundary = 2 value = 1 - [../] + [] [] [Materials] - [./block_1] + [block_1] type = OutputTestMaterial block = 1 variable = u - [../] - [./block_2] + [] + [block_2] type = OutputTestMaterial block = 2 variable = u - [../] + [] [] [Executioner] @@ -60,9 +60,9 @@ [] [Outputs] - [./out] + [out] type = Exodus output_material_properties = true show_material_properties = real_property - [../] + [] [] diff --git a/test/tests/materials/output/gold/output_multiple_files_exodus1.e b/test/tests/materials/output/gold/output_exodus1_mat_block1.e similarity index 100% rename from test/tests/materials/output/gold/output_multiple_files_exodus1.e rename to test/tests/materials/output/gold/output_exodus1_mat_block1.e diff --git a/test/tests/materials/output/gold/output_exodus1_mat_block1_with_var.e b/test/tests/materials/output/gold/output_exodus1_mat_block1_with_var.e new file mode 100644 index 0000000000000000000000000000000000000000..dae9ef79c392b9c1f3db971dc83dc2a15d06eccf GIT binary patch literal 59764 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 Q{}FwCP60Hf8ow$1KmTS*hX4Qo literal 0 HcmV?d00001 diff --git a/test/tests/materials/output/gold/output_exodus1_mat_both.e b/test/tests/materials/output/gold/output_exodus1_mat_both.e new file mode 100644 index 0000000000000000000000000000000000000000..4ddde0d30fee84b06d39e4378c053003ba224a56 GIT binary patch literal 60844 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 BU5Wqz literal 0 HcmV?d00001 diff --git a/test/tests/materials/output/gold/output_multiple_files_exodus2.e b/test/tests/materials/output/gold/output_exodus2_mat_block2.e similarity index 100% rename from test/tests/materials/output/gold/output_multiple_files_exodus2.e rename to test/tests/materials/output/gold/output_exodus2_mat_block2.e diff --git a/test/tests/materials/output/gold/output_exodus2_varonly.e b/test/tests/materials/output/gold/output_exodus2_varonly.e new file mode 100644 index 0000000000000000000000000000000000000000..b62a7012d766dd4e46295021991701aa2e433604 GIT binary patch literal 58748 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 literal 0 HcmV?d00001 diff --git a/test/tests/materials/output/limited_via_outputs.i b/test/tests/materials/output/limited_via_outputs.i index 4400b7f58022..f3383b642118 100644 --- a/test/tests/materials/output/limited_via_outputs.i +++ b/test/tests/materials/output/limited_via_outputs.i @@ -9,43 +9,43 @@ [] [Variables] - [./u] - [../] + [u] + [] [] [Kernels] - [./diff] + [diff] type = CoefDiffusion variable = u coef = 10 - [../] - [./time] + [] + [time] type = TimeDerivative variable = u - [../] + [] [] [BCs] - [./left] + [left] type = DirichletBC variable = u boundary = left value = 0 - [../] - [./right] + [] + [right] type = DirichletBC variable = u boundary = right value = 1 - [../] + [] [] [Materials] - [./test_material] + [test_material] type = OutputTestMaterial block = 0 variable = u - [../] + [] [] [Executioner] @@ -58,9 +58,9 @@ [] [Outputs] - [./out] + [out] type = Exodus output_material_properties = true show_material_properties = 'real_property vector_property' - [../] + [] [] diff --git a/test/tests/materials/output/output.i b/test/tests/materials/output/output.i index 10343c8616ce..bfd90805d8b8 100644 --- a/test/tests/materials/output/output.i +++ b/test/tests/materials/output/output.i @@ -9,44 +9,44 @@ [] [Variables] - [./u] - [../] + [u] + [] [] [Kernels] - [./diff] + [diff] type = CoefDiffusion variable = u coef = 10 - [../] - [./time] + [] + [time] type = TimeDerivative variable = u - [../] + [] [] [BCs] - [./left] + [left] type = DirichletBC variable = u boundary = left value = 0 - [../] - [./right] + [] + [right] type = DirichletBC variable = u boundary = right value = 1 - [../] + [] [] [Materials] - [./test_material] + [test_material] type = OutputTestMaterial block = 0 variable = u outputs = all - [../] + [] [] [Executioner] diff --git a/test/tests/materials/output/output_block_displaced.i b/test/tests/materials/output/output_block_displaced.i index f593a5b7c813..5cef7a040d84 100644 --- a/test/tests/materials/output/output_block_displaced.i +++ b/test/tests/materials/output/output_block_displaced.i @@ -7,72 +7,72 @@ [] [Functions] - [./disp_fn] + [disp_fn] type = ParsedFunction expression = x - [../] + [] [] [AuxVariables] - [./disp] - [../] + [disp] + [] [] [AuxKernels] - [./disp_ak] + [disp_ak] type = FunctionAux variable = disp function = disp_fn - [../] + [] [] [Variables] - [./u] - [../] + [u] + [] [] [Kernels] - [./diff] + [diff] type = CoefDiffusion variable = u coef = 0.5 - [../] - [./time] + [] + [time] type = TimeDerivative variable = u - [../] + [] [] [BCs] - [./left] + [left] type = DirichletBC variable = u boundary = 1 value = 0 - [../] - [./right] + [] + [right] type = DirichletBC variable = u boundary = 2 value = 2 - [../] + [] [] [Materials] - [./block_1] + [block_1] type = OutputTestMaterial block = 1 output_properties = 'real_property tensor_property' outputs = exodus variable = u - [../] - [./block_2] + [] + [block_2] type = OutputTestMaterial block = 2 output_properties = 'vector_property tensor_property' outputs = exodus variable = u - [../] + [] [] [Executioner] @@ -85,9 +85,9 @@ [] [Outputs] - [./exodus] + [exodus] type = Exodus use_displaced = true sequence = false - [../] + [] [] diff --git a/test/tests/materials/output/output_boundary.i b/test/tests/materials/output/output_boundary.i index 9e5889d8a4aa..7530ec406871 100644 --- a/test/tests/materials/output/output_boundary.i +++ b/test/tests/materials/output/output_boundary.i @@ -6,61 +6,61 @@ [] [Variables] - [./u] + [u] [../] [] [Kernels] - [./diff] + [diff] type = CoefDiffusion variable = u coef = 1 - [../] - [./time] + [] + [time] type = TimeDerivative variable = u - [../] + [] [] [BCs] - [./left] + [left] type = DirichletBC variable = u boundary = 1 value = 0 - [../] - [./right] + [] + [right] type = DirichletBC variable = u boundary = 2 value = 1 - [../] + [] [] [Materials] - [./block] + [block] type = OutputTestMaterial block = '1 2' output_properties = tensor_property variable = u outputs = exodus - [../] - [./boundary_1] + [] + [boundary_1] type = OutputTestMaterial boundary = 1 output_properties = real_property outputs = exodus variable = u real_factor = 2 - [../] - [./boundary_2] + [] + [boundary_2] type = OutputTestMaterial boundary = 2 output_properties = 'real_property vector_property' real_factor = 2 variable = u outputs = exodus - [../] + [] [] [Executioner] diff --git a/test/tests/materials/output/output_multiple_files.i b/test/tests/materials/output/output_multiple_files.i index 3bedf4555936..3c5d6ba0b6bf 100644 --- a/test/tests/materials/output/output_multiple_files.i +++ b/test/tests/materials/output/output_multiple_files.i @@ -5,52 +5,52 @@ [] [Variables] - [./u] - [../] + [u] + [] [] [Kernels] - [./diff] + [diff] type = CoefDiffusion variable = u coef = 0.5 - [../] - [./time] + [] + [time] type = TimeDerivative variable = u - [../] + [] [] [BCs] - [./left] + [left] type = DirichletBC variable = u boundary = 1 value = 0 - [../] - [./right] + [] + [right] type = DirichletBC variable = u boundary = 2 value = 1 - [../] + [] [] [Materials] - [./block_1] + [block_1] type = OutputTestMaterial block = 1 output_properties = 'real_property' outputs = exodus1 variable = u - [../] - [./block_2] + [] + [block_2] type = OutputTestMaterial block = 2 output_properties = 'vector_property' outputs = exodus2 variable = u - [../] + [] [] [Executioner] @@ -63,12 +63,12 @@ [] [Outputs] - [./exodus1] + [exodus1] type = Exodus hide = u - [../] - [./exodus2] + [] + [exodus2] type = Exodus hide = u - [../] + [] [] diff --git a/test/tests/materials/output/output_steady.i b/test/tests/materials/output/output_steady.i index 690379e118b6..ddc8e9c179a4 100644 --- a/test/tests/materials/output/output_steady.i +++ b/test/tests/materials/output/output_steady.i @@ -6,49 +6,49 @@ [] [Variables] - [./u] - [../] + [u] + [] [] [Functions] - [./bc_func] + [bc_func] type = ParsedFunction expression = 0.5*y - [../] + [] [] [Kernels] - [./diff] + [diff] type = CoefDiffusion variable = u block = 0 coef = 0.1 - [../] + [] [] [BCs] - [./left] + [left] type = FunctionDirichletBC variable = u boundary = left function = bc_func - [../] - [./right] + [] + [right] type = DirichletBC variable = u boundary = right value = 1 - [../] + [] [] [Materials] - [./k] + [k] type = OutputTestMaterial block = 0 outputs = all variable = u output_properties = 'real_property vector_property tensor_property' - [../] + [] [] [Executioner] diff --git a/test/tests/materials/output/output_via_outputs.i b/test/tests/materials/output/output_via_outputs.i index 1e9f76ac884f..165ec12e906a 100644 --- a/test/tests/materials/output/output_via_outputs.i +++ b/test/tests/materials/output/output_via_outputs.i @@ -9,43 +9,43 @@ [] [Variables] - [./u] - [../] + [u] + [] [] [Kernels] - [./diff] + [diff] type = CoefDiffusion variable = u coef = 10 - [../] - [./time] + [] + [time] type = TimeDerivative variable = u - [../] + [] [] [BCs] - [./left] + [left] type = DirichletBC variable = u boundary = left value = 0 - [../] - [./right] + [] + [right] type = DirichletBC variable = u boundary = right value = 1 - [../] + [] [] [Materials] - [./test_material] + [test_material] type = OutputTestMaterial block = 0 variable = u - [../] + [] [] [Executioner] @@ -58,8 +58,8 @@ [] [Outputs] - [./out] + [out] type = Exodus output_material_properties = true - [../] + [] [] diff --git a/test/tests/materials/output/output_warning.i b/test/tests/materials/output/output_warning.i index 8bd0a87024b5..dde0ea94ff5e 100644 --- a/test/tests/materials/output/output_warning.i +++ b/test/tests/materials/output/output_warning.i @@ -9,45 +9,45 @@ [] [Variables] - [./u] - [../] + [u] + [] [] [Kernels] - [./diff] + [diff] type = CoefDiffusion variable = u coef = 10 - [../] - [./time] + [] + [time] type = TimeDerivative variable = u - [../] + [] [] [BCs] - [./left] + [left] type = DirichletBC variable = u boundary = left value = 0 - [../] - [./right] + [] + [right] type = DirichletBC variable = u boundary = right value = 1 - [../] + [] [] [Materials] - [./test_material] + [test_material] type = OutputTestMaterial block = 0 variable = u stdvector_property_name = vec outputs = all - [../] + [] [] [Executioner] diff --git a/test/tests/materials/output/tests b/test/tests/materials/output/tests index 68ec7760609a..89996077e476 100644 --- a/test/tests/materials/output/tests +++ b/test/tests/materials/output/tests @@ -68,9 +68,53 @@ [multiple_files] type = Exodiff input = output_multiple_files.i - exodiff = 'output_multiple_files_exodus1.e output_multiple_files_exodus2.e' - - detail = 'outputting certain properties within the material definition to different files; and' + exodiff = 'output_exodus1_mat_block1.e output_exodus2_mat_block2.e' + cli_args = "Outputs/exodus1/file_base='output_exodus1_mat_block1' + Outputs/exodus2/file_base='output_exodus2_mat_block2'" + detail = 'outputting certain properties within the material definition to different files;' + [] + [multiple_materials_single_file] + type = Exodiff + input = output_multiple_files.i + exodiff = 'output_exodus1_mat_both.e output_exodus2_varonly.e' + cli_args = "Materials/block_2/outputs=exodus1 + Outputs/exodus1/file_base='output_exodus1_mat_both' + Outputs/exodus2/file_base='output_exodus2_varonly' + Outputs/exodus2/hide=''" + detail = 'outputting certain properties within the material definition to a single file in the presence of multiple output files;' + [] + [multiple_files_output_exodus] + type = Exodiff + input = output_multiple_files.i + exodiff = 'output_exodus1_mat_block1_with_var.e output_exodus2_varonly.e' + cli_args = "Materials/block_1/outputs=exodus + Materials/block_2/outputs=none + Outputs/inactive=exodus1 + Outputs/exodus=true + Outputs/file_base=output_exodus1_mat_block1_with_var + Outputs/exodus2/file_base=output_exodus2_varonly + Outputs/exodus2/hide=''" + detail = 'outputting certain properties within the material definition to a single file using the "exodus" keyword in the presence of multiple output files;' + [] + [multiple_files_output_all] + type = Exodiff + input = output_multiple_files.i + exodiff = 'output_exodus1_mat_block1.e output_exodus2_mat_block1.e' + cli_args = "Materials/block_1/outputs=all + Materials/block_2/outputs=none + Outputs/exodus1/file_base=output_exodus1_mat_block1 + Outputs/exodus2/file_base=output_exodus2_mat_block1" + detail = 'outputting certain properties within the material definition to a single file using the "all" keyword in the presence of multiple output files;' + [] + [multiple_files_output_explicit] + type = Exodiff + input = output_multiple_files.i + exodiff = 'output_exodus1_mat_block1.e output_exodus2_mat_block1.e' + cli_args = "Materials/block_1/outputs='exodus1 exodus2' + Materials/block_2/outputs=none + Outputs/exodus1/file_base=output_exodus1_mat_block1 + Outputs/exodus2/file_base=output_exodus2_mat_block1" + detail = 'outputting certain properties within the material definition to multiple files by explicitly specifying multiple output names; and' [] [steady] type = Exodiff @@ -99,15 +143,41 @@ cli_args = "AuxVariables/real_property/order=CONSTANT AuxVariables/real_property/family=MONOMIAL" requirement = "The system shall report an error if an existing variable shares the same name as an auxiliary variable used for material output" [] - [invalid_outputs] + [invalid_material_outputs] type = RunException input = output.i - expect_err = "The output object 'garbage' is not a defined output object" - cli_args = 'Outputs/exodus=false Materials/test_material/outputs=garbage' + expect_err = "The output object 'garbage' is not a defined Exodus output object" + cli_args = 'Materials/test_material/outputs=garbage' requirement = "The system shall report an error if the supplied output options for material data output " "are not consistent with the list of available outputs." [] + [invalid_material_output_exodus] + type = RunException + input = output.i + expect_err = "The output object 'exodus' is not a defined Exodus output object" + cli_args = 'Materials/test_material/outputs=exodus Outputs/exodus=false' + + requirement = "The system shall report an error if the 'exodus' output option for material data output " + "is invoked when Outputs/exodus=false" + [] + [invalid_material_output_nonexodus] + type = RunException + input = output.i + expect_err = "The output object 'console' is not a defined Exodus output object" + cli_args = 'Materials/test_material/outputs=console' + + requirement = "The system shall report an error if the output option for material data output " + "is not of an Exodus output object" + [] + [invalid_output_multiple_reserved_names] + type = RunException + input = output.i + expect_err = "When setting output name to reserved name 'none', only one entry is allowed in outputs parameter" + cli_args = "Materials/test_material/outputs='none exodus'" + + requirement = "The system shall report an error if multiple output values are provided and one of those values is a reserved name" + [] [warn_unsupported_types] type = RunApp input = output_warning.i From 8c8a5812b80848bf702af94fbfddd380338577f5 Mon Sep 17 00:00:00 2001 From: Shikhar Kumar Date: Thu, 6 Feb 2025 09:46:10 -0500 Subject: [PATCH 3/3] Update documentation on Materials output system, refs #29816, #29787, #29781, #29780, #29819 --- framework/doc/content/syntax/Materials/index.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/framework/doc/content/syntax/Materials/index.md b/framework/doc/content/syntax/Materials/index.md index 59a7d4eb6778..c3fbf56afd2c 100644 --- a/framework/doc/content/syntax/Materials/index.md +++ b/framework/doc/content/syntax/Materials/index.md @@ -207,7 +207,14 @@ vector or tensor value. ## Material Property Output Output of `Material` properties is enabled by setting the "outputs" parameter. The following example -creates two additional variables called "mat1" and "mat2" that will show up in the output file. +creates two additional variables called "mat1" and "mat2" that will show up in the output file. In this +example, the `exodus` name is a special keyword used to signal to MOOSE that the material properties +should be outputted to the output object created when setting `Outputs/exodus=true`. If multiple output +Exodus objects exist in the `[Outputs]` block, one or more names can be provided to the "outputs" +parameter. In addition, the reserved output name `all` can be used to output the material property to +all Exodus objects in the `[Outputs]` block, while the reserved output name `none` can be used to +prevent the material property from being outputted to any Exodus output object. If `all` or `none` +is specified in the outputs parameter, no other additional names should be specified. !listing output_block.i block=Materials Outputs