From 20309b496b2ac524b703da0ec41e43bd60281517 Mon Sep 17 00:00:00 2001 From: Alexander Blair Date: Wed, 24 Apr 2024 21:17:57 +0100 Subject: [PATCH] Add initial files from Apollo --- .clang-format | 31 + .clang-tidy | 15 + .gitignore | 254 + .gitlab-ci.yml | 140 + .gitmodules | 6 + .pre-commit-config.yaml | 11 + Makefile | 67 + README.md | 2 +- contrib/hephaestus | 1 + contrib/hephaestus.mk | 29 + doc/config.yml | 24 + doc/content/index.md | 3 + doc/moosedocs.py | 29 + docker/platypus-deps/Dockerfile | 47 + docker/platypus/Dockerfile | 39 + include/actions/AddCoefficientAction.h | 20 + include/actions/AddFESpaceAction.h | 20 + include/actions/AddFormulationAction.h | 20 + include/actions/AddVectorCoefficientAction.h | 20 + include/auxkernels/MFEMAuxSolver.h | 25 + include/auxkernels/MFEMJouleHeatingAux.h | 78 + .../VectorVariableFromComponentsAux.h | 29 + .../VectorVariableToComponentsAux.h | 17 + include/auxkernels/WritableVectorAuxKernel.h | 24 + include/base/PlatypusApp.h | 17 + include/bcs/MFEMBoundaryCondition.h | 31 + include/bcs/MFEMComplexVectorDirichletBC.h | 22 + include/bcs/MFEMScalarDirichletBC.h | 21 + include/bcs/MFEMVectorDirichletBC.h | 21 + include/bcs/MFEMVectorNormalIntegratedBC.h | 21 + include/coefficients/MFEMCoefficient.h | 25 + .../coefficients/MFEMConstantCoefficient.h | 22 + .../coefficients/MFEMFunctionCoefficient.h | 21 + include/coefficients/MFEMParsedCoefficient.h | 16 + .../coefficients/MFEMParsedCoefficientBase.h | 27 + .../MFEMParsedCoefficientHelper.h | 86 + ...MFEMVariableDependentFunctionCoefficient.h | 28 + include/coefficients/MFEMVectorCoefficient.h | 24 + .../MFEMVectorConstantCoefficient.h | 24 + .../MFEMVectorFunctionCoefficient.h | 24 + include/fespaces/MFEMFESpace.h | 23 + include/formulations/CustomFormulation.h | 22 + include/formulations/MFEMFormulation.h | 23 + include/kernels/MFEMBilinearFormKernel.h | 20 + include/kernels/MFEMDiffusionKernel.h | 25 + include/kernels/MFEMLinearFormKernel.h | 20 + include/materials/MFEMMaterial.h | 22 + include/mesh/CoupledMFEMMesh.h | 174 + include/mesh/CubitElementInfo.h | 215 + include/mesh/ExclusiveMFEMMesh.h | 95 + include/mesh/MFEMMesh.h | 162 + include/mesh/MFEMParMesh.h | 17 + include/outputs/MFEMDataCollection.h | 20 + include/outputs/MFEMParaViewDataCollection.h | 21 + include/outputs/MFEMVisItDataCollection.h | 21 + .../ElementVectorL2Difference.h | 24 + include/problem/MFEMProblem.h | 182 + include/utils/PlatypusUtils.h | 32 + include/variables/MFEMVariable.h | 20 + platypus.mk | 4 + platypus.yaml | 9 + run_tests | 12 + scripts/build-platypus-csd3-cclake.sh | 165 + scripts/build-platypus-csd3-sapphire.sh | 287 + scripts/install-format-hook.sh | 26 + src/actions/AddCoefficientAction.C | 24 + src/actions/AddFESpaceAction.C | 24 + src/actions/AddFormulationAction.C | 24 + src/actions/AddVectorCoefficientAction.C | 24 + src/auxkernels/MFEMAuxSolver.C | 19 + src/auxkernels/MFEMJouleHeatingAux.C | 28 + .../VectorVariableFromComponentsAux.C | 80 + .../VectorVariableToComponentsAux.C | 30 + src/auxkernels/WritableVectorAuxKernel.C | 14 + src/base/PlatypusApp.C | 96 + src/bcs/MFEMBoundaryCondition.C | 31 + src/bcs/MFEMComplexVectorDirichletBC.C | 33 + src/bcs/MFEMScalarDirichletBC.C | 20 + src/bcs/MFEMVectorDirichletBC.C | 22 + src/bcs/MFEMVectorNormalIntegratedBC.C | 26 + src/coefficients/MFEMCoefficient.C | 23 + src/coefficients/MFEMConstantCoefficient.C | 19 + src/coefficients/MFEMFunctionCoefficient.C | 21 + src/coefficients/MFEMParsedCoefficient.C | 24 + src/coefficients/MFEMParsedCoefficientBase.C | 50 + .../MFEMParsedCoefficientHelper.C | 163 + ...MFEMVariableDependentFunctionCoefficient.C | 33 + src/coefficients/MFEMVectorCoefficient.C | 18 + .../MFEMVectorConstantCoefficient.C | 23 + .../MFEMVectorFunctionCoefficient.C | 28 + src/fespaces/MFEMFESpace.C | 48 + src/formulations/CustomFormulation.C | 18 + src/formulations/MFEMFormulation.C | 17 + src/kernels/MFEMBilinearFormKernel.C | 19 + src/kernels/MFEMDiffusionKernel.C | 25 + src/kernels/MFEMLinearFormKernel.C | 21 + src/main.C | 27 + src/materials/MFEMMaterial.C | 24 + src/mesh/CoupledMFEMMesh.C | 566 + src/mesh/CubitElementInfo.C | 419 + src/mesh/ExclusiveMFEMMesh.C | 93 + src/mesh/MFEMMesh.C | 624 + src/mesh/MFEMParMesh.C | 9 + src/outputs/MFEMDataCollection.C | 21 + src/outputs/MFEMParaViewDataCollection.C | 41 + src/outputs/MFEMVisItDataCollection.C | 30 + .../ElementVectorL2Difference.C | 76 + src/problem/MFEMProblem.C | 632 + src/variables/MFEMVariable.C | 44 + syntax.yaml | 77039 ++++++++++++++++ test/include/base/PlatypusTestApp.h | 16 + test/src/base/PlatypusTestApp.C | 54 + test/src/base/StorkTestApp.C.module | 53 + ...ector_variable_from_components_aux_out.csv | 3 + ..._vector_variable_to_components_aux_out.csv | 3 + ...ector_variable_from_components_aux_out.csv | 3 + ..._vector_variable_to_components_aux_out.csv | 3 + ...ange_vector_variable_from_components_aux.i | 119 + ...grange_vector_variable_to_components_aux.i | 137 + ...mial_vector_variable_from_components_aux.i | 119 + ...nomial_vector_variable_to_components_aux.i | 137 + test/tests/unit/auxkernels/tests | 30 + test/tests/unit/kernels/diffusion_master.i | 86 + test/tests/unit/kernels/diffusion_mfem.i | 87 + .../kernels/gold/diffusion_master_out.csv | 3 + test/tests/unit/kernels/gold/mug.e | Bin 0 -> 226076 bytes test/tests/unit/kernels/tests | 9 + .../unit/outputs/gold/simple-cube-tet10.e | Bin 0 -> 36744 bytes test/tests/unit/outputs/output_master.i | 75 + test/tests/unit/outputs/output_mfem.i | 76 + test/tests/unit/outputs/tests | 14 + .../lagrange_vector_l2_difference_out.csv | 3 + .../monomial_vector_l2_difference_out.csv | 3 + .../lagrange_vector_l2_difference.i | 96 + .../monomial_vector_l2_difference.i | 97 + test/tests/unit/postprocessors/tests | 16 + .../unit/transfers/gold/cylinder-hex-q2.e | Bin 0 -> 118356 bytes test/tests/unit/transfers/gold/cylinder_fo.e | Bin 0 -> 363292 bytes .../gold/elemental_var_coupled_out.e | Bin 0 -> 146140 bytes .../transfers/gold/fo_nodal_var_coupled_out.e | Bin 0 -> 386640 bytes .../transfers/gold/nodal_var_coupled_out.e | Bin 0 -> 181064 bytes .../gold/pull_hex27_transfer_master_out.csv | 3 + .../gold/pull_hex8_transfer_master_out.csv | 3 + ...lti_element_order1_transfer_master_out.csv | 3 + ...lti_element_order2_transfer_master_out.csv | 3 + .../pull_pyramid5_transfer_master_out.csv | 3 + .../gold/pull_tet10_transfer_master_out.csv | 3 + .../gold/pull_tet4_transfer_master_out.csv | 3 + .../gold/pull_wedge18_transfer_master_out.csv | 3 + .../gold/pull_wedge6_transfer_master_out.csv | 3 + .../push_pull_hex27_transfer_master_out.csv | 3 + .../push_pull_hex8_transfer_master_out.csv | 3 + ...order1_distributed_transfer_master_out.csv | 3 + ...nt_order1_monomial_transfer_master_out.csv | 3 + ...lti_element_order1_transfer_master_out.csv | 3 + ...order2_distributed_transfer_master_out.csv | 3 + ...lti_element_order2_transfer_master_out.csv | 3 + ...push_pull_pyramid5_transfer_master_out.csv | 3 + .../push_pull_tet10_transfer_master_out.csv | 3 + .../push_pull_tet4_transfer_master_out.csv | 3 + ...edge18_distributed_transfer_master_out.csv | 3 + .../push_pull_wedge18_transfer_master_out.csv | 3 + .../push_pull_wedge6_transfer_master_out.csv | 3 + .../unit/transfers/gold/simple-cube-hex27.e | Bin 0 -> 17812 bytes .../unit/transfers/gold/simple-cube-hex8.e | Bin 0 -> 7372 bytes .../gold/simple-cube-multi-element-order1.e | Bin 0 -> 69560 bytes .../gold/simple-cube-multi-element-order2.e | Bin 0 -> 52380 bytes .../transfers/gold/simple-cube-pyramid5.e | Bin 0 -> 36056 bytes .../unit/transfers/gold/simple-cube-tet10.e | Bin 0 -> 36744 bytes .../unit/transfers/gold/simple-cube-tet4.e | Bin 0 -> 15400 bytes .../unit/transfers/gold/simple-cube-wedge18.e | Bin 0 -> 58332 bytes .../unit/transfers/gold/simple-cube-wedge6.e | Bin 0 -> 19556 bytes .../transfers/pull_hex27_transfer_master.i | 73 + .../transfers/pull_hex27_transfer_sub_app.i | 43 + .../transfers/pull_hex8_transfer_master.i | 73 + .../transfers/pull_hex8_transfer_sub_app.i | 43 + ...ull_multi_element_order1_transfer_master.i | 73 + ...ll_multi_element_order1_transfer_sub_app.i | 43 + ...ull_multi_element_order2_transfer_master.i | 73 + ...ll_multi_element_order2_transfer_sub_app.i | 43 + .../transfers/pull_pyramid5_transfer_master.i | 73 + .../pull_pyramid5_transfer_sub_app.i | 43 + .../transfers/pull_tet10_transfer_master.i | 73 + .../transfers/pull_tet10_transfer_sub_app.i | 43 + .../transfers/pull_tet4_transfer_master.i | 73 + .../transfers/pull_tet4_transfer_sub_app.i | 43 + .../transfers/pull_wedge18_transfer_master.i | 73 + .../transfers/pull_wedge18_transfer_sub_app.i | 43 + .../transfers/pull_wedge6_transfer_master.i | 73 + .../transfers/pull_wedge6_transfer_sub_app.i | 43 + .../push_pull_hex27_transfer_master.i | 80 + .../push_pull_hex27_transfer_sub_app.i | 35 + .../push_pull_hex8_transfer_master.i | 80 + .../push_pull_hex8_transfer_sub_app.i | 35 + ...ement_order1_distributed_transfer_master.i | 81 + ...ment_order1_distributed_transfer_sub_app.i | 36 + ..._element_order1_monomial_transfer_master.i | 80 + ...element_order1_monomial_transfer_sub_app.i | 35 + ...ull_multi_element_order1_transfer_master.i | 80 + ...ll_multi_element_order1_transfer_sub_app.i | 35 + ...ement_order2_distributed_transfer_master.i | 81 + ...ment_order2_distributed_transfer_sub_app.i | 36 + ...ull_multi_element_order2_transfer_master.i | 80 + ...ll_multi_element_order2_transfer_sub_app.i | 35 + .../push_pull_pyramid5_transfer_master.i | 80 + .../push_pull_pyramid5_transfer_sub_app.i | 35 + .../push_pull_tet10_transfer_master.i | 80 + .../push_pull_tet10_transfer_sub_app.i | 35 + .../push_pull_tet4_transfer_master.i | 80 + .../push_pull_tet4_transfer_sub_app.i | 35 + ...pull_wedge18_distributed_transfer_master.i | 81 + ...ull_wedge18_distributed_transfer_sub_app.i | 36 + .../push_pull_wedge18_transfer_master.i | 80 + .../push_pull_wedge18_transfer_sub_app.i | 35 + .../push_pull_wedge6_transfer_master.i | 80 + .../push_pull_wedge6_transfer_sub_app.i | 35 + test/tests/unit/transfers/tests | 226 + testroot | 4 + unit/Makefile | 70 + unit/include/place_holder | 0 unit/run_tests | 18 + unit/src/SampleTest.C | 23 + unit/src/main.C | 25 + 223 files changed, 87930 insertions(+), 1 deletion(-) create mode 100644 .clang-format create mode 100644 .clang-tidy create mode 100644 .gitignore create mode 100644 .gitlab-ci.yml create mode 100644 .gitmodules create mode 100644 .pre-commit-config.yaml create mode 100644 Makefile create mode 160000 contrib/hephaestus create mode 100644 contrib/hephaestus.mk create mode 100644 doc/config.yml create mode 100644 doc/content/index.md create mode 100755 doc/moosedocs.py create mode 100644 docker/platypus-deps/Dockerfile create mode 100644 docker/platypus/Dockerfile create mode 100644 include/actions/AddCoefficientAction.h create mode 100644 include/actions/AddFESpaceAction.h create mode 100644 include/actions/AddFormulationAction.h create mode 100644 include/actions/AddVectorCoefficientAction.h create mode 100644 include/auxkernels/MFEMAuxSolver.h create mode 100644 include/auxkernels/MFEMJouleHeatingAux.h create mode 100644 include/auxkernels/VectorVariableFromComponentsAux.h create mode 100644 include/auxkernels/VectorVariableToComponentsAux.h create mode 100644 include/auxkernels/WritableVectorAuxKernel.h create mode 100644 include/base/PlatypusApp.h create mode 100644 include/bcs/MFEMBoundaryCondition.h create mode 100644 include/bcs/MFEMComplexVectorDirichletBC.h create mode 100644 include/bcs/MFEMScalarDirichletBC.h create mode 100644 include/bcs/MFEMVectorDirichletBC.h create mode 100644 include/bcs/MFEMVectorNormalIntegratedBC.h create mode 100644 include/coefficients/MFEMCoefficient.h create mode 100644 include/coefficients/MFEMConstantCoefficient.h create mode 100644 include/coefficients/MFEMFunctionCoefficient.h create mode 100644 include/coefficients/MFEMParsedCoefficient.h create mode 100644 include/coefficients/MFEMParsedCoefficientBase.h create mode 100644 include/coefficients/MFEMParsedCoefficientHelper.h create mode 100644 include/coefficients/MFEMVariableDependentFunctionCoefficient.h create mode 100644 include/coefficients/MFEMVectorCoefficient.h create mode 100644 include/coefficients/MFEMVectorConstantCoefficient.h create mode 100644 include/coefficients/MFEMVectorFunctionCoefficient.h create mode 100644 include/fespaces/MFEMFESpace.h create mode 100644 include/formulations/CustomFormulation.h create mode 100644 include/formulations/MFEMFormulation.h create mode 100644 include/kernels/MFEMBilinearFormKernel.h create mode 100644 include/kernels/MFEMDiffusionKernel.h create mode 100644 include/kernels/MFEMLinearFormKernel.h create mode 100644 include/materials/MFEMMaterial.h create mode 100644 include/mesh/CoupledMFEMMesh.h create mode 100644 include/mesh/CubitElementInfo.h create mode 100644 include/mesh/ExclusiveMFEMMesh.h create mode 100644 include/mesh/MFEMMesh.h create mode 100644 include/mesh/MFEMParMesh.h create mode 100644 include/outputs/MFEMDataCollection.h create mode 100644 include/outputs/MFEMParaViewDataCollection.h create mode 100644 include/outputs/MFEMVisItDataCollection.h create mode 100644 include/postprocessors/ElementVectorL2Difference.h create mode 100644 include/problem/MFEMProblem.h create mode 100644 include/utils/PlatypusUtils.h create mode 100644 include/variables/MFEMVariable.h create mode 100644 platypus.mk create mode 100644 platypus.yaml create mode 100755 run_tests create mode 100644 scripts/build-platypus-csd3-cclake.sh create mode 100644 scripts/build-platypus-csd3-sapphire.sh create mode 100755 scripts/install-format-hook.sh create mode 100644 src/actions/AddCoefficientAction.C create mode 100644 src/actions/AddFESpaceAction.C create mode 100644 src/actions/AddFormulationAction.C create mode 100644 src/actions/AddVectorCoefficientAction.C create mode 100644 src/auxkernels/MFEMAuxSolver.C create mode 100644 src/auxkernels/MFEMJouleHeatingAux.C create mode 100644 src/auxkernels/VectorVariableFromComponentsAux.C create mode 100644 src/auxkernels/VectorVariableToComponentsAux.C create mode 100644 src/auxkernels/WritableVectorAuxKernel.C create mode 100644 src/base/PlatypusApp.C create mode 100644 src/bcs/MFEMBoundaryCondition.C create mode 100644 src/bcs/MFEMComplexVectorDirichletBC.C create mode 100644 src/bcs/MFEMScalarDirichletBC.C create mode 100644 src/bcs/MFEMVectorDirichletBC.C create mode 100644 src/bcs/MFEMVectorNormalIntegratedBC.C create mode 100644 src/coefficients/MFEMCoefficient.C create mode 100644 src/coefficients/MFEMConstantCoefficient.C create mode 100644 src/coefficients/MFEMFunctionCoefficient.C create mode 100644 src/coefficients/MFEMParsedCoefficient.C create mode 100644 src/coefficients/MFEMParsedCoefficientBase.C create mode 100644 src/coefficients/MFEMParsedCoefficientHelper.C create mode 100644 src/coefficients/MFEMVariableDependentFunctionCoefficient.C create mode 100644 src/coefficients/MFEMVectorCoefficient.C create mode 100644 src/coefficients/MFEMVectorConstantCoefficient.C create mode 100644 src/coefficients/MFEMVectorFunctionCoefficient.C create mode 100644 src/fespaces/MFEMFESpace.C create mode 100644 src/formulations/CustomFormulation.C create mode 100644 src/formulations/MFEMFormulation.C create mode 100644 src/kernels/MFEMBilinearFormKernel.C create mode 100644 src/kernels/MFEMDiffusionKernel.C create mode 100644 src/kernels/MFEMLinearFormKernel.C create mode 100644 src/main.C create mode 100644 src/materials/MFEMMaterial.C create mode 100644 src/mesh/CoupledMFEMMesh.C create mode 100644 src/mesh/CubitElementInfo.C create mode 100644 src/mesh/ExclusiveMFEMMesh.C create mode 100644 src/mesh/MFEMMesh.C create mode 100644 src/mesh/MFEMParMesh.C create mode 100644 src/outputs/MFEMDataCollection.C create mode 100644 src/outputs/MFEMParaViewDataCollection.C create mode 100644 src/outputs/MFEMVisItDataCollection.C create mode 100644 src/postprocessors/ElementVectorL2Difference.C create mode 100644 src/problem/MFEMProblem.C create mode 100644 src/variables/MFEMVariable.C create mode 100644 syntax.yaml create mode 100644 test/include/base/PlatypusTestApp.h create mode 100644 test/src/base/PlatypusTestApp.C create mode 100644 test/src/base/StorkTestApp.C.module create mode 100644 test/tests/unit/auxkernels/gold/lagrange_vector_variable_from_components_aux_out.csv create mode 100644 test/tests/unit/auxkernels/gold/lagrange_vector_variable_to_components_aux_out.csv create mode 100644 test/tests/unit/auxkernels/gold/monomial_vector_variable_from_components_aux_out.csv create mode 100644 test/tests/unit/auxkernels/gold/monomial_vector_variable_to_components_aux_out.csv create mode 100644 test/tests/unit/auxkernels/lagrange_vector_variable_from_components_aux.i create mode 100644 test/tests/unit/auxkernels/lagrange_vector_variable_to_components_aux.i create mode 100644 test/tests/unit/auxkernels/monomial_vector_variable_from_components_aux.i create mode 100644 test/tests/unit/auxkernels/monomial_vector_variable_to_components_aux.i create mode 100644 test/tests/unit/auxkernels/tests create mode 100644 test/tests/unit/kernels/diffusion_master.i create mode 100644 test/tests/unit/kernels/diffusion_mfem.i create mode 100644 test/tests/unit/kernels/gold/diffusion_master_out.csv create mode 100644 test/tests/unit/kernels/gold/mug.e create mode 100644 test/tests/unit/kernels/tests create mode 100644 test/tests/unit/outputs/gold/simple-cube-tet10.e create mode 100644 test/tests/unit/outputs/output_master.i create mode 100644 test/tests/unit/outputs/output_mfem.i create mode 100644 test/tests/unit/outputs/tests create mode 100644 test/tests/unit/postprocessors/gold/lagrange_vector_l2_difference_out.csv create mode 100644 test/tests/unit/postprocessors/gold/monomial_vector_l2_difference_out.csv create mode 100644 test/tests/unit/postprocessors/lagrange_vector_l2_difference.i create mode 100644 test/tests/unit/postprocessors/monomial_vector_l2_difference.i create mode 100644 test/tests/unit/postprocessors/tests create mode 100644 test/tests/unit/transfers/gold/cylinder-hex-q2.e create mode 100644 test/tests/unit/transfers/gold/cylinder_fo.e create mode 100644 test/tests/unit/transfers/gold/elemental_var_coupled_out.e create mode 100644 test/tests/unit/transfers/gold/fo_nodal_var_coupled_out.e create mode 100644 test/tests/unit/transfers/gold/nodal_var_coupled_out.e create mode 100644 test/tests/unit/transfers/gold/pull_hex27_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/pull_hex8_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/pull_multi_element_order1_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/pull_multi_element_order2_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/pull_pyramid5_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/pull_tet10_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/pull_tet4_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/pull_wedge18_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/pull_wedge6_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/push_pull_hex27_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/push_pull_hex8_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/push_pull_multi_element_order1_distributed_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/push_pull_multi_element_order1_monomial_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/push_pull_multi_element_order1_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/push_pull_multi_element_order2_distributed_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/push_pull_multi_element_order2_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/push_pull_pyramid5_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/push_pull_tet10_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/push_pull_tet4_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/push_pull_wedge18_distributed_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/push_pull_wedge18_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/push_pull_wedge6_transfer_master_out.csv create mode 100644 test/tests/unit/transfers/gold/simple-cube-hex27.e create mode 100644 test/tests/unit/transfers/gold/simple-cube-hex8.e create mode 100644 test/tests/unit/transfers/gold/simple-cube-multi-element-order1.e create mode 100644 test/tests/unit/transfers/gold/simple-cube-multi-element-order2.e create mode 100644 test/tests/unit/transfers/gold/simple-cube-pyramid5.e create mode 100644 test/tests/unit/transfers/gold/simple-cube-tet10.e create mode 100644 test/tests/unit/transfers/gold/simple-cube-tet4.e create mode 100644 test/tests/unit/transfers/gold/simple-cube-wedge18.e create mode 100644 test/tests/unit/transfers/gold/simple-cube-wedge6.e create mode 100644 test/tests/unit/transfers/pull_hex27_transfer_master.i create mode 100644 test/tests/unit/transfers/pull_hex27_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/pull_hex8_transfer_master.i create mode 100644 test/tests/unit/transfers/pull_hex8_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/pull_multi_element_order1_transfer_master.i create mode 100644 test/tests/unit/transfers/pull_multi_element_order1_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/pull_multi_element_order2_transfer_master.i create mode 100644 test/tests/unit/transfers/pull_multi_element_order2_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/pull_pyramid5_transfer_master.i create mode 100644 test/tests/unit/transfers/pull_pyramid5_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/pull_tet10_transfer_master.i create mode 100644 test/tests/unit/transfers/pull_tet10_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/pull_tet4_transfer_master.i create mode 100644 test/tests/unit/transfers/pull_tet4_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/pull_wedge18_transfer_master.i create mode 100644 test/tests/unit/transfers/pull_wedge18_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/pull_wedge6_transfer_master.i create mode 100644 test/tests/unit/transfers/pull_wedge6_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/push_pull_hex27_transfer_master.i create mode 100644 test/tests/unit/transfers/push_pull_hex27_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/push_pull_hex8_transfer_master.i create mode 100644 test/tests/unit/transfers/push_pull_hex8_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/push_pull_multi_element_order1_distributed_transfer_master.i create mode 100644 test/tests/unit/transfers/push_pull_multi_element_order1_distributed_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/push_pull_multi_element_order1_monomial_transfer_master.i create mode 100644 test/tests/unit/transfers/push_pull_multi_element_order1_monomial_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/push_pull_multi_element_order1_transfer_master.i create mode 100644 test/tests/unit/transfers/push_pull_multi_element_order1_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/push_pull_multi_element_order2_distributed_transfer_master.i create mode 100644 test/tests/unit/transfers/push_pull_multi_element_order2_distributed_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/push_pull_multi_element_order2_transfer_master.i create mode 100644 test/tests/unit/transfers/push_pull_multi_element_order2_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/push_pull_pyramid5_transfer_master.i create mode 100644 test/tests/unit/transfers/push_pull_pyramid5_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/push_pull_tet10_transfer_master.i create mode 100644 test/tests/unit/transfers/push_pull_tet10_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/push_pull_tet4_transfer_master.i create mode 100644 test/tests/unit/transfers/push_pull_tet4_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/push_pull_wedge18_distributed_transfer_master.i create mode 100644 test/tests/unit/transfers/push_pull_wedge18_distributed_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/push_pull_wedge18_transfer_master.i create mode 100644 test/tests/unit/transfers/push_pull_wedge18_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/push_pull_wedge6_transfer_master.i create mode 100644 test/tests/unit/transfers/push_pull_wedge6_transfer_sub_app.i create mode 100644 test/tests/unit/transfers/tests create mode 100644 testroot create mode 100644 unit/Makefile create mode 100644 unit/include/place_holder create mode 100755 unit/run_tests create mode 100644 unit/src/SampleTest.C create mode 100644 unit/src/main.C diff --git a/.clang-format b/.clang-format new file mode 100644 index 00000000..165b53b5 --- /dev/null +++ b/.clang-format @@ -0,0 +1,31 @@ +BasedOnStyle: LLVM + +TabWidth: 2 +ColumnLimit: 100 +UseTab: Never + +CommentPragmas: '^/' +ReflowComments: true +AlignTrailingComments: true +SpacesBeforeTrailingComments: 1 + +SpaceBeforeParens: ControlStatements +SpacesInSquareBrackets: false +BreakBeforeBraces: Allman +PointerAlignment: Middle + +BinPackParameters: false +BinPackArguments: false +ConstructorInitializerAllOnOneLineOrOnePerLine: true +AllowShortBlocksOnASingleLine: false +AllowShortFunctionsOnASingleLine: true +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false + +SortIncludes: false +IndentCaseLabels: true +ConstructorInitializerIndentWidth: 2 +AlwaysBreakAfterDefinitionReturnType: TopLevel +AlwaysBreakTemplateDeclarations: true + +FixNamespaceComments: false diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 00000000..99b920ef --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,15 @@ +HeaderFilterRegex: 'hephaestus/[ste]' +Checks: '-*,readability-identifier-naming,readability-redundant-member-init,modernize-*,-modernize-use-trailing-return-type,-modernize-avoid-c-arrays' +CheckOptions: + - key: readability-identifier-naming.AggressiveDependentMemberLookup + value: true + - key: readability-identifier-naming.ClassCase + value: 'CamelCase' + - key: readability-identifier-naming.MethodCase + value: 'CamelCase' + - key: readability-identifier-naming.MemberCase + value: 'lower_case' + - key: readability-identifier-naming.MemberPrefix + value: '_' + - key: readability-identifier-naming.LocalVariableCase + value: 'lower_case' \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..9df77b4c --- /dev/null +++ b/.gitignore @@ -0,0 +1,254 @@ +.libs +*.la +*.lo +*.d +*.o +*.a +*-opt +*-dbg +*-oprof +*-prof +*-devel +*.e +*.nav +*.log +*.aux +*.toc +*.snm +*.csv +*.csv.* +*.dylib +*.so +*.so.* +*.vrb +*.jou +*.pyc +*.mod +*.e.* +*.e-s* +*.cfg +*.lbd.* +*.nem +*.spd +*.pex +*.pdf +*.plist* +*.bbl +*.blg +*.spl +*.idx +traceout*.txt +temp_print_trace.* +*.xda +*.xda.* +*.xdr +*.xdr.* +*.mps +*.msmp +*.msmp-* +*.muds +# Latex garbage +*.lot +*.lof +*.poly +*.mpx +*.btr +*.xml +*.xml.* +*.gmv +*.plt +*.slh +*.eps +*.dat +*.gp +*.plugin +*.outp +*.patch +*.txt +*.bib.bak +*.out +*.vtk +*.vtu +*.pvtu +.depend +*.png +*.gif +*.tif +*.jpg +*.tiff +*.ps +*.bmp +*.mp4 +*.webm +*.ico +*.html +*.xyz +*Revision.h +*.json +*.bak +*.processor.* +.clang_complete +.failed_tests +failed-unittest +compile_commands.json +build + +# Allow certain files in gold directories +!**/gold/*.e +!**/gold/*.e-s* +!**/gold/*.csv +!**/gold/*.csv.* +!**/gold/*.vtk +!**/gold/*.vtu +!**/gold/*.pvtu +!**/gold/*.xml* + +peacock_run_tmp.i +yaml_dump* +test/tests/outputs/format/dump.i + +# Generated header file +MooseRevision.h + +# Precompiled headers +moose/include/base/Precompiled.h.gch + +# test garbagge +*.FAILED.txt + +# eclipse garbage +.project +.cproject +.metadata +.settings +.pydevproject + +# vim garbage +*~ +.*.swp +.*.swo + +framework/contrib/exodiff/exodiff + +# Mac garbage +.DS_Store +*.dSYM + +# Unit testing stuffbmoose_unit/test_results.xml +!unit/data/csv/*.csv + +# gcov code coverage files +*.gcno +*.gcda +*.gcov + +# paraview state files +*.pvsm + +#Peacock generated files +peacock_*.i +peacock_*.e + +# On linux, shared libs end in .0 sometimes +libpcre-opt* +libpcre-dbg* +libmoose-opt* +libmoose-dbg* + +#doxygen generated +*/doc/doxygen/html/* +*/doc/doxygen/**/* +moose/doc/doxygen/html/* +modules/*/doc/doxygen/html/* +tutorials/*/*/doc/doxygen/html/* +ICE/ +framework/contrib/asio/ + +# Restartable Data +*.rd +*.rd-* + +# Checkpoint Files +*.cpa +*.cpr +*.cpa-* +*.cpr-* + +# Ignore petsc arch +petsc/arch-*/* + +# phase_field/tests/solution_rasterizer +out.xyz + +# JIT and automatic differentiation cache files +.jitcache/ +.jitdir/ +tmp_jit_* + +# Do not store ipython notebook checkpoints +*-checkpoint.ipynb* + +# HIT +framework/contrib/hit/hit + +# MooseDocs +site +python/MooseDocs/test/output +!**/doc/content/**/*.md +!**/doc/content/**/*.jpg +!**/doc/content/**/*.jpeg +!**/doc/content/**/*.gif +!**/doc/content/**/*.png +!**/doc/content/**/*.svg +!**/doc/content/**/*.ogg +!**/doc/content/**/*.webm +!**/doc/content/**/*.mp4 +!**/doc/content/**/*.css +!**/doc/content/**/*.js +!**/doc/content/**/*.bib +!**/doc/content/**/*.woff +!**/doc/content/**/*.woff2 +!python/MooseDocs/test/gold/**/*.json +!python/MooseDocs/test/gold/**/*.html +!python/MooseDocs/test/gold/**/*.tex +.ruby-version + +# Chigger +!python/chigger/tests/**/gold/*.png +!python/chigger/tests/input/*.e* +!python/chigger/logos/*.png +!python/chigger/contrib/*.xml + +# Peacock +python/peacock/tests/exodus_tab/TestOutputPlugin_repr.py +python/peacock/tests/exodus_tab/TestExodusPluginManager_repr.py +python/peacock/tests/input_tab/InputFileEditor/fsp_test.i +python/peacock/tests/postprocessor_tab/TestPostprocessorPluginManager_test_script.py +!python/peacock/tests/**/gold/*.png +!python/peacock/icons/**/*.* +!python/peacock/tests/**/input/*.* +peacock_tmp_diff.exo +*.e.diff + +# configure +_configs.sed +autom4te.cache +config.status +*MooseConfig.h +*MooseConfig.h.tmp +conf_vars.mk + +# GPerf performance +*.prof + +# Tarred Docker images +*docker/**/*.tar.gz + +# MFEM Joule outputs +*Joule_000* + +# Ignoring all of OutputData +**/OutputData/ + +#Ignore output mfem meshes +*.mesh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..333b21d8 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,140 @@ +image: ubuntu:latest + +variables: + GIT_SUBMODULE_STRATEGY: recursive + +stages: + - build + - test + - quality + - security + - deploy + +# Build the software, along with all tests +build: + stage: build + script: + - mkdir build + - cd build + - cmake .. + - make -j + - cd .. + artifacts: + paths: + - build/ + - bin/ + - lib/ + expire_in: 1 day + +# Run tests + +.template: &coverage_template + stage: test + before_script: + - apt install gcovr + - cd build + - cmake .. -DBUILD_TYPE=TEST + - make -j +# after_script: +# - make gcovr + coverage: '/^lines: (\d+.\d+)%/' + + +unit_tests: + <<: *coverage_template + script: + - ../bin/unit_tests + - make gcovr + - mv gcovr unit_test_coverage + artifacts: + paths: + - build/unit_test_coverage + expire_in: 1 week + +integration_tests: + <<: *coverage_template + script: + - ../bin/integration_tests + - make gcovr + - mv gcovr integration_test_coverage + artifacts: + paths: + - build/integration_test_coverage + expire_in: 1 week + +regression_tests: + <<: *coverage_template + script: + - ../bin/regression_tests + - make gcovr + - mv gcovr regression_test_coverage + artifacts: + paths: + - build/regression_test_coverage + expire_in: 1 week + +format_tests: + stage: test + script: + - find ./{test,src}/ -iname *.h -o -iname *.cpp -o -iname *.hpp | xargs clang-format-8 -style=file | clang-format-diff-8 > out.txt + - if [[ -s out.txt ]]; then false; fi + allow_failure: true + +# Code quality +cyclomatic_complexity: + stage: quality + script: + - python /home/lizard/lizard.py --CCN=15 --length=100 --arguments=10 src + +static_analysis: + stage: quality + script: + - script -c "cppcheck src --enable=all" cppcheck.out + artifacts: + paths: + - cppcheck.out + expire_in: 1 week + +similarity: + stage: quality + script: + - script -c "sim_c++ -aRn src/*" similarity.out + artifacts: + paths: + - similarity.out + expire_in: 1 week + + +flaws: + stage: security + script: + - script -c "flawfinder src" flawfinder.out + artifacts: + paths: + - flawfinder.out + expire_in: 1 week + +pages: + stage: deploy + script: + # assuming build folder in the build stage is kept + - mkdir builddoc && cd builddoc + - cmake .. + - make doc + # doxygen output folder name is controlled in defined Doxygen.in + # gitlab pages request document must put into `public` folder of the repo directory + - mv public/html ../public + - cd .. + - mv build/unit_test_coverage public/unit_coverage + - mv build/integration_test_coverage public/integration_coverage + - mv build/regression_test_coverage public/regression_coverage + dependencies: + - unit_tests + - integration_tests + - regression_tests + only: + - master + artifacts: + paths: + - public + allow_failure: true # TODO change to false diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..6adf0b41 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "python/pybind11"] + path = python/pybind11 + url = https://github.com/pybind/pybind11.git +[submodule "contrib/hephaestus"] + path = contrib/hephaestus + url = https://github.com/aurora-multiphysics/hephaestus diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..b8aee6cb --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,11 @@ +repos: +- repo: https://github.com/pre-commit/mirrors-clang-format + rev: v14.0.6 + hooks: + - id: clang-format + +- repo: https://github.com/pocc/pre-commit-hooks + rev: v1.3.5 + hooks: + - id: clang-tidy + args: [-p=./build, -config-file=./.clang-tidy, --warnings-as-errors=*, -extra-arg=-std=c++17, -extra-arg=-stdlib=libstdc++] \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..144e23c3 --- /dev/null +++ b/Makefile @@ -0,0 +1,67 @@ +############################################################################### +################### MOOSE Application Standard Makefile ####################### +############################################################################### +# +# Optional Environment variables +# MOOSE_DIR - Root directory of the MOOSE project +# +############################################################################### +# Use the MOOSE submodule if it exists and MOOSE_DIR is not set +MOOSE_SUBMODULE := $(CURDIR)/moose +ifneq ($(wildcard $(MOOSE_SUBMODULE)/framework/Makefile),) + MOOSE_DIR ?= $(MOOSE_SUBMODULE) +else + MOOSE_DIR ?= $(shell dirname `pwd`)/moose +endif + +# framework +FRAMEWORK_DIR := $(MOOSE_DIR)/framework +include $(FRAMEWORK_DIR)/build.mk +include $(FRAMEWORK_DIR)/moose.mk + +################################## MODULES #################################### +# To use certain physics included with MOOSE, set variables below to +# yes as needed. Or set ALL_MODULES to yes to turn on everything (overrides +# other set variables). + +ALL_MODULES := no + +CHEMICAL_REACTIONS := no +CONTACT := no +EXTERNAL_PETSC_SOLVER := no +FLUID_PROPERTIES := no +FUNCTIONAL_EXPANSION_TOOLS := no +HEAT_TRANSFER := yes +LEVEL_SET := no +MISC := no +NAVIER_STOKES := no +PHASE_FIELD := no +POROUS_FLOW := no +RDG := no +RICHARDS := no +SOLID_MECHANICS := yes +STOCHASTIC_TOOLS := no +TENSOR_MECHANICS := no +XFEM := no + +include $(MOOSE_DIR)/modules/modules.mk +############################################################################### + +.PHONY : printer + +printer: + @echo $(MFEM_LIB) + @echo $(MFEM_INC) + +# dep apps +APPLICATION_DIR := $(CURDIR) +PLATYPUS_DIR := $(CURDIR) +APPLICATION_NAME := platypus +BUILD_EXEC := yes +GEN_REVISION := no +DEP_APPS := $(shell $(FRAMEWORK_DIR)/scripts/find_dep_apps.py $(APPLICATION_NAME)) +include $(FRAMEWORK_DIR)/app.mk + + +############################################################################### +# Additional special case targets should be added here diff --git a/README.md b/README.md index f618e947..76ce82bc 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ Platypus ===== -Platypus is a MOOSE-based application created to enable custom MOOSE problems to be set up and solved using the MFEM finite element library as an alternative backend to libMesh. It is based off of the MOOSE electromagnetics app [Apollo](https://github.com/aurora-multiphysics/apollo) that uses MFEM for solving electromagnetics problems in a variety of formulations. +Platypus is a MOOSE-based application created to enable custom MOOSE problems to be set up and solved using the [MFEM](https://github.com/mfem/mfem) finite element library as an alternative backend to libMesh. It is based off of the MOOSE electromagnetics app [Apollo](https://github.com/aurora-multiphysics/apollo) that uses MFEM for solving electromagnetics problems in a variety of formulations. Platypus is under active development and is being updated frequently. diff --git a/contrib/hephaestus b/contrib/hephaestus new file mode 160000 index 00000000..ff359ff3 --- /dev/null +++ b/contrib/hephaestus @@ -0,0 +1 @@ +Subproject commit ff359ff38f1706fa0a960367c20dc1f712ca29f2 diff --git a/contrib/hephaestus.mk b/contrib/hephaestus.mk new file mode 100644 index 00000000..3f5f3ed8 --- /dev/null +++ b/contrib/hephaestus.mk @@ -0,0 +1,29 @@ +############################### HEPHAESTUS ###################################### +################################################################################# +MFEM_DIR :=$(APPLICATION_DIR)/../mfem/build +HEPHAESTUS_DIR :=$(APPLICATION_DIR)/contrib/hephaestus + +include $(MFEM_DIR)/config/config.mk +MFEM_INCLUDES := -I$(MFEM_INC_DIR)/config -I$(MFEM_DIR)/ -I$(MFEM_DIR)/../miniapps/common +MFEM_LIBS := -L$(MFEM_DIR) -lmfem -lrt -L$(MFEM_DIR)/miniapps/common -lmfem-common $(MFEM_LIB) + +HEPHAESTUS_LIB := $(HEPHAESTUS_DIR)/lib + +SPDLOG_LIB :=$(HEPHAESTUS_DIR)/build/_deps/spdlog-build/ +SPDLOG_INCLUDE :=$(HEPHAESTUS_DIR)/build/_deps/spdlog-src/include/ + +HEPHAESTUS_INCLUDE_LIB := $(sort $(dir $(shell find $(HEPHAESTUS_DIR)/src/ -name "*.hpp"))) +HEPHAESTUS_INCLUDE := $(foreach d, $(HEPHAESTUS_INCLUDE_LIB), -I$d) -I$(SPDLOG_INCLUDE) + +HEPHAESTUS_CXX_FLAGS := -Wall $(HEPHAESTUS_INCLUDE) $(MFEM_INCLUDES) -I$(MFEM_INC_DIR)/config +HEPHAESTUS_LDFLAGS := -Wl,-rpath,$(HEPHAESTUS_LIB) -L$(HEPHAESTUS_LIB) -lhephaestus $(MFEM_LIBS) -L$(SPDLOG_LIB) -lspdlog + +libmesh_CXXFlags += $(HEPHAESTUS_CXX_FLAGS) +libmesh_LDFLAGS += $(HEPHAESTUS_LDFLAGS) + +ADDITIONAL_CPPFLAGS += -DHEPHAESTUS_ENABLED +ADDITIONAL_INCLUDES += $(HEPHAESTUS_CXX_FLAGS) +ADDITIONAL_LIBS += $(HEPHAESTUS_LDFLAGS) + +$(info ADDITIONAL_INCLUDES = $(ADDITIONAL_INCLUDES)); +$(info ADDITIONAL_LIBS = $(ADDITIONAL_LIBS)); diff --git a/doc/config.yml b/doc/config.yml new file mode 100644 index 00000000..0cfa7005 --- /dev/null +++ b/doc/config.yml @@ -0,0 +1,24 @@ +Content: + Platypus: + root_dir: ${ROOT_DIR}/doc/content + moose: + root_dir: ${MOOSE_DIR}/framework/doc/content + content: + - js/* + - css/* + - contrib/** + - media/** + +Renderer: + type: MooseDocs.base.MaterializeRenderer + +Extensions: + MooseDocs.extensions.navigation: + name: Platypus + MooseDocs.extensions.appsyntax: + executable: ${ROOT_DIR} + hide: + framework: !include ${MOOSE_DIR}/framework/doc/hidden.yml + remove: !include ${MOOSE_DIR}/framework/doc/remove.yml + includes: + - include diff --git a/doc/content/index.md b/doc/content/index.md new file mode 100644 index 00000000..4c44eb8c --- /dev/null +++ b/doc/content/index.md @@ -0,0 +1,3 @@ +!config navigation breadcrumbs=False scrollspy=False + +# PlatypusApp diff --git a/doc/moosedocs.py b/doc/moosedocs.py new file mode 100755 index 00000000..3cb7f506 --- /dev/null +++ b/doc/moosedocs.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python +#* This file is part of the MOOSE framework +#* https://www.mooseframework.org +#* +#* All rights reserved, see COPYRIGHT for full restrictions +#* https://github.com/idaholab/moose/blob/master/COPYRIGHT +#* +#* Licensed under LGPL 2.1, please see LICENSE for details +#* https://www.gnu.org/licenses/lgpl-2.1.html + +import sys +import os + +# Locate MOOSE directory +MOOSE_DIR = os.getenv('MOOSE_DIR', os.path.abspath(os.path.join(os.path.dirname(__name__), '..', 'moose'))) +if not os.path.exists(MOOSE_DIR): + MOOSE_DIR = os.path.abspath(os.path.join(os.path.dirname(__name__), '..', '..', 'moose')) +if not os.path.exists(MOOSE_DIR): + raise Exception('Failed to locate MOOSE, specify the MOOSE_DIR environment variable.') +os.environ['MOOSE_DIR'] = MOOSE_DIR + +# Append MOOSE python directory +MOOSE_PYTHON_DIR = os.path.join(MOOSE_DIR, 'python') +if MOOSE_PYTHON_DIR not in sys.path: + sys.path.append(MOOSE_PYTHON_DIR) + +from MooseDocs import main +if __name__ == '__main__': + sys.exit(main.run()) diff --git a/docker/platypus-deps/Dockerfile b/docker/platypus-deps/Dockerfile new file mode 100644 index 00000000..2b2bf6a3 --- /dev/null +++ b/docker/platypus-deps/Dockerfile @@ -0,0 +1,47 @@ +# Build Platypus dependencies +# Get base image +FROM alexanderianblair/hephaestus-deps:master + +# By default four cores are used to compile +ARG compile_cores=4 + +# By default we install everything under /opt +ARG WORKDIR=opt + +# Configure MOOSE +RUN export MOOSE_JOBS=$compile_cores && \ + cd /$WORKDIR && \ + git clone https://github.com/idaholab/moose && \ + cd moose && \ + git checkout master && \ + export PETSC_DIR=/$WORKDIR/petsc && \ + export PETSC_ARCH=arch-linux-c-opt && \ + export CC=mpicc && \ + export CXX=mpicxx && \ + export F90=mpif90 && \ + export F77=mpif77 && \ + export FC=mpif90 && \ + METHODS=opt ./scripts/update_and_rebuild_libmesh.sh --with-mpi && \ + ./configure --with-derivative-size=200 + +# Build WASP +RUN cd /$WORKDIR/moose/scripts && \ + METHODS=opt ./update_and_rebuild_wasp.sh + +# Build MOOSE +RUN cd /$WORKDIR/moose/framework && \ + METHOD=opt make -j$compile_cores + +RUN cd /$WORKDIR/moose/test && \ + METHOD=opt make -j$compile_cores + +# This is needed or it mpiexec complains because docker runs as root +# Discussion on this issue https://github.com/open-mpi/ompi/issues/4451 +ENV OMPI_ALLOW_RUN_AS_ROOT=1 +ENV OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 + +# RUN cd /$WORKDIR/moose/test && \ +# ./run_tests -j"$compile_cores" --re='(?!initial_condition.newton_with_exact_initialization)' + +# ENV OMPI_ALLOW_RUN_AS_ROOT= +# ENV OMPI_ALLOW_RUN_AS_ROOT_CONFIRM= diff --git a/docker/platypus/Dockerfile b/docker/platypus/Dockerfile new file mode 100644 index 00000000..efe1f41e --- /dev/null +++ b/docker/platypus/Dockerfile @@ -0,0 +1,39 @@ +# Build and test Platypus image +# Get base image +FROM alexanderianblair/platypus-deps:master + +# By default four cores are used to compile +ARG compile_cores=4 + +# By default checkout master branch from aurora-multiphysics/platypus +ARG build_git_sha=master +ARG build_git_repo=aurora-multiphysics/platypus + +# By default we install everything under /opt +ARG WORKDIR=opt + +# Get Platypus with Hephaestus +RUN cd /$WORKDIR && \ + git clone https://github.com/$build_git_repo && \ + cd platypus && \ + git checkout $build_git_sha && \ + git submodule update --init --recursive + +# Build Hephaestus +RUN cd /$WORKDIR/platypus/contrib/hephaestus/ && \ + mkdir build && \ + cd build && \ + cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DMFEM_DIR=/$WORKDIR/mfem/build .. && \ + ninja + +# Test Hephaestus +RUN cd /$WORKDIR/platypus/contrib/hephaestus/build && \ + ninja test + +# Build Platypus +RUN cd /$WORKDIR/platypus && \ + make -j$compile_cores + +# Test Platypus +RUN cd /$WORKDIR/platypus && \ + make test diff --git a/include/actions/AddCoefficientAction.h b/include/actions/AddCoefficientAction.h new file mode 100644 index 00000000..21b113f5 --- /dev/null +++ b/include/actions/AddCoefficientAction.h @@ -0,0 +1,20 @@ +#pragma once + +#include "MooseObjectAction.h" +#include "MFEMProblem.h" +/** + * This class allows us to have a section of the input file like the + * following to add MFEM coefficients to the problem. + * + * [Coefficients] + * [] + */ +class AddCoefficientAction : public MooseObjectAction +{ +public: + static InputParameters validParams(); + + AddCoefficientAction(const InputParameters & parameters); + + virtual void act() override; +}; diff --git a/include/actions/AddFESpaceAction.h b/include/actions/AddFESpaceAction.h new file mode 100644 index 00000000..1897c2c7 --- /dev/null +++ b/include/actions/AddFESpaceAction.h @@ -0,0 +1,20 @@ +#pragma once + +#include "MooseObjectAction.h" +#include "MFEMProblem.h" +/** + * This class allows us to have a section of the input file like the + * following to add MFEM coefficients to the problem. + * + * [FESpaces] + * [] + */ +class AddFESpaceAction : public MooseObjectAction +{ +public: + static InputParameters validParams(); + + AddFESpaceAction(const InputParameters & parameters); + + virtual void act() override; +}; diff --git a/include/actions/AddFormulationAction.h b/include/actions/AddFormulationAction.h new file mode 100644 index 00000000..1193f08d --- /dev/null +++ b/include/actions/AddFormulationAction.h @@ -0,0 +1,20 @@ +#pragma once + +#include "MooseObjectAction.h" +#include "MFEMProblem.h" +/** + * This class allows us to have a section of the input file like the + * following to specify the EM formulation to build. + * + * [Formulation] + * [] + */ +class AddFormulationAction : public MooseObjectAction +{ +public: + static InputParameters validParams(); + + AddFormulationAction(const InputParameters & parameters); + + virtual void act() override; +}; diff --git a/include/actions/AddVectorCoefficientAction.h b/include/actions/AddVectorCoefficientAction.h new file mode 100644 index 00000000..978ce573 --- /dev/null +++ b/include/actions/AddVectorCoefficientAction.h @@ -0,0 +1,20 @@ +#pragma once + +#include "MooseObjectAction.h" +#include "MFEMProblem.h" +/** + * This class allows us to have a section of the input file like the + * following to add MFEM coefficients to the problem. + * + * [Coefficients] + * [] + */ +class AddVectorCoefficientAction : public MooseObjectAction +{ +public: + static InputParameters validParams(); + + AddVectorCoefficientAction(const InputParameters & parameters); + + virtual void act() override; +}; diff --git a/include/auxkernels/MFEMAuxSolver.h b/include/auxkernels/MFEMAuxSolver.h new file mode 100644 index 00000000..4607d5ab --- /dev/null +++ b/include/auxkernels/MFEMAuxSolver.h @@ -0,0 +1,25 @@ +#pragma once + +#include "GeneralUserObject.h" +#include "auxsolvers.hpp" +#include "gridfunctions.hpp" + +class MFEMAuxSolver : public GeneralUserObject +{ +public: + static InputParameters validParams(); + + MFEMAuxSolver(const InputParameters & parameters); + virtual ~MFEMAuxSolver(); + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + inline virtual std::shared_ptr getAuxSolver() const { return _auxsolver; } + + virtual void storeCoefficients(hephaestus::Coefficients & coefficients) {} + +protected: + std::shared_ptr _auxsolver{nullptr}; +}; diff --git a/include/auxkernels/MFEMJouleHeatingAux.h b/include/auxkernels/MFEMJouleHeatingAux.h new file mode 100644 index 00000000..bffe7ed6 --- /dev/null +++ b/include/auxkernels/MFEMJouleHeatingAux.h @@ -0,0 +1,78 @@ +#pragma once + +#include "MFEMAuxSolver.h" + +class JouleHeatingCoefficient : public hephaestus::CoupledCoefficient +{ +private: + mfem::Coefficient * sigma{nullptr}; + mfem::ParGridFunction * joule_heating_gf{nullptr}; + std::string conductivity_coef_name; + // std::string var_name; + +public: + JouleHeatingCoefficient(const hephaestus::InputParameters & params) + : hephaestus::CoupledCoefficient(params), + conductivity_coef_name(params.GetParam("ConductivityCoefName")) + { + } + + void Init(const hephaestus::GridFunctions & variables, hephaestus::Coefficients & coefficients) + { + // To ensure conductivity on subdomains is converted into global coefficient + // Hephaestus update for coefficients initialisation could address this + // if (!coefficients.scalars.Has(conductivity_coef_name)) + // { + // coefficients.scalars.Register( + // conductivity_coef_name, + // new mfem::PWCoefficient( + // coefficients.getGlobalScalarProperty(std::string(conductivity_coef_name))), + // true); + // } + + hephaestus::CoupledCoefficient::Init(variables, coefficients); + std::cout << "Intialising JouleHeating"; + sigma = coefficients._scalars.Get(conductivity_coef_name); + + joule_heating_gf = variables.Get("joule_heating"); + } + + virtual double Eval(mfem::ElementTransformation & T, const mfem::IntegrationPoint & ip) + { + mfem::Vector E; + double thisSigma; + _gf->GetVectorValue(T, ip, E); + thisSigma = sigma->Eval(T, ip); + return thisSigma * (E * E); + } + + void Solve(double t) + { + this->SetTime(t); + joule_heating_gf->ProjectCoefficient(*this); + } +}; + +class MFEMJouleHeatingAux : public MFEMAuxSolver +{ +public: + static InputParameters validParams(); + + MFEMJouleHeatingAux(const InputParameters & parameters); + virtual ~MFEMJouleHeatingAux(); + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + inline std::shared_ptr getAuxSolver() const override + { + return joule_heating_aux; + } + + virtual void storeCoefficients(hephaestus::Coefficients & coefficients) override; + +protected: + hephaestus::InputParameters joule_heating_params; + std::shared_ptr joule_heating_aux{nullptr}; +}; diff --git a/include/auxkernels/VectorVariableFromComponentsAux.h b/include/auxkernels/VectorVariableFromComponentsAux.h new file mode 100644 index 00000000..71c4d47a --- /dev/null +++ b/include/auxkernels/VectorVariableFromComponentsAux.h @@ -0,0 +1,29 @@ +#pragma once + +#include "WritableVectorAuxKernel.h" + +/** + * Construct a vector variable from 3 standard variables. + */ +class VectorVariableFromComponentsAux : public WritableVectorAuxKernel +{ +public: + static InputParameters validParams(); + + VectorVariableFromComponentsAux(const InputParameters & parameters); + +protected: + virtual void compute() override; + + MooseVariable & _component_x; + MooseVariable & _component_y; + MooseVariable & _component_z; + + const Order _vector_order; + const FEFamily _vector_family; + +private: + void checkVectorVariable() const; + void checkVectorComponents() const; + void checkVectorComponent(const MooseVariable & component_variable) const; +}; diff --git a/include/auxkernels/VectorVariableToComponentsAux.h b/include/auxkernels/VectorVariableToComponentsAux.h new file mode 100644 index 00000000..5f98c59c --- /dev/null +++ b/include/auxkernels/VectorVariableToComponentsAux.h @@ -0,0 +1,17 @@ +#pragma once + +#include "VectorVariableFromComponentsAux.h" + +/** + * Set 3 standard variables from a vector variable. + */ +class VectorVariableToComponentsAux : public VectorVariableFromComponentsAux +{ +public: + static InputParameters validParams(); + + VectorVariableToComponentsAux(const InputParameters & parameters); + +protected: + virtual void compute() override; +}; diff --git a/include/auxkernels/WritableVectorAuxKernel.h b/include/auxkernels/WritableVectorAuxKernel.h new file mode 100644 index 00000000..07c23270 --- /dev/null +++ b/include/auxkernels/WritableVectorAuxKernel.h @@ -0,0 +1,24 @@ +#pragma once + +#include "AuxKernel.h" + +/** + * Platypus wrapper around VectorAuxKernel. + * + * Enables subclasses to call "writableVariable". This is not possible for VectorAuxKernel derived + * classes due to a MOOSE limitation. + */ +class WritableVectorAuxKernel : public VectorAuxKernel +{ +public: + static InputParameters validParams() { return VectorAuxKernel::validParams(); } + + WritableVectorAuxKernel(const InputParameters & parameters) : VectorAuxKernel(parameters) {} + +protected: + // NB: not used. + virtual RealVectorValue computeValue() override { mooseError("Unused"); } + + // NB: see "writableVariable" method defined in "Coupleable.h". + MooseVariable & writableVariable(const std::string & var_name, unsigned int comp = 0); +}; diff --git a/include/base/PlatypusApp.h b/include/base/PlatypusApp.h new file mode 100644 index 00000000..15b1e2e4 --- /dev/null +++ b/include/base/PlatypusApp.h @@ -0,0 +1,17 @@ +#pragma once + +#include "MooseApp.h" + +class PlatypusApp : public MooseApp +{ +public: + static InputParameters validParams(); + + PlatypusApp(InputParameters parameters); + virtual ~PlatypusApp(); + + static void registerApps(); + static void registerAll(Factory & f, ActionFactory & af, Syntax & s); + static void associateSyntax(Syntax & syntax, ActionFactory & action_factory); +}; + diff --git a/include/bcs/MFEMBoundaryCondition.h b/include/bcs/MFEMBoundaryCondition.h new file mode 100644 index 00000000..75af5a8c --- /dev/null +++ b/include/bcs/MFEMBoundaryCondition.h @@ -0,0 +1,31 @@ +#pragma once + +#include "GeneralUserObject.h" +#include "boundary_conditions.hpp" +#include "gridfunctions.hpp" +#include "coefficients.hpp" +#include "Function.h" + +class MFEMBoundaryCondition : public GeneralUserObject +{ +public: + static InputParameters validParams(); + + MFEMBoundaryCondition(const InputParameters & parameters); + ~MFEMBoundaryCondition() override {} + + inline virtual std::shared_ptr getBC() const + { + return _boundary_condition; + } + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + +protected: + std::vector _boundary_names; + mfem::Array bdr_attr; + + std::shared_ptr _boundary_condition{nullptr}; +}; diff --git a/include/bcs/MFEMComplexVectorDirichletBC.h b/include/bcs/MFEMComplexVectorDirichletBC.h new file mode 100644 index 00000000..7f50ef16 --- /dev/null +++ b/include/bcs/MFEMComplexVectorDirichletBC.h @@ -0,0 +1,22 @@ +#pragma once + +#include "MFEMBoundaryCondition.h" +#include "MFEMVectorFunctionCoefficient.h" +#include "boundary_conditions.hpp" + +class MFEMComplexVectorDirichletBC : public MFEMBoundaryCondition +{ +public: + static InputParameters validParams(); + + MFEMComplexVectorDirichletBC(const InputParameters & parameters); + ~MFEMComplexVectorDirichletBC() override {} + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + +protected: + MFEMVectorCoefficient * _vec_coef_re{nullptr}; + MFEMVectorCoefficient * _vec_coef_im{nullptr}; +}; diff --git a/include/bcs/MFEMScalarDirichletBC.h b/include/bcs/MFEMScalarDirichletBC.h new file mode 100644 index 00000000..3455249b --- /dev/null +++ b/include/bcs/MFEMScalarDirichletBC.h @@ -0,0 +1,21 @@ +#pragma once + +#include "MFEMBoundaryCondition.h" +#include "MFEMFunctionCoefficient.h" +#include "boundary_conditions.hpp" + +class MFEMScalarDirichletBC : public MFEMBoundaryCondition +{ +public: + static InputParameters validParams(); + + MFEMScalarDirichletBC(const InputParameters & parameters); + ~MFEMScalarDirichletBC() override {} + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + +protected: + MFEMCoefficient * _coef{nullptr}; +}; diff --git a/include/bcs/MFEMVectorDirichletBC.h b/include/bcs/MFEMVectorDirichletBC.h new file mode 100644 index 00000000..cfab0b1d --- /dev/null +++ b/include/bcs/MFEMVectorDirichletBC.h @@ -0,0 +1,21 @@ +#pragma once + +#include "MFEMBoundaryCondition.h" +#include "MFEMVectorFunctionCoefficient.h" +#include "boundary_conditions.hpp" + +class MFEMVectorDirichletBC : public MFEMBoundaryCondition +{ +public: + static InputParameters validParams(); + + MFEMVectorDirichletBC(const InputParameters & parameters); + ~MFEMVectorDirichletBC() override {} + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + +protected: + MFEMVectorCoefficient * _vec_coef{nullptr}; +}; diff --git a/include/bcs/MFEMVectorNormalIntegratedBC.h b/include/bcs/MFEMVectorNormalIntegratedBC.h new file mode 100644 index 00000000..4140d56e --- /dev/null +++ b/include/bcs/MFEMVectorNormalIntegratedBC.h @@ -0,0 +1,21 @@ +#pragma once + +#include "MFEMBoundaryCondition.h" +#include "MFEMVectorFunctionCoefficient.h" +#include "boundary_conditions.hpp" + +class MFEMVectorNormalIntegratedBC : public MFEMBoundaryCondition +{ +public: + static InputParameters validParams(); + + MFEMVectorNormalIntegratedBC(const InputParameters & parameters); + ~MFEMVectorNormalIntegratedBC() override {} + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + +protected: + MFEMVectorCoefficient * _vec_coef{nullptr}; +}; diff --git a/include/coefficients/MFEMCoefficient.h b/include/coefficients/MFEMCoefficient.h new file mode 100644 index 00000000..40d98164 --- /dev/null +++ b/include/coefficients/MFEMCoefficient.h @@ -0,0 +1,25 @@ +#pragma once + +#include "GeneralUserObject.h" +#include "coefficients.hpp" +#include "Function.h" + +libMesh::Point PointFromMFEMVector(const mfem::Vector & vec); + +class MFEMCoefficient : public GeneralUserObject +{ +public: + static InputParameters validParams(); + + MFEMCoefficient(const InputParameters & parameters); + virtual ~MFEMCoefficient(); + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + virtual std::shared_ptr getCoefficient() const + { + mooseError("Base class MFEMCoefficient cannot return a valid Coefficient. Use a child class."); + } +}; diff --git a/include/coefficients/MFEMConstantCoefficient.h b/include/coefficients/MFEMConstantCoefficient.h new file mode 100644 index 00000000..4b10c78c --- /dev/null +++ b/include/coefficients/MFEMConstantCoefficient.h @@ -0,0 +1,22 @@ +#pragma once + +#include "MFEMCoefficient.h" +#include "gridfunctions.hpp" + +class MFEMConstantCoefficient : public MFEMCoefficient +{ +public: + static InputParameters validParams(); + + MFEMConstantCoefficient(const InputParameters & parameters); + virtual ~MFEMConstantCoefficient(); + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + std::shared_ptr getCoefficient() const override { return coefficient; } + +private: + std::shared_ptr coefficient{nullptr}; +}; diff --git a/include/coefficients/MFEMFunctionCoefficient.h b/include/coefficients/MFEMFunctionCoefficient.h new file mode 100644 index 00000000..63cc9a68 --- /dev/null +++ b/include/coefficients/MFEMFunctionCoefficient.h @@ -0,0 +1,21 @@ +#pragma once +#include "MFEMCoefficient.h" + +class MFEMFunctionCoefficient : public MFEMCoefficient +{ +public: + static InputParameters validParams(); + + MFEMFunctionCoefficient(const InputParameters & parameters); + virtual ~MFEMFunctionCoefficient(); + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + std::shared_ptr getCoefficient() const override { return _coefficient; }; + +private: + const Function & _func; + std::shared_ptr _coefficient{nullptr}; +}; diff --git a/include/coefficients/MFEMParsedCoefficient.h b/include/coefficients/MFEMParsedCoefficient.h new file mode 100644 index 00000000..fd2c5c94 --- /dev/null +++ b/include/coefficients/MFEMParsedCoefficient.h @@ -0,0 +1,16 @@ +#pragma once + +#include "MFEMParsedCoefficientHelper.h" +#include "MFEMParsedCoefficientBase.h" + +/** + * MFEMCoefficient child class to evaluate a parsed function. The function + * can access non-linear and aux variables (unlike MooseParsedFunction). + */ +class MFEMParsedCoefficient : public MFEMParsedCoefficientHelper, public MFEMParsedCoefficientBase +{ +public: + static InputParameters validParams(); + + MFEMParsedCoefficient(const InputParameters & parameters); +}; diff --git a/include/coefficients/MFEMParsedCoefficientBase.h b/include/coefficients/MFEMParsedCoefficientBase.h new file mode 100644 index 00000000..8d461135 --- /dev/null +++ b/include/coefficients/MFEMParsedCoefficientBase.h @@ -0,0 +1,27 @@ +#pragma once + +#include "InputParameters.h" + +/** + * Base class for MFEMParsedCoefficient + * to declare and read the input parameters. + */ +class MFEMParsedCoefficientBase +{ +public: + static InputParameters validParams(); + + MFEMParsedCoefficientBase(const InputParameters & parameters); + +protected: + /// function expression + std::string _function; + + /// constant vectors + std::vector _constant_names; + std::vector _constant_expressions; + + /// mfem object names + std::vector _mfem_coefficient_names; + std::vector _mfem_gridfunction_names; +}; diff --git a/include/coefficients/MFEMParsedCoefficientHelper.h b/include/coefficients/MFEMParsedCoefficientHelper.h new file mode 100644 index 00000000..c118d1e5 --- /dev/null +++ b/include/coefficients/MFEMParsedCoefficientHelper.h @@ -0,0 +1,86 @@ +#pragma once + +#include "FunctionParserUtils.h" +#include "MFEMCoefficient.h" +#include "PlatypusUtils.h" +#include "auxsolvers.hpp" +#include "libmesh/fparser_ad.hh" +#include "libmesh/quadrature.h" + +#define usingMFEMParsedCoefficientHelperMembers() \ + usingFunctionParserUtilsMembers(); \ + using typename MFEMParsedCoefficientHelper::VariableNameMappingMode; \ + using typename MFEMParsedCoefficientHelper::MatPropDescriptorList; \ + using MFEMParsedCoefficientHelper::functionParse; \ + using MFEMParsedCoefficientHelper::functionsPostParse; \ + using MFEMParsedCoefficientHelper::functionsOptimize; \ + using MFEMParsedCoefficientHelper::_func_F; \ + using MFEMParsedCoefficientHelper::_symbol_names; \ + using MFEMParsedCoefficientHelper::_gridfunction_names; \ + using MFEMParsedCoefficientHelper::_coefficient_names; \ + using MFEMParsedCoefficientHelper::_map_mode + +/** + * Helper class to perform the parsing and optimization of the + * function expression. + */ +class MFEMParsedCoefficientHelper : public MFEMCoefficient, + public hephaestus::CoupledCoefficient, + public FunctionParserUtils +{ +public: + enum class VariableNameMappingMode + { + USE_MOOSE_NAMES, + USE_PARAM_NAMES + }; + + MFEMParsedCoefficientHelper(const InputParameters & parameters, VariableNameMappingMode map_mode); + + static InputParameters validParams(); + + void functionParse(const std::string & function_expression); + void functionParse(const std::string & function_expression, + const std::vector & constant_names, + const std::vector & constant_expressions); + void functionParse(const std::string & function_expression, + const std::vector & constant_names, + const std::vector & constant_expressions, + const std::vector & _mfem_coefficient_names); + void functionParse(const std::string & function_expression, + const std::vector & constant_names, + const std::vector & constant_expressions, + const std::vector & _mfem_coefficient_names, + const std::vector & _mfem_gridfunction_names); + void Init(const hephaestus::GridFunctions & variables, + hephaestus::Coefficients & coefficients) override; + + double Eval(mfem::ElementTransformation & trans, const mfem::IntegrationPoint & ip) override; + + std::shared_ptr getCoefficient() const override + { + return PlatypusUtils::dynamic_const_cast(getSharedPtr()); + } + +protected: + usingFunctionParserUtilsMembers(false); + + // run FPOptimizer on the parsed function + virtual void functionsOptimize(); + + /// The undiffed free energy function parser object. + SymFunctionPtr _func_F; + + /** + * Symbol names used in the expression (depends on the map_mode). + * We distinguish "symbols" i.e. FParser placeholder names from "variables", which + * are MOOSE solution objects + */ + std::vector _symbol_names; + + std::vector _gridfunction_names; + std::vector _gridfunctions; + + std::vector _coefficient_names; + std::vector _coefficients; +}; diff --git a/include/coefficients/MFEMVariableDependentFunctionCoefficient.h b/include/coefficients/MFEMVariableDependentFunctionCoefficient.h new file mode 100644 index 00000000..c7a31a17 --- /dev/null +++ b/include/coefficients/MFEMVariableDependentFunctionCoefficient.h @@ -0,0 +1,28 @@ +#pragma once +#include "MFEMCoefficient.h" +#include "PlatypusUtils.h" +#include "auxsolvers.hpp" + +class MFEMVariableDependentFunctionCoefficient : public MFEMCoefficient, + public hephaestus::CoupledCoefficient +{ +public: + static InputParameters validParams(); + + MFEMVariableDependentFunctionCoefficient(const InputParameters & parameters); + virtual ~MFEMVariableDependentFunctionCoefficient(); + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + double Eval(mfem::ElementTransformation & trans, const mfem::IntegrationPoint & ip) override; + + std::shared_ptr getCoefficient() const override + { + return PlatypusUtils::dynamic_const_cast(getSharedPtr()); + } + +private: + const Function & _func; +}; diff --git a/include/coefficients/MFEMVectorCoefficient.h b/include/coefficients/MFEMVectorCoefficient.h new file mode 100644 index 00000000..b3e199e7 --- /dev/null +++ b/include/coefficients/MFEMVectorCoefficient.h @@ -0,0 +1,24 @@ +#pragma once + +#include "GeneralUserObject.h" +#include "coefficients.hpp" +#include "Function.h" + +class MFEMVectorCoefficient : public GeneralUserObject +{ +public: + static InputParameters validParams(); + + MFEMVectorCoefficient(const InputParameters & parameters); + virtual ~MFEMVectorCoefficient(); + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + virtual std::shared_ptr getVectorCoefficient() const + { + mooseError("Base class MFEMVectorCoefficient cannot return a valid VectorCoefficient. Use a " + "child class."); + } +}; diff --git a/include/coefficients/MFEMVectorConstantCoefficient.h b/include/coefficients/MFEMVectorConstantCoefficient.h new file mode 100644 index 00000000..fb63d9f9 --- /dev/null +++ b/include/coefficients/MFEMVectorConstantCoefficient.h @@ -0,0 +1,24 @@ +#pragma once +#include "MFEMVectorCoefficient.h" + +class MFEMVectorConstantCoefficient : public MFEMVectorCoefficient +{ +public: + static InputParameters validParams(); + + MFEMVectorConstantCoefficient(const InputParameters & parameters); + virtual ~MFEMVectorConstantCoefficient(); + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + virtual std::shared_ptr getVectorCoefficient() const override + { + return _vector_coefficient; + } + +private: + const mfem::Vector _vector; + std::shared_ptr _vector_coefficient{nullptr}; +}; diff --git a/include/coefficients/MFEMVectorFunctionCoefficient.h b/include/coefficients/MFEMVectorFunctionCoefficient.h new file mode 100644 index 00000000..53d77102 --- /dev/null +++ b/include/coefficients/MFEMVectorFunctionCoefficient.h @@ -0,0 +1,24 @@ +#pragma once +#include "MFEMVectorCoefficient.h" + +class MFEMVectorFunctionCoefficient : public MFEMVectorCoefficient +{ +public: + static InputParameters validParams(); + + MFEMVectorFunctionCoefficient(const InputParameters & parameters); + virtual ~MFEMVectorFunctionCoefficient(); + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + std::shared_ptr getVectorCoefficient() const override + { + return _vector_coefficient; + } + +private: + const Function & _func; + std::shared_ptr _vector_coefficient{nullptr}; +}; diff --git a/include/fespaces/MFEMFESpace.h b/include/fespaces/MFEMFESpace.h new file mode 100644 index 00000000..0e01ae91 --- /dev/null +++ b/include/fespaces/MFEMFESpace.h @@ -0,0 +1,23 @@ +#pragma once + +#include "GeneralUserObject.h" +#include "inputs.hpp" +#include "gridfunctions.hpp" + +class MFEMFESpace : public GeneralUserObject +{ +public: + static InputParameters validParams(); + + MFEMFESpace(const InputParameters & parameters); + virtual ~MFEMFESpace(); + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + static const std::string createFECName(const std::string & fespace_type, const int order); + const int order; + const int vdim; + const std::string fespace_type; + const std::string fec_name; +}; diff --git a/include/formulations/CustomFormulation.h b/include/formulations/CustomFormulation.h new file mode 100644 index 00000000..b23197b9 --- /dev/null +++ b/include/formulations/CustomFormulation.h @@ -0,0 +1,22 @@ +#pragma once + +#include "MFEMFormulation.h" +#include "factory.hpp" + +class CustomFormulation : public MFEMFormulation +{ +public: + static InputParameters validParams(); + + CustomFormulation(const InputParameters & parameters); + virtual ~CustomFormulation(); + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + std::shared_ptr getProblemBuilder() override { return formulation; } + +private: + std::shared_ptr formulation{nullptr}; +}; diff --git a/include/formulations/MFEMFormulation.h b/include/formulations/MFEMFormulation.h new file mode 100644 index 00000000..b46dfd13 --- /dev/null +++ b/include/formulations/MFEMFormulation.h @@ -0,0 +1,23 @@ +#pragma once + +#include "GeneralUserObject.h" +#include "factory.hpp" + +class MFEMFormulation : public GeneralUserObject +{ +public: + static InputParameters validParams(); + + MFEMFormulation(const InputParameters & parameters); + virtual ~MFEMFormulation(); + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + virtual std::shared_ptr getProblemBuilder() + { + mooseError( + "Base class MFEMFormulation cannot return a valid ProblemBuilder. Use a child class."); + } +}; diff --git a/include/kernels/MFEMBilinearFormKernel.h b/include/kernels/MFEMBilinearFormKernel.h new file mode 100644 index 00000000..dff10307 --- /dev/null +++ b/include/kernels/MFEMBilinearFormKernel.h @@ -0,0 +1,20 @@ +#pragma once + +#include "GeneralUserObject.h" +#include "kernels.hpp" +#include "gridfunctions.hpp" + +class MFEMBilinearFormKernel : public GeneralUserObject +{ +public: + static InputParameters validParams(); + + MFEMBilinearFormKernel(const InputParameters & parameters); + virtual ~MFEMBilinearFormKernel() {} + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + virtual std::shared_ptr> getKernel() { return nullptr; } +}; diff --git a/include/kernels/MFEMDiffusionKernel.h b/include/kernels/MFEMDiffusionKernel.h new file mode 100644 index 00000000..4d75fd62 --- /dev/null +++ b/include/kernels/MFEMDiffusionKernel.h @@ -0,0 +1,25 @@ +#pragma once +#include "MFEMBilinearFormKernel.h" +#include "kernels.hpp" + +class MFEMDiffusionKernel : public MFEMBilinearFormKernel +{ +public: + static InputParameters validParams(); + + MFEMDiffusionKernel(const InputParameters & parameters); + ~MFEMDiffusionKernel() override {} + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + std::shared_ptr> getKernel() override + { + return _kernel; + } + +protected: + hephaestus::InputParameters _kernel_params; + std::shared_ptr _kernel{nullptr}; +}; diff --git a/include/kernels/MFEMLinearFormKernel.h b/include/kernels/MFEMLinearFormKernel.h new file mode 100644 index 00000000..494dd1c1 --- /dev/null +++ b/include/kernels/MFEMLinearFormKernel.h @@ -0,0 +1,20 @@ +#pragma once + +#include "GeneralUserObject.h" +#include "kernels.hpp" +#include "gridfunctions.hpp" + +class MFEMLinearFormKernel : public GeneralUserObject +{ +public: + static InputParameters validParams(); + + MFEMLinearFormKernel(const InputParameters & parameters); + virtual ~MFEMLinearFormKernel(); + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + virtual std::shared_ptr> getKernel() { return nullptr; } +}; diff --git a/include/materials/MFEMMaterial.h b/include/materials/MFEMMaterial.h new file mode 100644 index 00000000..efadda0c --- /dev/null +++ b/include/materials/MFEMMaterial.h @@ -0,0 +1,22 @@ +#pragma once + +#include "GeneralUserObject.h" +#include "MFEMCoefficient.h" +#include "coefficients.hpp" + +class MFEMMaterial : public GeneralUserObject +{ +public: + static InputParameters validParams(); + + MFEMMaterial(const InputParameters & parameters); + virtual ~MFEMMaterial(); + + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + virtual void storeCoefficients(hephaestus::Subdomain & subdomain) {} + + std::vector blocks; +}; diff --git a/include/mesh/CoupledMFEMMesh.h b/include/mesh/CoupledMFEMMesh.h new file mode 100644 index 00000000..5740bb66 --- /dev/null +++ b/include/mesh/CoupledMFEMMesh.h @@ -0,0 +1,174 @@ +//* This file is part of the MOOSE framework +//* https://www.mooseframework.org +//* +//* All rights reserved, see COPYRIGHT for full restrictions +//* https://github.com/idaholab/moose/blob/master/COPYRIGHT +//* +//* Licensed under LGPL 2.1, please see LICENSE for details +//* https://www.gnu.org/licenses/lgpl-2.1.html + +#pragma once +#include "ExclusiveMFEMMesh.h" +#include "CubitElementInfo.h" +#include "libmesh/face_quad4.h" + +/** + * CoupledMFEMMesh + */ +class CoupledMFEMMesh : public ExclusiveMFEMMesh +{ +public: + static InputParameters validParams(); + + CoupledMFEMMesh(const InputParameters & parameters); + + virtual ~CoupledMFEMMesh(); + + std::unique_ptr safeClone() const override; + + /** + * Builds only the MOOSE mesh from the file. + */ + void buildMesh() override; + + /** + * Override method in ExclusiveMFEMMesh. + */ + inline int getLocalMFEMNodeId(const int libmesh_global_node_id) const override + { + return _mfem_local_node_id_for_libmesh_global_node_id.at(libmesh_global_node_id); + } + + inline int getLibmeshGlobalNodeId(const int mfem_local_node_id) const override + { + return _libmesh_global_node_id_for_mfem_local_node_id.at(mfem_local_node_id); + } + +protected: + /** + * An internal method used to create maps from each boundary ID to vectors of side IDs + * and element IDs. + */ + void buildBoundaryInfo(std::map> & element_ids_for_boundary_id, + std::map> & side_ids_for_boundary_id); + + /** + * Create a mapping from each boundary ID to a vector of vectors containing the global node + * IDs of nodes that lie on the faces of elements that fall on the boundary. + */ + void buildBoundaryNodeIDs( + const std::vector & unique_side_boundary_ids, + const std::map> & element_ids_for_boundary_id, + const std::map> & side_ids_for_boundary_id, + std::map>> & node_ids_for_boundary_id); + + /** + * Builds two maps: + * 1. Mapping from each block ID --> vector containing all element IDs for block. + * 2. Mapping from each element --> vector containing all global node IDs for element. + */ + void buildElementAndNodeIDs(const std::vector & unique_block_ids, + std::map> & element_ids_for_block_id, + std::map> & node_ids_for_element_id); + + /** + * Iterates through each block to find the elements in the block. For each + * element in a block, it runs through the nodes in the block and adds only + * the corner nodes to a vector. This is then sorted and only unique global + * node IDs are retained. + */ + void buildUniqueCornerNodeIDs(std::vector & unique_corner_node_ids, + const std::vector & unique_block_ids, + const std::map> & element_ids_for_block_id, + const std::map> & node_ids_for_element_id); + + /** + * Required for converting an MFEMMesh to an MFEMParMesh. This method updates the two-way mappings + * so that the libMesh global node IDs now correctly map to the LOCAL MFEM dofs for the + * MFEMParMesh. This method is called internally after creating an MFEMParMesh from an MFEMMesh. + * NB: failure to call this method will result in the synchronization steps failing. + */ + void convertSerialDofMappingsToParallel(const MFEMMesh & serial_mesh, + const MFEMParMesh & parallel_mesh); + + /** + * Add block elements to _block_info. + */ + void buildCubitBlockInfo(const std::vector & unique_block_ids); + + /** + * Blocks/subdomains are separate subsets of the mesh that could have different + * material properties etc. This method returns a vector containing the unique + * IDs of each block in the mesh. This will be passed to the MFEMMesh constructor + * which sets the attribute of each element to the ID of the block that it is a + * part of. + */ + std::vector getLibmeshBlockIDs() const; + + /** + * Returns a vector containing the IDs of all boundaries. + */ + std::vector getSideBoundaryIDs() const; + + /** + * Maps from the element ID to the block ID. + */ + std::map + getBlockIDForElementID(const std::map> & element_ids_for_block_id) const; + + /** + * Maps from the boundary ID to a vector containing the block IDs of all elements that lie on + * the boundary. + */ + std::map> getBlockIDsForBoundaryID( + const std::map> & element_ids_for_block_id, + const std::map> & element_ids_for_boundary_id) const; + + /** + * Returns the libMesh partitioning. The "raw" pointer is wrapped up in a unique + * pointer. + */ + std::unique_ptr getMeshPartitioning(); + + /** + * Returns true if mesh is split between two or more processors. + */ + bool isDistributedMesh() const; + + /** + * Override methods in Exclusive MFEMMesh. + */ + void buildMFEMMesh() override; + void buildMFEMParMesh() override; + + /** + * Returns a constant reference to the block info. + */ + inline const CubitBlockInfo & blockInfo() const { return _block_info; } + + /** + * Returns a non-const reference to the block info. + */ + inline CubitBlockInfo & blockInfo() { return _block_info; } + + /** + * Returns a const reference to the block element. + */ + inline const CubitElementInfo & blockElement(int block_id) + { + return blockInfo().blockElement(block_id); + } + +private: + /** + * Stores the element info for each block in the mesh. + */ + CubitBlockInfo _block_info; + + /** + * Maps from a libMesh global node ID to the MFEM LOCAL node ID (dof) on the processor. NB: this + * is NOT the same as LOCAL TRUE dof. + */ + std::map _libmesh_global_node_id_for_mfem_local_node_id; + std::map _mfem_local_node_id_for_libmesh_global_node_id; +}; diff --git a/include/mesh/CubitElementInfo.h b/include/mesh/CubitElementInfo.h new file mode 100644 index 00000000..8ece6efa --- /dev/null +++ b/include/mesh/CubitElementInfo.h @@ -0,0 +1,215 @@ +#pragma once +#include +#include "MooseError.h" + +/** + * CubitFaceInfo + * + * Stores information about a particular element face. + */ +class CubitFaceInfo +{ +public: + CubitFaceInfo() = delete; + ~CubitFaceInfo() = default; + + enum CubitFaceType + { + FACE_EDGE2, + FACE_EDGE3, + FACE_TRI3, + FACE_TRI6, + FACE_QUAD4, + FACE_QUAD8, // order = 2. + FACE_QUAD9 // order = 2. Center node. + }; + + /** + * Default initializer. + */ + CubitFaceInfo(CubitFaceType face_type); + + inline uint8_t order() const { return _order; }; + inline uint8_t numFaceNodes() const { return _num_face_nodes; }; + inline uint8_t numFaceCornerNodes() const { return _num_face_corner_nodes; }; + inline CubitFaceType faceType() const { return _face_type; } + +protected: + void buildCubitFaceInfo(); + +private: + /** + * Type of face. + */ + CubitFaceType _face_type; + + /** + * Total number of nodes and number of corner nodes ("vertices"). + */ + uint8_t _num_face_nodes; + uint8_t _num_face_corner_nodes; + + /** + * Order of face. + */ + uint8_t _order; +}; + +/** + * CubitElementInfo + * + * Stores information about a particular element. + */ +class CubitElementInfo +{ +public: + CubitElementInfo() = default; + ~CubitElementInfo() = default; + + CubitElementInfo(int num_nodes_per_element, int dimension = 3); + + enum CubitElementType + { + ELEMENT_TRI3, + ELEMENT_TRI6, + ELEMENT_QUAD4, + ELEMENT_QUAD9, + ELEMENT_TET4, + ELEMENT_TET10, + ELEMENT_HEX8, + ELEMENT_HEX27, + ELEMENT_WEDGE6, + ELEMENT_WEDGE18, + ELEMENT_PYRAMID5, + ELEMENT_PYRAMID14 + }; + + inline CubitElementType elementType() const { return _element_type; } + + /** + * Returns info for a particular face. + */ + const CubitFaceInfo & face(int iface = 0) const; + + inline uint8_t numFaces() const { return _num_faces; } + + inline uint8_t numNodes() const { return _num_nodes; } + inline uint8_t numCornerNodes() const { return _num_corner_nodes; } + + inline uint8_t order() const { return _order; } + inline uint8_t dimension() const { return _dimension; } + +protected: + void buildCubit2DElementInfo(int num_nodes_per_element); + void buildCubit3DElementInfo(int num_nodes_per_element); + + /** + * Sets the _face_info vector. + */ + std::vector getWedge6FaceInfo() const; + std::vector getWedge18FaceInfo() const; + + std::vector getPyramid5FaceInfo() const; + std::vector getPyramid14FaceInfo() const; + +private: + /** + * Stores the element type. + */ + CubitElementType _element_type; + + /** + * NB: first-order elements have only nodes on the "corners". Second-order have + * additional nodes between "corner" nodes. + */ + uint8_t _order; + uint8_t _dimension; + + /** + * NB: "corner nodes" refer to MOOSE nodes at the corners of an element. In + * MFEM this is referred to as "vertices". + */ + uint8_t _num_nodes; + uint8_t _num_corner_nodes; + + /** + * Stores info about the face types. + */ + uint8_t _num_faces; + std::vector _face_info; +}; + +/** + * CubitBlockInfo + * + * Stores the information about each block in a mesh. Each block can contain a different + * element type (although all element types must be of the same order and dimension). + */ +class CubitBlockInfo +{ +public: + CubitBlockInfo() = delete; + ~CubitBlockInfo() = default; + + /** + * Default initializer. + */ + CubitBlockInfo(int dimension); + + /** + * Returns a constant reference to the element info for a particular block. + */ + const CubitElementInfo & blockElement(int block_id) const; + + /** + * Call to add each block individually. + */ + void addBlockElement(int block_id, int num_nodes_per_element); + + /** + * Accessors. + */ + uint8_t order() const; + inline uint8_t dimension() const { return _dimension; } + + inline std::size_t numBlocks() const { return blockIDs().size(); } + inline bool hasBlocks() const { return !blockIDs().empty(); } + +protected: + /** + * Checks that the order of a new block element matches the order of existing blocks. Called + * internally in mehtod "addBlockElement". + */ + void checkElementBlockIsCompatible(const CubitElementInfo & new_block_element) const; + + /** + * Reset all block elements. Called internally in initializer. + */ + void clearBlockElements(); + + /** + * Helper methods. + */ + inline const std::set & blockIDs() const { return _block_ids; } + + bool hasBlockID(int block_id) const; + bool validBlockID(int block_id) const; + bool validDimension(int dimension) const; + +private: + /** + * Stores all block IDs. + */ + std::set _block_ids; + + /** + * Maps from block ID to element. + */ + std::map _block_element_for_block_id; + + /** + * Dimension and order of block elements. + */ + uint8_t _dimension; + uint8_t _order; +}; diff --git a/include/mesh/ExclusiveMFEMMesh.h b/include/mesh/ExclusiveMFEMMesh.h new file mode 100644 index 00000000..d84ad692 --- /dev/null +++ b/include/mesh/ExclusiveMFEMMesh.h @@ -0,0 +1,95 @@ +//* This file is part of the MOOSE framework +//* https://www.mooseframework.org +//* +//* All rights reserved, see COPYRIGHT for full restrictions +//* https://github.com/idaholab/moose/blob/master/COPYRIGHT +//* +//* Licensed under LGPL 2.1, please see LICENSE for details +//* https://www.gnu.org/licenses/lgpl-2.1.html + +#pragma once +#include "FileMesh.h" +#include "MFEMMesh.h" +#include "MFEMParMesh.h" +#include "memory" +#include "libmesh/elem.h" +#include "libmesh/enum_io_package.h" +#include "libmesh/equation_systems.h" +#include "libmesh/face_quad4.h" +#include "libmesh/ignore_warnings.h" +#include "libmesh/libmesh_config.h" +#include "libmesh/mesh_base.h" +#include "libmesh/mesh_input.h" +#include "libmesh/node.h" +#include "libmesh/numeric_vector.h" +#include "libmesh/system.h" +#include "libmesh/vtk_io.h" +#include "mfem.hpp" + +/** + * ExclusiveMFEMMesh + * + * ExclusiveMFEMMesh inherits a MOOSE mesh class which allows us to work with + * other MOOSE objects. It contains pointers to an MFEM serial and MFEM parallel + * mesh. + */ +class ExclusiveMFEMMesh : public FileMesh +{ +public: + static InputParameters validParams(); + + ExclusiveMFEMMesh(const InputParameters & parameters); + + virtual ~ExclusiveMFEMMesh(); + + std::unique_ptr safeClone() const override; + + /** + * Accessors for the _mfem_mesh and _mfem_par_mesh objects. If the objects have + * not been build, the methods will call the appropriate protected methods to + * build them. + */ + MFEMMesh & getMFEMMesh(); + MFEMParMesh & getMFEMParMesh(); + + /** + * Calls buildDummyMesh. + */ + void buildMesh() override; + + /** + * Override in derived classes. + */ + virtual inline int getLocalMFEMNodeId(const int libmesh_global_node_id) const + { + mooseError("Not implemented."); + } + + virtual inline int getLibmeshGlobalNodeId(const int mfem_local_node_id) const + { + mooseError("Not implemented."); + } + +protected: + /** + * Builds a placeholder mesh when no MOOSE mesh is required. + */ + void buildDummyMesh(); + + /** + * Builds an MFEMMesh object from a file. Override in derived classes. + */ + virtual void buildMFEMMesh(); + + /** + * Builds an MFEMParMesh object from a file. Override in derived classes. + */ + virtual void buildMFEMParMesh(); + + /** + * Smart pointers to MFEMMesh and MFEMParMesh objects. Do not access directly. + * Use the accessors instead. + */ + std::shared_ptr _mfem_mesh; + std::shared_ptr _mfem_par_mesh; +}; diff --git a/include/mesh/MFEMMesh.h b/include/mesh/MFEMMesh.h new file mode 100644 index 00000000..ab0d553e --- /dev/null +++ b/include/mesh/MFEMMesh.h @@ -0,0 +1,162 @@ +#pragma once + +#include "libmesh/elem.h" +#include "libmesh/enum_io_package.h" +#include "libmesh/exodusII_io.h" +#include "libmesh/nemesis_io.h" +#include "libmesh/node.h" +#include "libmesh/parallel_mesh.h" +#include "CubitElementInfo.h" +#include "mfem.hpp" +#include "MooseError.h" + +/** + * MFEMMesh + * + * MFEMMesh wraps an mfem::Mesh object. + */ +class MFEMMesh : public mfem::Mesh +{ +public: + /** + * Initializer for 1st order elements. + */ + MFEMMesh(const int num_elements_in_mesh, + const CubitBlockInfo & block_info, + const std::vector & unique_block_ids, + const std::vector & unique_side_boundary_ids, + const std::vector & unique_libmesh_corner_node_ids, + const std::map> & libmesh_element_ids_for_block_id, + const std::map> & libmesh_node_ids_for_element_id, + const std::map>> & + libmesh_node_ids_for_boundary_id, + const std::map> & libmesh_side_ids_for_boundary_id, + const std::map> & libmesh_block_ids_for_boundary_id, + const std::map> & coordinates_for_libmesh_node_id); + + /** + * Initializer for 2nd order elements. + */ + MFEMMesh(const int num_elements_in_mesh, + const CubitBlockInfo & block_info, + const std::vector & unique_block_ids, + const std::vector & unique_side_boundary_ids, + const std::vector & unique_libmesh_corner_node_ids, + const std::map> & libmesh_element_ids_for_block_id, + const std::map> & libmesh_node_ids_for_element_id, + const std::map>> & + libmesh_node_ids_for_boundary_id, + const std::map> & libmesh_side_ids_for_boundary_id, + const std::map> & libmesh_block_ids_for_boundary_id, + const std::map> & coordinates_for_libmesh_node_id, + std::map & libmesh_node_id_for_mfem_node_id, + std::map & mfem_node_id_for_libmesh_node_id); + + MFEMMesh(std::string mesh_fname, + int generate_edges = 0, + int refine = 1, + bool fix_orientation = true); + +protected: + /** + * Calls buildMFEMVertices, buildMFEMElements, buildMFEMBoundaryElements methods + * to construct the mesh. NB: - additional methods should be called after this + * to handle second-order elements. The Finalize() method must be called at the + * end. + */ + void buildMFEMVerticesAndElements( + const int num_elements_in_mesh, + const CubitBlockInfo & block_info, + const std::vector & unique_block_ids, + const std::vector & unique_side_boundary_ids, + const std::vector & unique_libmesh_corner_node_ids, + const std::map> & libmesh_element_ids_for_block_id, + const std::map> & libmesh_node_ids_for_element_id, + const std::map>> & + libmesh_node_ids_for_boundary_id, + const std::map> & libmesh_side_ids_for_boundary_id, + const std::map> & libmesh_block_ids_for_boundary_id, + const std::map> & coordinates_for_libmesh_node_id); + + /** + * Sets the protected variable array using the provided vector of corner node + * IDs from MOOSE. Note that the vertices (named "nodes" in MOOSE) are ONLY + * at the corners of elements. These are referred to as "corner nodes" in MOOSE. + */ + void + buildMFEMVertices(const std::vector & unique_libmesh_corner_node_ids, + const std::map> & coordinates_for_libmesh_node_id); + + /** + * Construct the MFEM elements array. + */ + void buildMFEMElements(const int num_elements_in_mesh, + const CubitBlockInfo & block_info, + const std::vector & unique_block_ids, + const std::map> & libmesh_element_ids_for_block_id, + const std::map> & libmesh_node_ids_for_element_id); + + /** + * Construct the boundary array of elements. + */ + void buildMFEMBoundaryElements( + const CubitBlockInfo & block_info, + const std::vector & unique_side_boundary_ids, + const std::map>> & + libmesh_node_ids_for_boundary_id, + const std::map> & libmesh_side_ids_for_boundary_id, + const std::map> & libmesh_block_ids_for_boundary_ids); + + /** + * Returns a pointer to an mfem::Element. + */ + mfem::Element * + buildMFEMElement(const int element_type, const int * vertex_ids, const int block_id); + + /** + * Returns an pointer to an mfem::Element (for faces only). + */ + mfem::Element * + buildMFEMFaceElement(const int face_type, const int * vertex_ids, const int boundary_id); + + /** + * Called internally in constructor if the element is second-order. + */ + void handleQuadraticFESpace( + const CubitBlockInfo & block_info, + const std::vector & unique_block_ids, + const std::map> & libmesh_element_ids_for_block_id, + const std::map> & libmesh_node_ids_for_element_id, + const std::map> & coordinates_for_libmesh_node_id, + std::map & libmesh_node_id_for_mfem_node_id, + std::map & mfem_node_id_for_libmesh_node_id); + + /** + * Verifies whether the libmesh and mfem node ids have a unique mapping. All + * coordinates should match and every mfem node id should have a corresponding + * libmesh node id. Any left-over node ids will be detected. + */ + void verifyUniqueMappingBetweenLibmeshAndMFEMNodes( + const std::vector & unique_block_ids, + const std::map> & libmesh_element_ids_for_block_id, + const std::map> & libmesh_node_ids_for_element_id, + const std::map> & coordinates_for_libmesh_node_id, + const std::map & libmesh_node_id_for_mfem_node_id); + + /** + * Accessors. + */ + inline int getMFEMElementID(int libmesh_element_id) const + { + return _mfem_element_id_for_libmesh_element_id.at(libmesh_element_id); + } + + inline int getMFEMVertexIndex(int libmesh_corner_node_id) const + { + return _mfem_vertex_index_for_libmesh_corner_node_id.at(libmesh_corner_node_id); + } + +private: + std::map _mfem_element_id_for_libmesh_element_id; + std::map _mfem_vertex_index_for_libmesh_corner_node_id; +}; diff --git a/include/mesh/MFEMParMesh.h b/include/mesh/MFEMParMesh.h new file mode 100644 index 00000000..e0ad486a --- /dev/null +++ b/include/mesh/MFEMParMesh.h @@ -0,0 +1,17 @@ +#pragma once + +#include "mfem.hpp" +#include "MFEMMesh.h" + +/** + * MFEMParMesh + * + * MFEMParMesh is a wrapper for the mfem::ParMesh object. + */ +class MFEMParMesh : public mfem::ParMesh +{ +public: + MFEMParMesh(MPI_Comm comm, MFEMMesh & mesh, int * partitioning = nullptr, int part_method = 1); + + // TODO: - add implementation. +}; diff --git a/include/outputs/MFEMDataCollection.h b/include/outputs/MFEMDataCollection.h new file mode 100644 index 00000000..d13eeda9 --- /dev/null +++ b/include/outputs/MFEMDataCollection.h @@ -0,0 +1,20 @@ +#pragma once +#include "FileOutput.h" +#include "mfem.hpp" + +/** + * Class for output information saved in MFEM DataCollections + */ +class MFEMDataCollection : public FileOutput +{ +public: + static InputParameters validParams(); + + MFEMDataCollection(const InputParameters & parameters); + + virtual std::shared_ptr + createDataCollection(const std::string & collection_name) const; + +protected: + void output() override {} +}; diff --git a/include/outputs/MFEMParaViewDataCollection.h b/include/outputs/MFEMParaViewDataCollection.h new file mode 100644 index 00000000..b1a6477c --- /dev/null +++ b/include/outputs/MFEMParaViewDataCollection.h @@ -0,0 +1,21 @@ +#pragma once +#include "MFEMDataCollection.h" +#include "mfem.hpp" + +/** + * Class for output information saved in MFEM ParaViewDataCollections + */ +class MFEMParaViewDataCollection : public MFEMDataCollection +{ +public: + static InputParameters validParams(); + + MFEMParaViewDataCollection(const InputParameters & parameters); + + std::shared_ptr + createDataCollection(const std::string & collection_name) const override; + +protected: + bool _high_order_output; + unsigned int _refinements; +}; diff --git a/include/outputs/MFEMVisItDataCollection.h b/include/outputs/MFEMVisItDataCollection.h new file mode 100644 index 00000000..e733d8da --- /dev/null +++ b/include/outputs/MFEMVisItDataCollection.h @@ -0,0 +1,21 @@ +#pragma once +#include "MFEMDataCollection.h" +#include "mfem.hpp" + +/** + * Class for output information saved in MFEM VisItDataCollections + */ +class MFEMVisItDataCollection : public MFEMDataCollection +{ +public: + static InputParameters validParams(); + + MFEMVisItDataCollection(const InputParameters & parameters); + + std::shared_ptr + createDataCollection(const std::string & collection_name) const override; + +protected: + bool _high_order_output; + unsigned int _refinements; +}; diff --git a/include/postprocessors/ElementVectorL2Difference.h b/include/postprocessors/ElementVectorL2Difference.h new file mode 100644 index 00000000..55d916b3 --- /dev/null +++ b/include/postprocessors/ElementVectorL2Difference.h @@ -0,0 +1,24 @@ +#include "ElementIntegralPostprocessor.h" + +/** + * Computes the L2-Norm difference between two solution vector fields. + */ +class ElementVectorL2Difference : public ElementIntegralPostprocessor +{ +public: + static InputParameters validParams(); + + ElementVectorL2Difference(const InputParameters & parameters); + + using Postprocessor::getValue; + virtual Real getValue() const override; + +protected: + virtual Real computeQpIntegral() override; + + const VectorVariableValue & _vector_variable; + const VectorVariableValue & _other_vector_variable; + +private: + void checkVectorVariables() const; +}; diff --git a/include/problem/MFEMProblem.h b/include/problem/MFEMProblem.h new file mode 100644 index 00000000..dee49f69 --- /dev/null +++ b/include/problem/MFEMProblem.h @@ -0,0 +1,182 @@ +#pragma once +#include "AuxiliarySystem.h" +#include "DisplacedProblem.h" +#include "ExternalProblem.h" +#include "ExclusiveMFEMMesh.h" +#include "CoupledMFEMMesh.h" +#include "MFEMMesh.h" +#include "MFEMCoefficient.h" +#include "MFEMVectorCoefficient.h" +#include "MFEMMaterial.h" +#include "MFEMVariable.h" +#include "MFEMScalarDirichletBC.h" +#include "MFEMConstantCoefficient.h" +#include "MFEMBoundaryCondition.h" +#include "MFEMBilinearFormKernel.h" +#include "MFEMLinearFormKernel.h" +#include "MFEMFormulation.h" +#include "MFEMAuxSolver.h" +#include "MFEMDataCollection.h" +#include "MFEMFESpace.h" +#include "Function.h" +#include "MooseEnum.h" +#include "SystemBase.h" +#include "Transient.h" +#include "Steady.h" +#include "hephaestus.hpp" +#include "libmesh/string_to_enum.h" +#include "libmesh/point.h" + +class MFEMProblem : public ExternalProblem +{ +public: + static InputParameters validParams(); + + MFEMProblem(const InputParameters & params); + virtual ~MFEMProblem(); + + virtual void init() override; + virtual void initialSetup() override; + virtual void externalSolve() override; + virtual void outputStep(ExecFlagType type) override; + + virtual bool nlConverged(const unsigned int nl_sys_num) override { return true; }; + + virtual void syncSolutions(Direction direction) override; + + /** + * Overwritten mesh() method from base MooseMesh to retrieve the correct mesh type, in this case + * ExclusiveMFEMMesh. + */ + virtual ExclusiveMFEMMesh & mesh() override; + + /** + * Returns all the variable names from the auxiliary system base. This is helpful in the + * syncSolutions() method when transferring variable data. + */ + virtual std::vector getAuxVariableNames(); + + void addBoundaryCondition(const std::string & bc_name, + const std::string & name, + InputParameters & parameters) override; + + void addMaterial(const std::string & kernel_name, + const std::string & name, + InputParameters & parameters); + + /** + * Add an MFEM coefficient to the problem. + */ + void addCoefficient(const std::string & user_object_name, + const std::string & name, + InputParameters & parameters); + + /** + * Add an MFEM vector coefficient to the problem. + */ + void addVectorCoefficient(const std::string & user_object_name, + const std::string & name, + InputParameters & parameters); + /** + * Add an MFEM FESpace to the problem. + */ + void addFESpace(const std::string & user_object_name, + const std::string & name, + InputParameters & parameters); + /** + * Override of ExternalProblem::addUserObject. Uses ExternalProblem::addUserObject to set the + * Moose user objects, and contains additional code to create MFEM specific user objects. + */ + void setFormulation(const std::string & user_object_name, + const std::string & name, + InputParameters & parameters); + + /** + * Override of ExternalProblem::addAuxVariable. Uses ExternalProblem::addAuxVariable to set the + * Moose aux var, and contains additional code to create a corresponding MFEM grid function to be + * used in the MFEM solve. + */ + void addAuxVariable(const std::string & var_type, + const std::string & var_name, + InputParameters & parameters) override; + + /** + * Override of ExternalProblem::addKernel. Uses ExternalProblem::addKernel to create a + * GeneralUserObject representing the kernel in MOOSE, and creates corresponding MFEM kernel + * to be used in the MFEM solve. + */ + void addKernel(const std::string & kernel_name, + const std::string & name, + InputParameters & parameters) override; + /** + * Override of ExternalProblem::addAuxKernel. Uses ExternalProblem::addAuxKernel to create a + * GeneralUserObject representing the auxkernel in MOOSE, and creates corresponding MFEM auxsolver + * to be used in the MFEM solve. + */ + void addAuxKernel(const std::string & kernel_name, + const std::string & name, + InputParameters & parameters) override; + + /** + * setMFEMVarData and setMOOSEVarData have very similar uses. They are both used to retrieve + * data from one of the variable types (either Moose AuxVar or MFEM grid function), and + * transfer it to the other. For example if you solve for temperature in MOOSE, you would use + * setMFEMVarData to get this temperature data into an MFEM grid function. + */ + void setMFEMVarData(const std::string & var_name); + void setMOOSEVarData(const std::string & var_name); + + /** + * Method used to get an mfem FEC depending on the variable family specified in the input file. + * This method is used in addAuxVariable to help create the MFEM grid function that corresponds to + * a given MOOSE aux-variable. + */ + InputParameters addMFEMFESpaceFromMOOSEVariable(InputParameters & moosevar_params); + +protected: + /** + * Called internally by setMFEMVarData. + */ + void setMFEMNodalVarData(MooseVariableFieldBase & moose_variable); + void setMFEMElementalVarData(MooseVariableFieldBase & moose_variable); + + /** + * Called internally by setMOOSEVarData. + */ + void setMOOSENodalVarData(MooseVariableFieldBase & moose_variable); + void setMOOSEElementalVarData(MooseVariableFieldBase & moose_variable); + + /** + * Template method for adding kernels. We can only add kernels using equation system problem builders. + */ + template + void addKernel(std::string var_name, std::shared_ptr> kernel) + { + using namespace hephaestus; + + EquationSystemProblemBuilderInterface * eqn_system_problem_builder{nullptr}; + + if ((eqn_system_problem_builder = dynamic_cast(mfem_problem_builder.get()))) + { + eqn_system_problem_builder->AddKernel(std::move(var_name), std::move(kernel)); + } + else + { + mooseError("Cannot add kernel with name '" + var_name + "' because there is no equation system."); + } + } + + std::string _input_mesh; + std::string _formulation_name; + int _order; + + hephaestus::Coefficients _coefficients; + hephaestus::InputParameters _solver_options; + hephaestus::Outputs _outputs; + hephaestus::InputParameters _exec_params; + + std::shared_ptr mfem_problem_builder{nullptr}; + + std::unique_ptr mfem_problem{nullptr}; + std::unique_ptr executioner{nullptr}; +}; diff --git a/include/utils/PlatypusUtils.h b/include/utils/PlatypusUtils.h new file mode 100644 index 00000000..bf8f8bd3 --- /dev/null +++ b/include/utils/PlatypusUtils.h @@ -0,0 +1,32 @@ +#pragma once + +#include +#include +#include + +namespace PlatypusUtils +{ + +template +std::shared_ptr +dynamic_const_cast(std::shared_ptr source_pointer) +{ + if constexpr (!std::is_const_v) + { + auto source_remove_const = + std::const_pointer_cast::type>(source_pointer); + auto destination_pointer = std::dynamic_pointer_cast(source_remove_const); + if (!destination_pointer) + throw std::bad_cast(); + return destination_pointer; + } + else + { + auto destination_pointer = std::dynamic_pointer_cast(source_pointer); + if (!destination_pointer) + throw std::bad_cast(); + return destination_pointer; + } +} + +} // namespace PlatypusUtils diff --git a/include/variables/MFEMVariable.h b/include/variables/MFEMVariable.h new file mode 100644 index 00000000..c997717d --- /dev/null +++ b/include/variables/MFEMVariable.h @@ -0,0 +1,20 @@ +#pragma once + +#include "MFEMFESpace.h" +#include "inputs.hpp" +#include "gridfunctions.hpp" + +class MFEMVariable : public GeneralUserObject +{ +public: + static InputParameters validParams(); + + MFEMVariable(const InputParameters & parameters); + virtual ~MFEMVariable(); + virtual void execute() override {} + virtual void initialize() override {} + virtual void finalize() override {} + + const MFEMFESpace & fespace; + unsigned int components; +}; diff --git a/platypus.mk b/platypus.mk new file mode 100644 index 00000000..cf4b7ec5 --- /dev/null +++ b/platypus.mk @@ -0,0 +1,4 @@ +# +# Check the existence of the contrib submodules and build accordingly +# +include $(APPLICATION_DIR)/contrib/hephaestus.mk diff --git a/platypus.yaml b/platypus.yaml new file mode 100644 index 00000000..ff87e7db --- /dev/null +++ b/platypus.yaml @@ -0,0 +1,9 @@ +DMETHOD: opt +Werror: reorder +compiler_type: gcc +documentation: true +installation_type: in_tree +registered_apps: +- WASPAPP +- PLATYPUSAPP +- PLATYPUSTESTAPP diff --git a/run_tests b/run_tests new file mode 100755 index 00000000..bf5d1f2a --- /dev/null +++ b/run_tests @@ -0,0 +1,12 @@ +#!/usr/bin/env python +import sys, os + +MOOSE_DIR = os.path.abspath(os.environ.get('MOOSE_DIR', os.path.join(os.path.dirname(__file__), '..', 'moose'))) +if os.path.exists(os.path.abspath(os.path.join('moose', 'framework', 'Makefile'))): + MOOSE_DIR = os.path.abspath('moose') +MOOSE_DIR = os.environ.get('MOOSE_DIR', MOOSE_DIR) + +sys.path.append(os.path.join(MOOSE_DIR, 'python')) + +from TestHarness import TestHarness +TestHarness.buildAndRun(sys.argv, 'platypus', MOOSE_DIR) diff --git a/scripts/build-platypus-csd3-cclake.sh b/scripts/build-platypus-csd3-cclake.sh new file mode 100644 index 00000000..8dd20206 --- /dev/null +++ b/scripts/build-platypus-csd3-cclake.sh @@ -0,0 +1,165 @@ +#!/bin/bash +#set -ue + +export STACK_SRC=`mktemp -d /tmp/moose_stack_src.XXXXXX` +export WORKDIR=`pwd` +export compile_cores=32 +export OMPI_MCA_mca_base_component_show_load_errors=0 + +function load_modules() { + module purge + module load rhel7/global dot slurm cmake-3.19.7-gcc-5.4-5gbsejo + module load hdf5/openmpi/gcc/9.3/openmpi-4.0.4/1.12.0 + module load python/3.8 +} + +function build_petsc() { + cd $WORKDIR + curl -LJO https://github.com/xiaoyeli/superlu_dist/archive/refs/tags/v8.1.0.tar.gz + if [ -d "$WORKDIR/petsc" ] ; then + return + fi + mkdir petsc + cd petsc + curl -L -O http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.19.3.tar.gz + tar -xf petsc-3.19.3.tar.gz -C . + cd petsc-3.19.3 + ./configure \ + --prefix=$WORKDIR/petsc \ + CXXOPTFLAGS='-O3 -march=cascadelake -funroll-loops' COPTFLAGS='-O3 -march=cascadelake -funroll-loops' FOPTFLAGS='-O3 -march=cascadelake' \ + --with-debugging=0 \ + --with-ssl=0 \ + --with-pic=1 \ + --with-openmp=1 \ + --with-mpi=1 \ + --with-shared-libraries=1 \ + --with-fortran-bindings=0 \ + --with-sowing=0 \ + --download-hypre=1 \ + --download-fblaslapack=1 \ + --download-metis=1 \ + --download-ptscotch=1 \ + --download-parmetis=1 \ + --download-superlu_dist=$WORKDIR/superlu_dist-8.1.0.tar.gz \ + --download-scalapack=1 \ + --download-mumps=1 \ + --download-slepc=1 \ + --with-64-bit-indices=1 \ + --with-mpi-dir=/usr/local/Cluster-Apps/openmpi/gcc/9.3/4.0.4 \ + PETSC_DIR=`pwd` PETSC_ARCH=arch-linux-c-opt + make + make PETSC_DIR=$WORKDIR/petsc/petsc-3.19.3 PETSC_ARCH=arch-linux-c-opt install + make PETSC_DIR=$WORKDIR/petsc PETSC_ARCH="" check + cd .. + cd .. + export PETSC_DIR=$WORKDIR/petsc +} + +function build_moose() { + export MOOSE_JOBS=32 + cd $WORKDIR + if [ -d "$WORKDIR/moose" ] ; then + return + fi +# _build_mpich33 + load_modules + #build_vtk_git + cd $WORKDIR + git clone https://github.com/idaholab/moose + cd moose + git checkout master + if [ ! -f "$WORKDIR/petsc/lib/libpetsc.so" ] ; then + echo "PETSc Install Unsuccessful" + return + fi + + export PETSC_DIR=$WORKDIR/petsc + export PETSC_ARCH=arch-linux-c-opt + export CC=mpicc + export CXX=mpicxx + export F90=mpif90 + export F77=mpif77 + export FC=mpif90 + if [ -d "$WORKDIR/vtk" ] ; then + echo "building libmesh with VTK" + METHODS='opt' ./scripts/update_and_rebuild_libmesh.sh --with-mpi --with-cxx-std=2017 --with-vtk-include=$WORKDIR/vtk/include/vtk-9.1 --with-vtk-lib=$WORKDIR/vtk/lib64 + else + echo "Building libmesh withOUT VTK" + METHODS='opt' ./scripts/update_and_rebuild_libmesh.sh --with-mpi + fi + ./configure --with-derivative-size=200 --with-ad-indexing-type=global + METHODS='opt' ./scripts/update_and_rebuild_wasp.sh + cd framework + METHOD=opt make -j32 + cd .. + cd modules + METHOD=opt make -j32 + cd .. + cd test + METHOD=opt make -j32 + ./run_tests -j32 + cd .. + cd .. +} + +function build_mfem() { + cd $WORKDIR + if [ -d "$WORKDIR/mfem" ] ; then + return + fi + git clone https://github.com/Heinrich-BR/mfem.git + cd mfem + git checkout SubmeshBoundary + sed -i "s|list|# list|g" $WORKDIR/mfem/config/cmake/modules/FindNetCDF.cmake + mkdir build + cd build + echo "Building MFEM" + cmake .. \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_FLAGS_RELEASE=-fPIC \ + -DMFEM_SHARED=YES \ + -DMFEM_USE_OPENMP=YES \ + -DMFEM_THREAD_SAFE=NO \ + -DHYPRE_DIR=/$WORKDIR/petsc/ \ + -DBLAS_LIBRARIES=/$WORKDIR/petsc/lib/libfblas.a \ + -DLAPACK_LIBRARIES=/$WORKDIR/petsc/lib/libflapack.a \ + -DMFEM_USE_MPI=YES \ + -DMFEM_USE_METIS_5=YES \ + -DMETIS_DIR=/$WORKDIR/petsc/ \ + -DParMETIS_DIR=/$WORKDIR/petsc/ \ + -DMFEM_USE_SUPERLU=YES \ + -DSuperLUDist_DIR=/$WORKDIR/petsc/ \ + -DMFEM_USE_NETCDF=YES \ + -DNETCDF_LIBRARIES=$WORKDIR/moose/libmesh/installed/lib/libnetcdf.so \ + -DNETCDF_INCLUDE_DIRS=$WORKDIR/moose/libmesh/contrib/netcdf/netcdf-c-4.6.2/include \ + -DHDF5_DIR=/usr/local/Cluster-Apps/hdf5/openmpi/gcc/9.3/1.12.0 \ + -DCMAKE_POLICY_DEFAULT_CMP0057=NEW + make -j"$compile_cores" + cd miniapps/common + make -j"$compile_cores" +} + +function build_platypus() { + cd $WORKDIR + if [ -d "$WORKDIR/platypus" ] ; then + return + fi + + git clone https://github.com/aurora-multiphysics/platypus.git + cd platypus + git checkout master + git submodule update --init --recursive + cd contrib/hephaestus/ + mkdir build + cd build + cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DMFEM_DIR=/$WORKDIR/mfem/build -DMFEM_COMMON_INCLUDES=/$WORKDIR/mfem/miniapps/common .. + make -j1 + cd /$WORKDIR/platypus + make -j"$compile_cores" +} + +load_modules +build_petsc +build_moose +build_mfem +build_platypus diff --git a/scripts/build-platypus-csd3-sapphire.sh b/scripts/build-platypus-csd3-sapphire.sh new file mode 100644 index 00000000..c3d14427 --- /dev/null +++ b/scripts/build-platypus-csd3-sapphire.sh @@ -0,0 +1,287 @@ +#!/bin/bash +#SBATCH --nodes=1 +#SBATCH --ntasks=20 +#SBATCH --time=04:00:00 +#SBATCH --mail-type=none +#SBATCH -p sapphire +#SBATCH -A UKAEA-AP001-CPU +#SBATCH --cpus-per-task=1 +#SBATCH -o out_%j_%A_%a +#SBATCH --exclusive +. /etc/profile.d/modules.sh + +#TODO: +# - Remove xdr requirement from moose/scripts/configure_libmesh +# - Resolve yaml and hit failures in MOOSE test builds +# - Resolve build errors linking hephaestus tests when using intel compilers +# - Split SuperLU_dist build out into separate method + +function load_modules() { + module purge + module load rhel8/default-icl cmake + module load intel-oneapi-mkl/2022.1.0/intel/mngj3ad6 + module load gcc/11 + module load curl + module load python/3.8 + module load ninja + + export STACK_SRC=`mktemp -d /tmp/moose_stack_src.XXXXXX` + export WORKDIR=`pwd` + export compile_cores=8 + export OMPI_MCA_mca_base_component_show_load_errors=0 + + USER=`whoami` + BUILD_DIR_NAME=${WORKDIR} + + ROOT_PATH=/home/${USER}/rds/rds-ukaea-ap001/${USER} + BUILD_PATH=${ROOT_PATH}/${BUILD_DIR_NAME} + USR_PATH=${BUILD_PATH}/usr + + HDF5_MAJ_VER=1.10 + HDF5_MIN_VER=10 + HDF5_DIR_NAME=hdf5 + HDF5_INSTALL_PATH=${WORKDIR}/${HDF5_DIR_NAME} + + PETSC_COMMIT=38aca504f6ea08cc814f159b2c9bcf837a5876f3 + PETSC_DIR_NAME=petsc + PETSC_INSTALL_DIR=${BUILD_PATH}/petsc + + MOOSE_COMMIT=4e99faf9804480e7be302895ff9b8ded5b9944ea + + PLATYPUS_COMMIT=6d3f2edd1792e0538490231de12935b4b5d4ff24 + + export PATH=${BUILD_PATH}:${PATH} + + cd ${WORKDIR} + + #Need to set some compiler flags via config file" + echo "-std=c++17" >> icpx.cfg + echo "-Wno-tautological-constant-compare" >> icpx.cfg + export ICPXCFG=${WORKDIR}/icpx.cfg + + export CC=mpiicc + export CXX=mpiicpc + export FC=mpiifort + export F77=mpiifort + + export I_MPI_CC=icx + export I_MPI_CXX=icpx + export I_MPI_F90=ifx + export I_MPI_FC=ifx + export I_MPI_F77=ifx +} + +function _build_hdf5() { + cd ${WORKDIR} + mkdir -p ${HDF5_DIR_NAME} || { echo "Failed to create ${HDF5_DIR_NAME}" ; exit 1 ; } + + HDF5_MAJ_VER=1.10 + HDF5_MIN_VER=10 + HDF5_VER=${HDF5_MAJ_VER}.${HDF5_MIN_VER} + echo "Downloading HDF5" + curl -kLJO \ + https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${HDF5_MAJ_VER}/hdf5-${HDF5_VER}/src/hdf5-${HDF5_VER}.tar.gz \ + || { echo "Failed to download hdf5" ; exit 1 ; } + tar -xf hdf5-${HDF5_VER}.tar.gz + + cd hdf5-${HDF5_VER} + make clean + ./configure --prefix=${HDF5_INSTALL_PATH} --enable-cxx --enable-fortran --enable-build-mode=production + make install -j ${compile_cores} + if [ $? -eq 2 ]; then + echo "HDF5 Build failed" + exit 1 + fi + echo "HDF5 built" +} + +function _build_petsc() { + cd $WORKDIR + # echo "Downloading SuperLU_dist" + # curl -kLJO https://github.com/xiaoyeli/superlu_dist/archive/refs/tags/v8.1.0.tar.gz + # curl -kLJO https://github.com/xiaoyeli/superlu_dist/archive/refs/tags/v8.1.0.tar.gz + # if [ -d "$WORKDIR/petsc" ] ; then + # return + # fi + mkdir -p petsc + cd petsc + curl -kL -O http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-3.19.3.tar.gz + tar -xf petsc-3.19.3.tar.gz -C . + cd petsc-3.19.3 + ./configure \ + --with-cc=$CC --with-cxx=$CXX --with-fc=$FC -CXXPP=cpp \ + --prefix=${WORKDIR}/${PETSC_DIR_NAME} \ + --download-hypre=1 \ + --with-shared-libraries \ + --with-debugging=no \ + --with-hdf5-dir=${WORKDIR}/${HDF5_DIR_NAME} \ + --with-blaslapack-dir=${MKLROOT} \ + --download-metis=1 \ + --download-parmetis=1 \ + --download-ptscotch=1 \ + --download-mumps=1 \ + --download-superlu_dist=${WORKDIR}/superlu_dist-8.1.0.tar.gz \ + --download-scalapack=1 \ + --download-slepc=1 \ + --with-mpi=1 \ + --with-cxx-dialect=C++17 \ + --with-fortran-bindings=0 \ + --with-sowing=0 \ + --with-64-bit-indices \ + --with-make-np=${SLURM_NTASKS} \ + COPTFLAGS='-O3 -fno-slp-vectorize' \ + CXXOPTFLAGS='-O3 -fno-slp-vectorize' \ + FOPTFLAGS='-O3 -fno-slp-vectorize' \ + PETSC_DIR=`pwd` PETSC_ARCH=arch-linux-c-opt + make + make PETSC_DIR=${WORKDIR}/${PETSC_DIR_NAME}/petsc-3.19.3 PETSC_ARCH=arch-linux-c-opt install \ + || { echo "Failed to build petsc" ; exit 1 ; } + cd .. + cd .. + export PETSC_DIR=$WORKDIR/petsc +} + +function build_moose() { + export MOOSE_JOBS=32 + cd $WORKDIR + # if [ -d "$WORKDIR/moose" ] ; then + # return + # fi + cd $WORKDIR + git clone https://github.com/idaholab/moose + cd moose + git checkout ${MOOSE_COMMIT} || { echo "Checkout failed" ; exit 1 ; } + if [ ! -f "$WORKDIR/petsc/lib/libpetsc.so" ] ; then + echo "PETSc Install Unsuccessful" + return + fi + export PETSC_DIR=$WORKDIR/petsc + export PETSC_ARCH=arch-linux-c-opt + + #libmesh configure fails with the llvm compilers so we set these back here + export I_MPI_CXX=icpc + export I_MPI_FC=ifort + export I_MPI_F90=ifort + export I_MPI_F77=ifort + export I_MPI_C=icc + + # echo "diff --git a/scripts/update_and_rebuild_libmesh.sh b/scripts/update_and_rebuild_libmesh.sh + # index e49933bb68..b4d4159843 100755 + # --- a/scripts/update_and_rebuild_libmesh.sh + # +++ b/scripts/update_and_rebuild_libmesh.sh + # @@ -157,6 +157,11 @@ if [ -z \"\$go_fast\" ]; then + # SRC_DIR=\${SCRIPT_DIR}/../libmesh configure_libmesh \$DISABLE_TIMESTAMPS \\ + # \$VTK_OPTIONS \\ + # \$* | tee -a \"\$SCRIPT_DIR/\$DIAGNOSTIC_LOG\" || exit 1 + # + export I_MPI_CXX=icpx + # + export I_MPI_FC=ifx + # + export I_MPI_F90=ifx + # + export I_MPI_F77=ifx + # + export I_MPI_C=icx + # else + # # The build directory must already exist: you can't do --fast for + # # an initial build." > moose.patch + + # git apply moose.patch || { echo "Patch failed" ; exit 1 ; } + + ./scripts/update_and_rebuild_libmesh.sh \ + --with-cxx-std=2017 \ + --with-cc=$CC \ + --with-cxx=$CXX \ + --with-fc=$FC + + export I_MPI_CXX=icpx + export I_MPI_FC=ifx + export I_MPI_F90=ifx + export I_MPI_F77=ifx + export I_MPI_C=icx + + ./configure --with-derivative-size=200 --with-ad-indexing-type=global + METHODS='opt' ./scripts/update_and_rebuild_wasp.sh + cd framework + METHOD=opt make -j"$compile_cores" + cd .. + cd modules + METHOD=opt make -j"$compile_cores" + cd .. + cd test + METHOD=opt make -j"$compile_cores" + ./run_tests -j"$compile_cores" + cd .. + cd .. +} + +function build_gslib() { + cd $WORKDIR + if [ -d "$WORKDIR/gslb" ] ; then + return + fi + git clone https://github.com/Nek5000/gslib.git + cd gslib + make CFLAGS='-O2 -fPIC' +} + +function build_mfem() { + cd $WORKDIR + # if [ -d "$WORKDIR/mfem" ] ; then + # return + # fi + git clone https://github.com/Heinrich-BR/mfem.git + cd mfem + git checkout SubmeshBoundary + sed -i "s|list|# list|g" $WORKDIR/mfem/config/cmake/modules/FindNetCDF.cmake + mkdir build + cd build + echo "Building MFEM" + cmake .. \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_POSITION_INDEPENDENT_CODE=YES \ + -DMFEM_USE_OPENMP=NO \ + -DMFEM_THREAD_SAFE=NO \ + -DHYPRE_DIR=/$WORKDIR/petsc/ \ + -DMFEM_USE_LAPACK=YES \ + -DMFEM_USE_MPI=YES \ + -DMFEM_USE_METIS_5=YES \ + -DMETIS_DIR=/$WORKDIR/petsc/ \ + -DParMETIS_DIR=/$WORKDIR/petsc/ \ + -DMFEM_USE_SUPERLU=YES \ + -DSuperLUDist_DIR=/$WORKDIR/petsc/ \ + -DSuperLUDist_VERSION_OK=YES \ + -DMFEM_USE_NETCDF=YES \ + -DNETCDF_LIBRARIES=$WORKDIR/moose/libmesh/installed/lib/libnetcdf.so \ + -DNETCDF_INCLUDE_DIRS=$WORKDIR/moose/libmesh/contrib/netcdf/netcdf-c-4.6.2/include \ + -DHDF5_DIR=/$WORKDIR/${HDF5_DIR_NAME}/ \ + -DMFEM_USE_GSLIB=YES \ + -DGSLIB_DIR=/$WORKDIR/gslib/build + make -j"$compile_cores" + cd miniapps/common + make -j"$compile_cores" +} + +function build_platypus() { + cd $WORKDIR + # if [ -d "$WORKDIR/platypus" ] ; then + # return + # fi + + git clone https://github.com/aurora-multiphysics/platypus.git + cd platypus + git checkout ${PLATYPUS_COMMIT} + git submodule update --init --recursive + cd contrib/hephaestus/ + # git checkout master + mkdir build + cd build + cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DMFEM_DIR=/$WORKDIR/mfem/build .. + ninja + cd /$WORKDIR/platypus + make -j"$compile_cores" +} + +load_modules +_build_hdf5 +_build_petsc +build_moose +build_gslib +build_mfem +build_platypus diff --git a/scripts/install-format-hook.sh b/scripts/install-format-hook.sh new file mode 100755 index 00000000..44a2037a --- /dev/null +++ b/scripts/install-format-hook.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +REPO_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/../" +hookfile="$REPO_DIR/.git/hooks/pre-commit" + +if [[ -f $hookfile ]]; then + echo "'$hookfile' already exists - aborting" 1>&2 + exit 1 +fi + +echo '#!/bin/bash +patch=$(git clang-format --diff -- $(git diff --staged --name-only -- src include tests unit)) +if [[ "$patch" =~ "no modified files to format" || "$patch" =~ "clang-format did not modify any files" ]]; then + echo "" > /dev/null +else + echo "" + echo "Your code is not properly formatted." >&2 + echo "Run 'git clang-format' to resolve the following issues:" >&2 + echo "" + echo "$patch" + exit 1 +fi +' > $hookfile + +chmod a+x $hookfile + diff --git a/src/actions/AddCoefficientAction.C b/src/actions/AddCoefficientAction.C new file mode 100644 index 00000000..2af5c381 --- /dev/null +++ b/src/actions/AddCoefficientAction.C @@ -0,0 +1,24 @@ +#include "AddCoefficientAction.h" + +registerMooseAction("PlatypusApp", AddCoefficientAction, "add_mfem_coefficients"); + +InputParameters +AddCoefficientAction::validParams() +{ + InputParameters params = MooseObjectAction::validParams(); + params.addClassDescription("Add a MFEM Coefficient object to the simulation."); + return params; +} + +AddCoefficientAction::AddCoefficientAction(const InputParameters & parameters) + : MooseObjectAction(parameters) +{ +} + +void +AddCoefficientAction::act() +{ + MFEMProblem * mfem_problem = dynamic_cast(_problem.get()); + if (mfem_problem) + mfem_problem->addCoefficient(_type, _name, _moose_object_pars); +} diff --git a/src/actions/AddFESpaceAction.C b/src/actions/AddFESpaceAction.C new file mode 100644 index 00000000..6ff6b9e7 --- /dev/null +++ b/src/actions/AddFESpaceAction.C @@ -0,0 +1,24 @@ +#include "AddFESpaceAction.h" + +registerMooseAction("PlatypusApp", AddFESpaceAction, "add_mfem_fespaces"); + +InputParameters +AddFESpaceAction::validParams() +{ + InputParameters params = MooseObjectAction::validParams(); + params.addClassDescription("Add a MFEM FESpace object to the simulation."); + return params; +} + +AddFESpaceAction::AddFESpaceAction(const InputParameters & parameters) + : MooseObjectAction(parameters) +{ +} + +void +AddFESpaceAction::act() +{ + MFEMProblem * mfem_problem = dynamic_cast(_problem.get()); + if (mfem_problem) + mfem_problem->addFESpace(_type, _name, _moose_object_pars); +} diff --git a/src/actions/AddFormulationAction.C b/src/actions/AddFormulationAction.C new file mode 100644 index 00000000..f9897881 --- /dev/null +++ b/src/actions/AddFormulationAction.C @@ -0,0 +1,24 @@ +#include "AddFormulationAction.h" + +registerMooseAction("PlatypusApp", AddFormulationAction, "add_mfem_formulation"); + +InputParameters +AddFormulationAction::validParams() +{ + InputParameters params = MooseObjectAction::validParams(); + params.addClassDescription("Set the Hephaestus formulation to solve in the simulation."); + return params; +} + +AddFormulationAction::AddFormulationAction(const InputParameters & parameters) + : MooseObjectAction(parameters) +{ +} + +void +AddFormulationAction::act() +{ + MFEMProblem * mfem_problem = dynamic_cast(_problem.get()); + if (mfem_problem) + mfem_problem->setFormulation(_type, _name, _moose_object_pars); +} diff --git a/src/actions/AddVectorCoefficientAction.C b/src/actions/AddVectorCoefficientAction.C new file mode 100644 index 00000000..6abea3d7 --- /dev/null +++ b/src/actions/AddVectorCoefficientAction.C @@ -0,0 +1,24 @@ +#include "AddVectorCoefficientAction.h" + +registerMooseAction("PlatypusApp", AddVectorCoefficientAction, "add_mfem_coefficients"); + +InputParameters +AddVectorCoefficientAction::validParams() +{ + InputParameters params = MooseObjectAction::validParams(); + params.addClassDescription("Add a MFEM VectorCoefficient object to the simulation."); + return params; +} + +AddVectorCoefficientAction::AddVectorCoefficientAction(const InputParameters & parameters) + : MooseObjectAction(parameters) +{ +} + +void +AddVectorCoefficientAction::act() +{ + MFEMProblem * mfem_problem = dynamic_cast(_problem.get()); + if (mfem_problem) + mfem_problem->addVectorCoefficient(_type, _name, _moose_object_pars); +} diff --git a/src/auxkernels/MFEMAuxSolver.C b/src/auxkernels/MFEMAuxSolver.C new file mode 100644 index 00000000..b781feb4 --- /dev/null +++ b/src/auxkernels/MFEMAuxSolver.C @@ -0,0 +1,19 @@ +#include "MFEMAuxSolver.h" + +registerMooseObject("PlatypusApp", MFEMAuxSolver); + +InputParameters +MFEMAuxSolver::validParams() +{ + InputParameters params = GeneralUserObject::validParams(); + + // NB: register as base. MFEM auxkernels should be derived from this base class. This allows the + // same AuxKernel block to be used to setup both MFEM auxsolvers and MOOSE auxkernels. + params.registerBase("MFEMAuxKernel"); + + return params; +} + +MFEMAuxSolver::MFEMAuxSolver(const InputParameters & parameters) : GeneralUserObject(parameters) {} + +MFEMAuxSolver::~MFEMAuxSolver() {} diff --git a/src/auxkernels/MFEMJouleHeatingAux.C b/src/auxkernels/MFEMJouleHeatingAux.C new file mode 100644 index 00000000..053dc08c --- /dev/null +++ b/src/auxkernels/MFEMJouleHeatingAux.C @@ -0,0 +1,28 @@ +#include "MFEMJouleHeatingAux.h" + +registerMooseObject("PlatypusApp", MFEMJouleHeatingAux); + +InputParameters +MFEMJouleHeatingAux::validParams() +{ + InputParameters params = MFEMAuxSolver::validParams(); + + return params; +} + +MFEMJouleHeatingAux::MFEMJouleHeatingAux(const InputParameters & parameters) + : MFEMAuxSolver(parameters), + joule_heating_params({{"CoupledVariableName", std::string("electric_field")}, + {"ConductivityCoefName", std::string("electrical_conductivity")}, + {"JouleHeatingVarName", std::string("joule_heating")}}), + joule_heating_aux{std::make_shared(joule_heating_params)} +{ +} + +void +MFEMJouleHeatingAux::storeCoefficients(hephaestus::Coefficients & coefficients) +{ + coefficients._scalars.Register("JouleHeating", joule_heating_aux); +} + +MFEMJouleHeatingAux::~MFEMJouleHeatingAux() {} diff --git a/src/auxkernels/VectorVariableFromComponentsAux.C b/src/auxkernels/VectorVariableFromComponentsAux.C new file mode 100644 index 00000000..05febe92 --- /dev/null +++ b/src/auxkernels/VectorVariableFromComponentsAux.C @@ -0,0 +1,80 @@ +#include "VectorVariableFromComponentsAux.h" + +registerMooseObject("MooseApp", VectorVariableFromComponentsAux); + +InputParameters +VectorVariableFromComponentsAux::validParams() +{ + InputParameters params = WritableVectorAuxKernel::validParams(); + + params.addRequiredCoupledVar("component_x", "The x-component of the vector variable."); + params.addRequiredCoupledVar("component_y", "The y-component of the vector variable."); + params.addRequiredCoupledVar("component_z", "The z-component of the vector variable."); + + params.addClassDescription("Combine three standard variables into a vector variable."); + + return params; +} + +VectorVariableFromComponentsAux::VectorVariableFromComponentsAux(const InputParameters & parameters) + : WritableVectorAuxKernel(parameters), + _component_x(writableVariable("component_x")), + _component_y(writableVariable("component_y")), + _component_z(writableVariable("component_z")), + _vector_order(_var.order()), + _vector_family(_var.feType().family) +{ + checkVectorVariable(); + checkVectorComponents(); +} + +void +VectorVariableFromComponentsAux::compute() +{ + _variable->setDofValue(_component_x.dofValues()[0], 0); + _variable->setDofValue(_component_y.dofValues()[0], 1); + _variable->setDofValue(_component_z.dofValues()[0], 2); +} + +void +VectorVariableFromComponentsAux::checkVectorVariable() const +{ + if (_vector_family != LAGRANGE_VEC && _vector_family != MONOMIAL_VEC) + { + mooseError("Only Lagrange and Monomial vectors are supported."); + } + + if (_vector_family == MONOMIAL_VEC && _vector_order != CONSTANT) + { + mooseError("Monomial vectors are supported only for constant order."); + } +} + +void +VectorVariableFromComponentsAux::checkVectorComponents() const +{ + checkVectorComponent(_component_x); + checkVectorComponent(_component_y); + checkVectorComponent(_component_z); +} + +void +VectorVariableFromComponentsAux::checkVectorComponent( + const MooseVariable & component_variable) const +{ + auto component_order = component_variable.order(); + auto component_family = component_variable.feType().family; + + bool correct_family = ((component_family == LAGRANGE && _vector_family == LAGRANGE_VEC) || + (component_family == MONOMIAL && _vector_family == MONOMIAL_VEC)); + if (!correct_family) + { + mooseError("Component '", component_variable.name(), "' is of the incorrect family."); + } + + bool correct_order = (component_order == _vector_order); + if (!correct_order) + { + mooseError("Component '", component_variable.name(), "' has a different order to the vector."); + } +} \ No newline at end of file diff --git a/src/auxkernels/VectorVariableToComponentsAux.C b/src/auxkernels/VectorVariableToComponentsAux.C new file mode 100644 index 00000000..5b09fd86 --- /dev/null +++ b/src/auxkernels/VectorVariableToComponentsAux.C @@ -0,0 +1,30 @@ +#include "VectorVariableToComponentsAux.h" + +registerMooseObject("MooseApp", VectorVariableToComponentsAux); + +InputParameters +VectorVariableToComponentsAux::validParams() +{ + InputParameters params = VectorVariableFromComponentsAux::validParams(); + + params.addClassDescription("Extract the components of a vector."); + + return params; +} + +VectorVariableToComponentsAux::VectorVariableToComponentsAux(const InputParameters & parameters) + : VectorVariableFromComponentsAux(parameters) +{ +} + +void +VectorVariableToComponentsAux::compute() +{ + Real value_x = _variable->dofValues()[0]; + Real value_y = _variable->dofValues()[1]; + Real value_z = _variable->dofValues()[2]; + + _component_x.setNodalValue(value_x, 0); + _component_y.setNodalValue(value_y, 0); + _component_z.setNodalValue(value_z, 0); +} diff --git a/src/auxkernels/WritableVectorAuxKernel.C b/src/auxkernels/WritableVectorAuxKernel.C new file mode 100644 index 00000000..8fafacba --- /dev/null +++ b/src/auxkernels/WritableVectorAuxKernel.C @@ -0,0 +1,14 @@ +#include "WritableVectorAuxKernel.h" + +registerMooseObject("MooseApp", WritableVectorAuxKernel); + +MooseVariable & +WritableVectorAuxKernel::writableVariable(const std::string & var_name, unsigned int comp) +{ + auto * var = dynamic_cast(getVar(var_name, comp)); + + // Make sure only one object can access a variable. + checkWritableVar(var); + + return *var; +} diff --git a/src/base/PlatypusApp.C b/src/base/PlatypusApp.C new file mode 100644 index 00000000..8236d969 --- /dev/null +++ b/src/base/PlatypusApp.C @@ -0,0 +1,96 @@ +#include "PlatypusApp.h" +#include "Moose.h" +#include "AppFactory.h" +#include "ModulesApp.h" +#include "MooseSyntax.h" + +InputParameters +PlatypusApp::validParams() +{ + InputParameters params = MooseApp::validParams(); + params.set("use_legacy_material_output") = false; + return params; +} + +PlatypusApp::PlatypusApp(InputParameters parameters) : MooseApp(parameters) +{ + PlatypusApp::registerAll(_factory, _action_factory, _syntax); +} + +PlatypusApp::~PlatypusApp() {} + +static void +associateSyntaxInner(Syntax & syntax, ActionFactory & /*action_factory*/) +{ + // add base formulation + registerMooseObjectTask("add_mfem_formulation", MFEMFormulation, true); + registerSyntaxTask("AddFormulationAction", "Formulation", "add_mfem_formulation"); + addTaskDependency("add_mfem_formulation", "init_mesh"); + addTaskDependency("add_variable", "add_mfem_formulation"); + addTaskDependency("add_aux_variable", "add_mfem_formulation"); + addTaskDependency("add_elemental_field_variable", "add_mfem_formulation"); + addTaskDependency("add_kernel", "add_mfem_formulation"); + + // add MFEM auxkernel base + appendMooseObjectTask("add_aux_kernel", MFEMAuxKernel); + + // add coefficients + registerMooseObjectTask("add_mfem_coefficients", MFEMCoefficient, false); + registerSyntaxTask("AddCoefficientAction", "Coefficients/*", "add_mfem_coefficients"); + addTaskDependency("add_material", "add_mfem_coefficients"); + addTaskDependency("add_mfem_coefficients", "add_variable"); + addTaskDependency("add_mfem_coefficients", "add_aux_variable"); + addTaskDependency("add_mfem_coefficients", "add_ic"); + + // add vector coefficients + registerMooseObjectTask("add_mfem_vector_coefficients", MFEMVectorCoefficient, false); + registerSyntaxTask( + "AddVectorCoefficientAction", "VectorCoefficients/*", "add_mfem_vector_coefficients"); + addTaskDependency("add_material", "add_mfem_vector_coefficients"); + + // add sources + registerMooseObjectTask("add_mfem_sources", MFEMSource, false); + registerSyntaxTask("AddSourceAction", "Sources/*", "add_mfem_sources"); + addTaskDependency("add_mfem_sources", "add_material"); + addTaskDependency("add_mfem_sources", "add_variable"); + addTaskDependency("add_mfem_sources", "add_aux_variable"); + + // add FESpaces + registerMooseObjectTask("add_mfem_fespaces", MFEMFESpace, false); + registerSyntaxTask("AddFESpaceAction", "FESpaces/*", "add_mfem_fespaces"); + addTaskDependency("add_variable", "add_mfem_fespaces"); + addTaskDependency("add_aux_variable", "add_mfem_fespaces"); + addTaskDependency("add_elemental_field_variable", "add_mfem_fespaces"); + addTaskDependency("add_kernel", "add_mfem_fespaces"); + addTaskDependency("add_mfem_sources", "add_mfem_fespaces"); +} + +void +PlatypusApp::registerAll(Factory & f, ActionFactory & af, Syntax & s) +{ + ModulesApp::registerAll(f, af, s); + Registry::registerObjectsTo(f, {"PlatypusApp"}); + Registry::registerActionsTo(af, {"PlatypusApp"}); + /* register custom execute flags, action syntax, etc. here */ + associateSyntaxInner(s, af); +} + +void +PlatypusApp::registerApps() +{ + registerApp(PlatypusApp); +} + +/*************************************************************************************************** + *********************** Dynamic Library Entry Points - DO NOT MODIFY ****************************** + **************************************************************************************************/ +extern "C" void +PlatypusApp__registerAll(Factory & f, ActionFactory & af, Syntax & s) +{ + PlatypusApp::registerAll(f, af, s); +} +extern "C" void +PlatypusApp__registerApps() +{ + PlatypusApp::registerApps(); +} diff --git a/src/bcs/MFEMBoundaryCondition.C b/src/bcs/MFEMBoundaryCondition.C new file mode 100644 index 00000000..6d596296 --- /dev/null +++ b/src/bcs/MFEMBoundaryCondition.C @@ -0,0 +1,31 @@ +#include "MFEMBoundaryCondition.h" + +registerMooseObject("PlatypusApp", MFEMBoundaryCondition); + +InputParameters +MFEMBoundaryCondition::validParams() +{ + InputParameters params = GeneralUserObject::validParams(); + + params.registerBase("BoundaryCondition"); + + // Create user-facing 'boundary' input for restricting inheriting object to boundaries + params.addParam>( + "boundary", + "The list of boundaries (ids or names) from the mesh where this boundary condition applies"); + params.addParam("variable", "Variable on which to apply the boundary condition"); + return params; +} + +MFEMBoundaryCondition::MFEMBoundaryCondition(const InputParameters & parameters) + : GeneralUserObject(parameters), + _boundary_names(getParam>("boundary")), + bdr_attr(_boundary_names.size()) +{ + for (unsigned int i = 0; i < _boundary_names.size(); ++i) + { + bdr_attr[i] = std::stoi(_boundary_names[i]); + } + _boundary_condition = + std::make_shared(getParam("variable"), bdr_attr); +} diff --git a/src/bcs/MFEMComplexVectorDirichletBC.C b/src/bcs/MFEMComplexVectorDirichletBC.C new file mode 100644 index 00000000..ed9e8cc3 --- /dev/null +++ b/src/bcs/MFEMComplexVectorDirichletBC.C @@ -0,0 +1,33 @@ +#include "MFEMComplexVectorDirichletBC.h" + +registerMooseObject("PlatypusApp", MFEMComplexVectorDirichletBC); + +InputParameters +MFEMComplexVectorDirichletBC::validParams() +{ + InputParameters params = MFEMBoundaryCondition::validParams(); + params.addRequiredParam( + "real_vector_coefficient", + "The vector MFEM coefficient representing the real component of the variable on which the " + "Dirichlet condition is being applied"); + params.addRequiredParam("imag_vector_coefficient", + "The vector MFEM coefficient representing the imaginary " + "component of the variable on which the " + "Dirichlet condition is being applied"); + return params; +} + +// TODO: Currently assumes the vector function coefficient is 3D +MFEMComplexVectorDirichletBC::MFEMComplexVectorDirichletBC(const InputParameters & parameters) + : MFEMBoundaryCondition(parameters), + _vec_coef_re(const_cast( + &getUserObject("real_vector_coefficient"))), + _vec_coef_im(const_cast( + &getUserObject("imag_vector_coefficient"))) +{ + _boundary_condition = + std::make_shared(getParam("variable"), + bdr_attr, + _vec_coef_re->getVectorCoefficient().get(), + _vec_coef_im->getVectorCoefficient().get()); +} diff --git a/src/bcs/MFEMScalarDirichletBC.C b/src/bcs/MFEMScalarDirichletBC.C new file mode 100644 index 00000000..90d68e61 --- /dev/null +++ b/src/bcs/MFEMScalarDirichletBC.C @@ -0,0 +1,20 @@ +#include "MFEMScalarDirichletBC.h" + +registerMooseObject("PlatypusApp", MFEMScalarDirichletBC); + +InputParameters +MFEMScalarDirichletBC::validParams() +{ + InputParameters params = MFEMBoundaryCondition::validParams(); + params.addRequiredParam( + "coefficient", "The scalar MFEM coefficient to use in the Dirichlet condition"); + return params; +} + +MFEMScalarDirichletBC::MFEMScalarDirichletBC(const InputParameters & parameters) + : MFEMBoundaryCondition(parameters), + _coef(const_cast(&getUserObject("coefficient"))) +{ + _boundary_condition = std::make_shared( + getParam("variable"), bdr_attr, _coef->getCoefficient().get()); +} diff --git a/src/bcs/MFEMVectorDirichletBC.C b/src/bcs/MFEMVectorDirichletBC.C new file mode 100644 index 00000000..496a1aa1 --- /dev/null +++ b/src/bcs/MFEMVectorDirichletBC.C @@ -0,0 +1,22 @@ +#include "MFEMVectorDirichletBC.h" + +registerMooseObject("PlatypusApp", MFEMVectorDirichletBC); + +InputParameters +MFEMVectorDirichletBC::validParams() +{ + InputParameters params = MFEMBoundaryCondition::validParams(); + params.addRequiredParam( + "vector_coefficient", "The vector MFEM coefficient to use in the Dirichlet condition"); + return params; +} + +// TODO: Currently assumes the vector function coefficient is 3D +MFEMVectorDirichletBC::MFEMVectorDirichletBC(const InputParameters & parameters) + : MFEMBoundaryCondition(parameters), + _vec_coef(const_cast( + &getUserObject("vector_coefficient"))) +{ + _boundary_condition = std::make_shared( + getParam("variable"), bdr_attr, _vec_coef->getVectorCoefficient().get()); +} diff --git a/src/bcs/MFEMVectorNormalIntegratedBC.C b/src/bcs/MFEMVectorNormalIntegratedBC.C new file mode 100644 index 00000000..8c4e1fe9 --- /dev/null +++ b/src/bcs/MFEMVectorNormalIntegratedBC.C @@ -0,0 +1,26 @@ +#include "MFEMVectorNormalIntegratedBC.h" + +registerMooseObject("PlatypusApp", MFEMVectorNormalIntegratedBC); + +InputParameters +MFEMVectorNormalIntegratedBC::validParams() +{ + InputParameters params = MFEMBoundaryCondition::validParams(); + params.addRequiredParam( + "vector_coefficient", + "The vector MFEM coefficient whose normal component will be used in the integrated BC"); + return params; +} + +// TODO: Currently assumes the vector function coefficient is 3D +MFEMVectorNormalIntegratedBC::MFEMVectorNormalIntegratedBC(const InputParameters & parameters) + : MFEMBoundaryCondition(parameters), + _vec_coef(const_cast( + &getUserObject("vector_coefficient"))) +{ + + _boundary_condition = std::make_shared( + getParam("variable"), + bdr_attr, + std::make_unique(*_vec_coef->getVectorCoefficient())); +} diff --git a/src/coefficients/MFEMCoefficient.C b/src/coefficients/MFEMCoefficient.C new file mode 100644 index 00000000..4b159666 --- /dev/null +++ b/src/coefficients/MFEMCoefficient.C @@ -0,0 +1,23 @@ +#include "MFEMCoefficient.h" + +registerMooseObject("PlatypusApp", MFEMCoefficient); + +libMesh::Point +PointFromMFEMVector(const mfem::Vector & vec) +{ + return libMesh::Point(vec.Elem(0), vec.Elem(1), vec.Elem(2)); +} + +InputParameters +MFEMCoefficient::validParams() +{ + InputParameters params = GeneralUserObject::validParams(); + params.registerBase("MFEMCoefficient"); + return params; +} + +MFEMCoefficient::MFEMCoefficient(const InputParameters & parameters) : GeneralUserObject(parameters) +{ +} + +MFEMCoefficient::~MFEMCoefficient() {} diff --git a/src/coefficients/MFEMConstantCoefficient.C b/src/coefficients/MFEMConstantCoefficient.C new file mode 100644 index 00000000..18a360dc --- /dev/null +++ b/src/coefficients/MFEMConstantCoefficient.C @@ -0,0 +1,19 @@ +#include "MFEMConstantCoefficient.h" + +registerMooseObject("PlatypusApp", MFEMConstantCoefficient); + +InputParameters +MFEMConstantCoefficient::validParams() +{ + InputParameters params = MFEMCoefficient::validParams(); + params.addRequiredParam("value", "Value for the ConstantCoefficient"); + return params; +} + +MFEMConstantCoefficient::MFEMConstantCoefficient(const InputParameters & parameters) + : MFEMCoefficient(parameters), + coefficient{std::make_shared(getParam("value"))} +{ +} + +MFEMConstantCoefficient::~MFEMConstantCoefficient() {} diff --git a/src/coefficients/MFEMFunctionCoefficient.C b/src/coefficients/MFEMFunctionCoefficient.C new file mode 100644 index 00000000..bcbd4dcc --- /dev/null +++ b/src/coefficients/MFEMFunctionCoefficient.C @@ -0,0 +1,21 @@ +#include "MFEMFunctionCoefficient.h" + +registerMooseObject("PlatypusApp", MFEMFunctionCoefficient); + +InputParameters +MFEMFunctionCoefficient::validParams() +{ + InputParameters params = MFEMCoefficient::validParams(); + params.addParam("function", 0, "The function to associated with the Dirichlet BC"); + return params; +} + +MFEMFunctionCoefficient::MFEMFunctionCoefficient(const InputParameters & parameters) + : MFEMCoefficient(parameters), + _func(getFunction("function")), + _coefficient(std::make_shared( + [&](const mfem::Vector & p, double t) { return _func.value(t, PointFromMFEMVector(p)); })) +{ +} + +MFEMFunctionCoefficient::~MFEMFunctionCoefficient() {} diff --git a/src/coefficients/MFEMParsedCoefficient.C b/src/coefficients/MFEMParsedCoefficient.C new file mode 100644 index 00000000..4e5a461e --- /dev/null +++ b/src/coefficients/MFEMParsedCoefficient.C @@ -0,0 +1,24 @@ +#include "MFEMParsedCoefficient.h" + +registerMooseObject("MooseApp", MFEMParsedCoefficient); + +InputParameters +MFEMParsedCoefficient::validParams() +{ + InputParameters params = MFEMParsedCoefficientHelper::validParams(); + params += MFEMParsedCoefficientBase::validParams(); + params.addClassDescription("MFEM Parsed Function Coefficient."); + return params; +} + +MFEMParsedCoefficient::MFEMParsedCoefficient(const InputParameters & parameters) + : MFEMParsedCoefficientHelper(parameters, VariableNameMappingMode::USE_MOOSE_NAMES), + MFEMParsedCoefficientBase(parameters) +{ + // Build function and optimize + functionParse(_function, + _constant_names, + _constant_expressions, + getParam>("mfem_coefficient_names"), + getParam>("mfem_gridfunction_names")); +} diff --git a/src/coefficients/MFEMParsedCoefficientBase.C b/src/coefficients/MFEMParsedCoefficientBase.C new file mode 100644 index 00000000..7f644aaf --- /dev/null +++ b/src/coefficients/MFEMParsedCoefficientBase.C @@ -0,0 +1,50 @@ +#include "MFEMParsedCoefficientBase.h" + +InputParameters +MFEMParsedCoefficientBase::validParams() +{ + InputParameters params = emptyInputParameters(); + params.addCoupledVar("args", "Arguments of F() - use vector coupling"); + + // Constants and their values + params.addParam>( + "constant_names", + std::vector(), + "Vector of constants used in the parsed function (use this for kB etc.)"); + params.addParam>( + "constant_expressions", + std::vector(), + "Vector of values for the constants in constant_names (can be an FParser expression)"); + + // Material properties + params.addParam>( + "mfem_gridfunction_names", + std::vector(), + "Vector of MFEM gridfunctions names used in the parsed function"); + + // Postprocessors + params.addParam>( + "mfem_coefficient_names", + std::vector(), + "Vector of MFEM coefficient names used in the parsed function"); + + // Function expression + params.addRequiredCustomTypeParam( + "function", "FunctionExpression", "FParser function expression for the parsed material"); + + return params; +} + +MFEMParsedCoefficientBase::MFEMParsedCoefficientBase(const InputParameters & parameters) +{ + // get function expression + _function = parameters.get("function"); + + // get constant vectors + _constant_names = parameters.get>("constant_names"); + _constant_expressions = parameters.get>("constant_expressions"); + + // get mfem object names + _mfem_coefficient_names = parameters.get>("mfem_coefficient_names"); + _mfem_gridfunction_names = parameters.get>("mfem_gridfunction_names"); +} diff --git a/src/coefficients/MFEMParsedCoefficientHelper.C b/src/coefficients/MFEMParsedCoefficientHelper.C new file mode 100644 index 00000000..4b32496b --- /dev/null +++ b/src/coefficients/MFEMParsedCoefficientHelper.C @@ -0,0 +1,163 @@ +#include "MFEMParsedCoefficientHelper.h" + +InputParameters +MFEMParsedCoefficientHelper::validParams() +{ + InputParameters params = MFEMCoefficient::validParams(); + params += FunctionParserUtils::validParams(); + params.addClassDescription( + "Class to create mfem::Coefficients which evaluate to a provided parsed function."); + return params; +} + +MFEMParsedCoefficientHelper::MFEMParsedCoefficientHelper(const InputParameters & parameters, + VariableNameMappingMode map_mode) + : MFEMCoefficient(parameters), + hephaestus::CoupledCoefficient(hephaestus::InputParameters( + std::map({{"CoupledVariableName", std::string("dummy_variable")}}))), + FunctionParserUtils(parameters), + _symbol_names(0), + _coefficient_names(0) +{ +} + +void +MFEMParsedCoefficientHelper::functionParse(const std::string & function_expression) +{ + const std::vector empty_string_vector; + functionParse(function_expression, empty_string_vector, empty_string_vector); +} + +void +MFEMParsedCoefficientHelper::functionParse(const std::string & function_expression, + const std::vector & constant_names, + const std::vector & constant_expressions) +{ + const std::vector empty_string_vector; + const std::vector empty_real_vector; + functionParse(function_expression, constant_names, constant_expressions, empty_string_vector); +} + +void +MFEMParsedCoefficientHelper::functionParse(const std::string & function_expression, + const std::vector & constant_names, + const std::vector & constant_expressions, + const std::vector & mfem_coefficient_names) +{ + const std::vector empty_string_vector; + functionParse(function_expression, + constant_names, + constant_expressions, + mfem_coefficient_names, + empty_string_vector); +} + +void +MFEMParsedCoefficientHelper::functionParse(const std::string & function_expression, + const std::vector & constant_names, + const std::vector & constant_expressions, + const std::vector & mfem_coefficient_names, + const std::vector & mfem_gridfunction_names) +{ + // build base function object + _func_F = std::make_shared(); + + // set FParser internal feature flags + setParserFeatureFlags(_func_F); + + // initialize constants + addFParserConstants(_func_F, constant_names, constant_expressions); + + // Store all MFEM gridfunction names + unsigned int nmfem_gfs = mfem_gridfunction_names.size(); + _gridfunctions.resize(nmfem_gfs); + for (const auto & gfname : mfem_gridfunction_names) + { + _gridfunction_names.push_back(gfname); + _symbol_names.push_back(gfname); + } + + // Store all MFEM coefficient names + unsigned int nmfem_coefs = mfem_coefficient_names.size(); + _coefficients.resize(nmfem_coefs); + for (const auto & coefname : mfem_coefficient_names) + { + _coefficient_names.push_back(coefname); + _symbol_names.push_back(coefname); + } + + // build 'variables' argument for fparser + std::string variables = Moose::stringify(_symbol_names); + + // build the base function + if (_func_F->Parse(function_expression, variables) >= 0) + mooseError("Invalid function\n", + function_expression, + '\n', + variables, + "\nin MFEMParsedCoefficientHelper.\n", + _func_F->ErrorMsg()); + + // create parameter passing buffer + _func_params.resize(nmfem_coefs + nmfem_gfs); + + // optimise function + functionsOptimize(); +} + +void +MFEMParsedCoefficientHelper::functionsOptimize() +{ + // base function + if (!_disable_fpoptimizer) + _func_F->Optimize(); + if (_enable_jit && !_func_F->JITCompile()) + mooseInfo("Failed to JIT compile expression, falling back to byte code interpretation."); +} + +void +MFEMParsedCoefficientHelper::Init(const hephaestus::GridFunctions & variables, + hephaestus::Coefficients & coefficients) +{ + auto nmfem_gfs = _gridfunction_names.size(); + for (MooseIndex(_gridfunction_names) i = 0; i < nmfem_gfs; ++i) + { + if (variables.Has(_gridfunction_names[i])) + { + _gridfunctions[i] = variables.Get(_gridfunction_names[i]); + } + else + { + mooseError("Invalid gridfunction\n", + _gridfunction_names[i], + "\n", + "not found in variables when\n" + "creating MFEMParsedCoefficient\n", + "in MFEMParsedCoefficientHelper.\n"); + } + } + + auto nmfem_coefs = _coefficient_names.size(); + for (MooseIndex(_coefficient_names) i = 0; i < nmfem_coefs; ++i) + { + _coefficients[i] = coefficients._scalars.Get(_coefficient_names[i]); + } +} + +double +MFEMParsedCoefficientHelper::Eval(mfem::ElementTransformation & trans, + const mfem::IntegrationPoint & ip) +{ + // insert coefficient values + auto nmfem_coefs = _coefficient_names.size(); + for (MooseIndex(_coefficient_names) i = 0; i < nmfem_coefs; ++i) + _func_params[i] = _coefficients[i]->Eval(trans, ip); + + // insert gridfunction values + auto nmfem_gfs = _gridfunction_names.size(); + for (MooseIndex(_gridfunction_names) i = 0; i < nmfem_gfs; ++i) + _func_params[i + nmfem_coefs] = _gridfunctions[i]->GetValue(trans, ip); + + // set function value + return evaluate(_func_F, _name); +} diff --git a/src/coefficients/MFEMVariableDependentFunctionCoefficient.C b/src/coefficients/MFEMVariableDependentFunctionCoefficient.C new file mode 100644 index 00000000..0298f5b6 --- /dev/null +++ b/src/coefficients/MFEMVariableDependentFunctionCoefficient.C @@ -0,0 +1,33 @@ +#include "MFEMVariableDependentFunctionCoefficient.h" + +registerMooseObject("PlatypusApp", MFEMVariableDependentFunctionCoefficient); + +InputParameters +MFEMVariableDependentFunctionCoefficient::validParams() +{ + InputParameters params = MFEMCoefficient::validParams(); + params.addParam( + "function", 1, "The function acting on the MFEM variable to return the coefficient"); + + params.addParam("coupled_variable", "The MFEMVariable the coefficient depends on."); + return params; +} + +MFEMVariableDependentFunctionCoefficient::MFEMVariableDependentFunctionCoefficient( + const InputParameters & parameters) + : MFEMCoefficient(parameters), + hephaestus::CoupledCoefficient(hephaestus::InputParameters( + {{"CoupledVariableName", getParam("coupled_variable")}})), + _func(getFunction("function")) +{ +} + +double +MFEMVariableDependentFunctionCoefficient::Eval(mfem::ElementTransformation & trans, + const mfem::IntegrationPoint & ip) +{ + auto gf_value{hephaestus::CoupledCoefficient::Eval(trans, ip)}; + return _func.value(gf_value); +}; + +MFEMVariableDependentFunctionCoefficient::~MFEMVariableDependentFunctionCoefficient() {} diff --git a/src/coefficients/MFEMVectorCoefficient.C b/src/coefficients/MFEMVectorCoefficient.C new file mode 100644 index 00000000..5ff0b05c --- /dev/null +++ b/src/coefficients/MFEMVectorCoefficient.C @@ -0,0 +1,18 @@ +#include "MFEMVectorCoefficient.h" + +registerMooseObject("PlatypusApp", MFEMVectorCoefficient); + +InputParameters +MFEMVectorCoefficient::validParams() +{ + InputParameters params = GeneralUserObject::validParams(); + params.registerBase("MFEMVectorCoefficient"); + return params; +} + +MFEMVectorCoefficient::MFEMVectorCoefficient(const InputParameters & parameters) + : GeneralUserObject(parameters) +{ +} + +MFEMVectorCoefficient::~MFEMVectorCoefficient() {} diff --git a/src/coefficients/MFEMVectorConstantCoefficient.C b/src/coefficients/MFEMVectorConstantCoefficient.C new file mode 100644 index 00000000..628a6086 --- /dev/null +++ b/src/coefficients/MFEMVectorConstantCoefficient.C @@ -0,0 +1,23 @@ +#include "MFEMVectorConstantCoefficient.h" + +registerMooseObject("PlatypusApp", MFEMVectorConstantCoefficient); + +InputParameters +MFEMVectorConstantCoefficient::validParams() +{ + InputParameters params = MFEMVectorCoefficient::validParams(); + params.addRequiredParam("value_x", "x component of the VectorConstantCoefficient"); + params.addRequiredParam("value_y", "y component of the VectorConstantCoefficient"); + params.addRequiredParam("value_z", "z component of the VectorConstantCoefficient"); + return params; +} + +MFEMVectorConstantCoefficient::MFEMVectorConstantCoefficient(const InputParameters & parameters) + : MFEMVectorCoefficient(parameters), + _vector( + {getParam("value_x"), getParam("value_y"), getParam("value_z")}), + _vector_coefficient{std::make_shared(_vector)} +{ +} + +MFEMVectorConstantCoefficient::~MFEMVectorConstantCoefficient() {} diff --git a/src/coefficients/MFEMVectorFunctionCoefficient.C b/src/coefficients/MFEMVectorFunctionCoefficient.C new file mode 100644 index 00000000..f09668fd --- /dev/null +++ b/src/coefficients/MFEMVectorFunctionCoefficient.C @@ -0,0 +1,28 @@ +#include "MFEMVectorFunctionCoefficient.h" + +registerMooseObject("PlatypusApp", MFEMVectorFunctionCoefficient); + +InputParameters +MFEMVectorFunctionCoefficient::validParams() +{ + InputParameters params = MFEMVectorCoefficient::validParams(); + params.addParam("function", 0, "The function to associated with the Dirichlet BC"); + return params; +} + +MFEMVectorFunctionCoefficient::MFEMVectorFunctionCoefficient(const InputParameters & parameters) + : MFEMVectorCoefficient(parameters), + _func(getFunction("function")), + _vector_coefficient(std::make_shared( + 3, + [&](const mfem::Vector & p, double t, mfem::Vector & u) + { + libMesh::RealVectorValue vector_value = _func.vectorValue(t, PointFromMFEMVector(p)); + u[0] = vector_value(0); + u[1] = vector_value(1); + u[2] = vector_value(2); + })) +{ +} + +MFEMVectorFunctionCoefficient::~MFEMVectorFunctionCoefficient() {} diff --git a/src/fespaces/MFEMFESpace.C b/src/fespaces/MFEMFESpace.C new file mode 100644 index 00000000..260dbb75 --- /dev/null +++ b/src/fespaces/MFEMFESpace.C @@ -0,0 +1,48 @@ +#include "MFEMFESpace.h" + +registerMooseObject("PlatypusApp", MFEMFESpace); + +InputParameters +MFEMFESpace::validParams() +{ + InputParameters params = GeneralUserObject::validParams(); + params.registerBase("MFEMFESpace"); + MooseEnum fespace_types("H1 ND RT L2", "H1", true); + params.addParam( + "fespace_type", + fespace_types, + "Specifies the family of FE shape functions (FE space) to use for this variable."); + MooseEnum order( + "CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH" + "THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH " + "TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH " + "TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH " + "THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST" + "FORTYSECOND FORTYTHIRD", + "FIRST", + true); + params.addParam("order", + order, + "Order of the FE shape function to use for this variable (additional" + "orders not listed here are allowed," + "depending on the family."); + params.addParam("vdim", 1, "Dimension of degrees of freedom"); + return params; +} + +MFEMFESpace::MFEMFESpace(const InputParameters & parameters) + : GeneralUserObject(parameters), + order(parameters.get("order")), + vdim(parameters.get("vdim")), + fespace_type(parameters.get("fespace_type")), + fec_name(createFECName(fespace_type, order)) +{ +} + +const std::string +MFEMFESpace::createFECName(const std::string & fespace_type, const int order) +{ + return fespace_type + "_3D_P" + std::to_string(order); +} + +MFEMFESpace::~MFEMFESpace() {} diff --git a/src/formulations/CustomFormulation.C b/src/formulations/CustomFormulation.C new file mode 100644 index 00000000..3d647b0b --- /dev/null +++ b/src/formulations/CustomFormulation.C @@ -0,0 +1,18 @@ +#include "CustomFormulation.h" + +registerMooseObject("PlatypusApp", CustomFormulation); + +InputParameters +CustomFormulation::validParams() +{ + InputParameters params = MFEMFormulation::validParams(); + return params; +} + +CustomFormulation::CustomFormulation(const InputParameters & parameters) + : MFEMFormulation(parameters) +{ + formulation = std::make_shared(); +} + +CustomFormulation::~CustomFormulation() {} diff --git a/src/formulations/MFEMFormulation.C b/src/formulations/MFEMFormulation.C new file mode 100644 index 00000000..f1ef4897 --- /dev/null +++ b/src/formulations/MFEMFormulation.C @@ -0,0 +1,17 @@ +#include "MFEMFormulation.h" + +registerMooseObject("PlatypusApp", MFEMFormulation); + +InputParameters +MFEMFormulation::validParams() +{ + InputParameters params = GeneralUserObject::validParams(); + params.registerBase("MFEMFormulation"); + return params; +} + +MFEMFormulation::MFEMFormulation(const InputParameters & parameters) : GeneralUserObject(parameters) +{ +} + +MFEMFormulation::~MFEMFormulation() {} diff --git a/src/kernels/MFEMBilinearFormKernel.C b/src/kernels/MFEMBilinearFormKernel.C new file mode 100644 index 00000000..1b53e535 --- /dev/null +++ b/src/kernels/MFEMBilinearFormKernel.C @@ -0,0 +1,19 @@ +#include "MFEMBilinearFormKernel.h" + +registerMooseObject("PlatypusApp", MFEMBilinearFormKernel); + +InputParameters +MFEMBilinearFormKernel::validParams() +{ + InputParameters params = GeneralUserObject::validParams(); + + params.registerBase("Kernel"); + params.addParam("variable", "Variable on which to apply the kernel"); + + return params; +} + +MFEMBilinearFormKernel::MFEMBilinearFormKernel(const InputParameters & parameters) + : GeneralUserObject(parameters) +{ +} diff --git a/src/kernels/MFEMDiffusionKernel.C b/src/kernels/MFEMDiffusionKernel.C new file mode 100644 index 00000000..bdd2ee3f --- /dev/null +++ b/src/kernels/MFEMDiffusionKernel.C @@ -0,0 +1,25 @@ +#include "MFEMDiffusionKernel.h" + +registerMooseObject("PlatypusApp", MFEMDiffusionKernel); + +InputParameters +MFEMDiffusionKernel::validParams() +{ + InputParameters params = MFEMBilinearFormKernel::validParams(); + params.addClassDescription( + "The Laplacian operator ($-k\\nabla \\cdot \\nabla u$), with the weak " + "form of $ (k\\nabla \\phi_i, \\nabla u_h), to be added to an MFEM problem"); + + params.addParam("coefficient", + "Name of MFEM coefficient k to multiply the Laplacian by"); + + return params; +} + +MFEMDiffusionKernel::MFEMDiffusionKernel(const InputParameters & parameters) + : MFEMBilinearFormKernel(parameters), + _kernel_params{{{"VariableName", getParam("variable")}, + {"CoefficientName", getParam("coefficient")}}}, + _kernel{std::make_shared(_kernel_params)} +{ +} diff --git a/src/kernels/MFEMLinearFormKernel.C b/src/kernels/MFEMLinearFormKernel.C new file mode 100644 index 00000000..1fa281af --- /dev/null +++ b/src/kernels/MFEMLinearFormKernel.C @@ -0,0 +1,21 @@ +#include "MFEMLinearFormKernel.h" + +registerMooseObject("PlatypusApp", MFEMLinearFormKernel); + +InputParameters +MFEMLinearFormKernel::validParams() +{ + InputParameters params = GeneralUserObject::validParams(); + + params.registerBase("Kernel"); + params.addParam("variable", "Variable on which to apply the kernel"); + + return params; +} + +MFEMLinearFormKernel::MFEMLinearFormKernel(const InputParameters & parameters) + : GeneralUserObject(parameters) +{ +} + +MFEMLinearFormKernel::~MFEMLinearFormKernel() {} diff --git a/src/main.C b/src/main.C new file mode 100644 index 00000000..bbd5b61b --- /dev/null +++ b/src/main.C @@ -0,0 +1,27 @@ +#include "PlatypusTestApp.h" +#include "MooseInit.h" +#include "Moose.h" +#include "MooseApp.h" +#include "AppFactory.h" + +// Create a performance log +PerfLog Moose::perf_log("Platypus"); + +// Begin the main program. +int +main(int argc, char * argv[]) +{ + // Initialize MPI, solvers and MOOSE + MooseInit init(argc, argv); + + // Register this application's MooseApp and any it depends on + PlatypusTestApp::registerApps(); + + // Create an instance of the application and store it in a smart pointer for easy cleanup + std::shared_ptr app = AppFactory::createAppShared("PlatypusTestApp", argc, argv); + + // Execute the application + app->run(); + + return 0; +} diff --git a/src/materials/MFEMMaterial.C b/src/materials/MFEMMaterial.C new file mode 100644 index 00000000..a687185b --- /dev/null +++ b/src/materials/MFEMMaterial.C @@ -0,0 +1,24 @@ +#include "MFEMMaterial.h" + +registerMooseObject("PlatypusApp", MFEMMaterial); + +InputParameters +MFEMMaterial::validParams() +{ + InputParameters params = GeneralUserObject::validParams(); + + params.set("_moose_base") = "MaterialBase"; + params.addPrivateParam("_neighbor", false); + params.addPrivateParam("_interface", false); + + params.addParam>( + "block", "The list of blocks (ids or names) that this object will be applied"); + return params; +} + +MFEMMaterial::MFEMMaterial(const InputParameters & parameters) + : GeneralUserObject(parameters), blocks(getParam>("block")) +{ +} + +MFEMMaterial::~MFEMMaterial() {} diff --git a/src/mesh/CoupledMFEMMesh.C b/src/mesh/CoupledMFEMMesh.C new file mode 100644 index 00000000..da3920ab --- /dev/null +++ b/src/mesh/CoupledMFEMMesh.C @@ -0,0 +1,566 @@ +//* This file is part of the MOOSE framework +//* https://www.mooseframework.org +//* +//* All rights reserved, see COPYRIGHT for full restrictions +//* https://github.com/idaholab/moose/blob/master/COPYRIGHT +//* +//* Licensed under LGPL 2.1, please see LICENSE for details +//* https://www.gnu.org/licenses/lgpl-2.1.html + +#include "CoupledMFEMMesh.h" + +registerMooseObject("PlatypusApp", CoupledMFEMMesh); + +InputParameters +CoupledMFEMMesh::validParams() +{ + InputParameters params = ExclusiveMFEMMesh::validParams(); + return params; +} + +CoupledMFEMMesh::CoupledMFEMMesh(const InputParameters & parameters) + : ExclusiveMFEMMesh(parameters), _block_info(_dim) +{ +} + +CoupledMFEMMesh::~CoupledMFEMMesh() {} + +void +CoupledMFEMMesh::buildMesh() +{ + // Use method from file mesh to build MOOSE mesh from Exodus file. + FileMesh::buildMesh(); +} + +std::unique_ptr +CoupledMFEMMesh::safeClone() const +{ + return std::make_unique(*this); +} + +void +CoupledMFEMMesh::buildBoundaryInfo(std::map> & element_ids_for_boundary_id, + std::map> & side_ids_for_boundary_id) +{ + buildBndElemList(); + + struct BoundaryElementAndSideIDs + { + std::vector element_ids; // Element ids for a boundary id. + std::vector side_ids; // Side ids for a boundary id. + + BoundaryElementAndSideIDs() : element_ids{}, side_ids{} {} + }; + + std::vector unique_boundary_ids; + std::map boundary_ids_map; + + // Iterate over elements on the boundary to build the map that allows us to go + // from a boundary id to a vector of element id/side ids. + for (auto boundary_element : _bnd_elems) + { + auto boundary_id = boundary_element->_bnd_id; + + bool is_new_boundary_id = (boundary_ids_map.count(boundary_id) == 0); + + if (is_new_boundary_id) // Initialize new struct. + { + boundary_ids_map[boundary_id] = BoundaryElementAndSideIDs(); + unique_boundary_ids.push_back(boundary_id); + } + + auto element_id = boundary_element->_elem->id(); // ID of element on boundary. + auto side_id = boundary_element->_side; // ID of side that element is on. + + boundary_ids_map[boundary_id].element_ids.push_back(element_id); + boundary_ids_map[boundary_id].side_ids.push_back(side_id); + } + + // Sort. + std::sort(unique_boundary_ids.begin(), unique_boundary_ids.end()); + + // Run through the (key, value) pairs in the boundary_ids_map map. + for (const auto & key_value_pair : boundary_ids_map) + { + auto boundary_id = key_value_pair.first; + + auto element_ids = key_value_pair.second.element_ids; + auto side_ids = key_value_pair.second.side_ids; + + element_ids_for_boundary_id[boundary_id] = std::move(element_ids); + side_ids_for_boundary_id[boundary_id] = std::move(side_ids); + } +} + +std::vector +CoupledMFEMMesh::getSideBoundaryIDs() const +{ + const libMesh::BoundaryInfo & boundary_info = getMesh().get_boundary_info(); + const std::set & side_boundary_ids_set = boundary_info.get_side_boundary_ids(); + + std::vector side_boundary_ids(side_boundary_ids_set.size()); + + int counter = 0; + for (auto side_boundary_id : side_boundary_ids_set) + { + side_boundary_ids[counter++] = side_boundary_id; + } + + std::sort(side_boundary_ids.begin(), side_boundary_ids.end()); + + return side_boundary_ids; +} + +bool +CoupledMFEMMesh::isDistributedMesh() const +{ + return (!getMesh().is_replicated() && n_processors() > 1); +} + +void +CoupledMFEMMesh::buildCubitBlockInfo(const std::vector & unique_block_ids) +{ + /** + * Iterate over the block_ids. Note that we only need to extract the first element from + * each block since only a single element type can be specified per block. + */ + for (int block_id : unique_block_ids) + { + auto element_range = getMesh().active_subdomain_elements_ptr_range(block_id); + if (element_range.begin() == element_range.end()) + { + mooseError("Block '", block_id, "' contains no elements."); + } + + auto first_element_ptr = *element_range.begin(); + + blockInfo().addBlockElement(block_id, first_element_ptr->n_nodes()); + } +} + +std::vector +CoupledMFEMMesh::getLibmeshBlockIDs() const +{ + auto & libmesh = getMesh(); + + // Identify all subdomains (blocks) in the entire mesh (global == true). + std::set block_ids_set; + libmesh.subdomain_ids(block_ids_set, true); + + std::vector unique_block_ids(block_ids_set.size()); + + int counter = 0; + for (auto block_id : block_ids_set) + { + unique_block_ids[counter++] = block_id; + } + + return unique_block_ids; +} + +void +CoupledMFEMMesh::buildElementAndNodeIDs(const std::vector & unique_block_ids, + std::map> & element_ids_for_block_id, + std::map> & node_ids_for_element_id) +{ + for (int block_id : unique_block_ids) + { + auto & element_info = blockElement(block_id); + + std::vector elements_in_block; + + auto active_block_elements_begin = getMesh().active_subdomain_elements_begin(block_id); + auto active_block_elements_end = getMesh().active_subdomain_elements_end(block_id); + + for (auto element_iterator = active_block_elements_begin; + element_iterator != active_block_elements_end; + element_iterator++) + { + auto element_ptr = *element_iterator; + + const int element_id = element_ptr->id(); + + std::vector element_node_ids(element_info.numNodes()); + + elements_in_block.push_back(element_id); + + for (int node_counter = 0; node_counter < element_info.numNodes(); node_counter++) + { + element_node_ids[node_counter] = element_ptr->node_id(node_counter); + } + + node_ids_for_element_id[element_id] = std::move(element_node_ids); + } + + elements_in_block.shrink_to_fit(); + + // Add to map. + element_ids_for_block_id[block_id] = std::move(elements_in_block); + } +} + +void +CoupledMFEMMesh::buildUniqueCornerNodeIDs( + std::vector & unique_corner_node_ids, + const std::vector & unique_block_ids, + const std::map> & element_ids_for_block_id, + const std::map> & node_ids_for_element_id) +{ + // Iterate through all nodes (on edge of each element) and add their global IDs + // to the unique_corner_node_ids vector. + for (int block_id : unique_block_ids) + { + auto & block_element = blockElement(block_id); + + auto & element_ids = element_ids_for_block_id.at(block_id); + + for (int element_id : element_ids) + { + auto & node_ids = node_ids_for_element_id.at(element_id); + + // Only use the nodes on the edge of the element! + for (int knode = 0; knode < block_element.numCornerNodes(); knode++) + { + unique_corner_node_ids.push_back(node_ids[knode]); + } + } + } + + // Sort unique_vertex_ids in ascending order and remove duplicate node IDs. + std::sort(unique_corner_node_ids.begin(), unique_corner_node_ids.end()); + + auto new_end = std::unique(unique_corner_node_ids.begin(), unique_corner_node_ids.end()); + + unique_corner_node_ids.resize(std::distance(unique_corner_node_ids.begin(), new_end)); +} + +void +CoupledMFEMMesh::buildMFEMMesh() +{ + // 1. If the mesh is distributed and split between more than one processor, + // we need to call allgather on each processor. This will gather the nodes + // and elements onto each processor. + if (isDistributedMesh()) + { + getMesh().allgather(); + } + + // 2. Get the unique libmesh IDs of each block in the mesh. + std::vector unique_block_ids = getLibmeshBlockIDs(); + + // 3. Retrieve information about the elements used within the mesh. + buildCubitBlockInfo(unique_block_ids); + + // 4. Build maps: + // Map from block ID --> vector of element IDs. + // Map from element ID --> vector of global node IDs. + std::map> element_ids_for_block_id; + std::map> node_ids_for_element_id; + + buildElementAndNodeIDs(unique_block_ids, element_ids_for_block_id, node_ids_for_element_id); + + // 5. Create vector containing the IDs of all nodes that are on the corners of + // elements. MFEM only requires the corner nodes. + std::vector unique_corner_node_ids; + + buildUniqueCornerNodeIDs( + unique_corner_node_ids, unique_block_ids, element_ids_for_block_id, node_ids_for_element_id); + + // 6. Create a map to hold the x, y, z coordinates for each unique node. + std::map> coordinates_for_node_id; + + for (auto node_ptr : getMesh().node_ptr_range()) + { + auto & node = *node_ptr; + + std::array coordinates = {node(0), node(1), node(2)}; + + coordinates_for_node_id[node.id()] = std::move(coordinates); + } + + // 7. + // element_ids_for_boundary_id stores the ids of each element on each boundary. + // side_ids_for_boundary_id stores the sides of those elements that are on each boundary. + std::map> element_ids_for_boundary_id; + std::map> side_ids_for_boundary_id; + + buildBoundaryInfo(element_ids_for_boundary_id, side_ids_for_boundary_id); + + // 8. Get a vector containing all boundary IDs on sides of semi-local elements. + std::vector unique_side_boundary_ids = getSideBoundaryIDs(); + + // 9. + // node_ids_for_boundary_id maps from the boundary ID to a vector of vectors containing + // the nodes of each element on the boundary that correspond to the face of the boundary. + std::map>> node_ids_for_boundary_id; + + buildBoundaryNodeIDs(unique_side_boundary_ids, + element_ids_for_boundary_id, + side_ids_for_boundary_id, + node_ids_for_boundary_id); + + // 10. Create mapping from the boundary ID to a vector containing the block IDs of all elements + // that lie on the boundary. This is required for in MFEM mesh for multiple-element types. + auto block_ids_for_boundary_id = + getBlockIDsForBoundaryID(element_ids_for_block_id, element_ids_for_boundary_id); + + // 11. + // Call the correct initializer. + switch (blockInfo().order()) + { + case 1: + { + _mfem_mesh = std::make_shared(nElem(), + blockInfo(), + unique_block_ids, + unique_side_boundary_ids, + unique_corner_node_ids, + element_ids_for_block_id, + node_ids_for_element_id, + node_ids_for_boundary_id, + side_ids_for_boundary_id, + block_ids_for_boundary_id, + coordinates_for_node_id); + break; + } + case 2: + { + _mfem_mesh = std::make_shared(nElem(), + blockInfo(), + unique_block_ids, + unique_side_boundary_ids, + unique_corner_node_ids, + element_ids_for_block_id, + node_ids_for_element_id, + node_ids_for_boundary_id, + side_ids_for_boundary_id, + block_ids_for_boundary_id, + coordinates_for_node_id, + _libmesh_global_node_id_for_mfem_local_node_id, + _mfem_local_node_id_for_libmesh_global_node_id); + break; + } + default: + { + mooseError("Unsupported element type of order ", blockInfo().order(), "."); + break; + } + } +} + +std::map +CoupledMFEMMesh::getBlockIDForElementID( + const std::map> & element_ids_for_block_id) const +{ + std::map block_id_for_element_id; + + for (const auto & key_value : element_ids_for_block_id) + { + auto block_id = key_value.first; + auto & element_ids = key_value.second; + + for (const auto & element_id : element_ids) + { + block_id_for_element_id[element_id] = block_id; + } + } + + return block_id_for_element_id; +} + +std::map> +CoupledMFEMMesh::getBlockIDsForBoundaryID( + const std::map> & element_ids_for_block_id, + const std::map> & element_ids_for_boundary_id) const +{ + auto block_id_for_element_id = getBlockIDForElementID(element_ids_for_block_id); + + std::map> block_ids_for_boundary_id; + + for (const auto & key_value : element_ids_for_boundary_id) + { + auto boundary_id = key_value.first; + auto & element_ids = key_value.second; + + std::vector block_ids(element_ids.size()); + + int ielement = 0; + for (const auto & element_id : element_ids) + { + block_ids[ielement++] = block_id_for_element_id.at(element_id); + } + + block_ids_for_boundary_id[boundary_id] = std::move(block_ids); + } + + return block_ids_for_boundary_id; +} + +std::unique_ptr +CoupledMFEMMesh::getMeshPartitioning() +{ + // Call allgather because we need all element information on each processor. + getMesh().allgather(); + + const MeshBase & lib_mesh = getMesh(); + + const int num_elements = lib_mesh.n_elem(); + if (num_elements < 1) + { + return nullptr; + } + + int * mesh_partitioning = new int[num_elements]; + + for (auto element : lib_mesh.element_ptr_range()) + { + int element_id = element->id(); + + mesh_partitioning[element_id] = element->processor_id(); + } + + // Wrap-up in a unique pointer. + return std::unique_ptr(mesh_partitioning); +} + +void +CoupledMFEMMesh::buildMFEMParMesh() +{ + auto partitioning = getMeshPartitioning(); + + int * partitioning_raw_ptr = partitioning ? partitioning.get() : nullptr; + + _mfem_par_mesh = + std::make_shared(MPI_COMM_WORLD, getMFEMMesh(), partitioning_raw_ptr); + + // If we have a higher-order mesh then we need to figure-out the mapping from the libMesh node ID + // to the MFEM node ID since this will have changed. + convertSerialDofMappingsToParallel(*_mfem_mesh.get(), *_mfem_par_mesh.get()); + + _mfem_mesh.reset(); // Lower reference count of serial mesh since no longer needed. +} + +void +CoupledMFEMMesh::convertSerialDofMappingsToParallel(const MFEMMesh & serial_mesh, + const MFEMParMesh & parallel_mesh) +{ + // No need to change dof mappings if running on a single processor or if a first order element. + if (n_processors() < 2 || blockInfo().order() == 1) + { + return; + } + + // Get the FE spaces. + const auto * serial_fespace = serial_mesh.GetNodalFESpace(); + const auto * parallel_fespace = parallel_mesh.GetNodalFESpace(); + + mooseAssert(serial_fespace != nullptr && parallel_fespace != nullptr, "Nodal FESpace is NULL!"); + + // Important notes: + // 1. LibMesh: node id is unique even across multiple processors. + // 2. MFEM: "local dof": belongs to the processor. + // 3. MFEM: "local true dof": unique nodes on a processor. i.e. if local nodes 1, 2 both + // correspond to the same coordinates on a processor they will map to a single true dof. + std::map libmesh_global_node_id_for_mfem_local_node_id; + std::map mfem_local_node_id_for_libmesh_global_node_id; + + // Match-up the libMesh elements on the processor with the MFEM elements on the ParMesh. + int counter = 0; + for (auto element_ptr : getMesh().local_element_ptr_range()) + { + const auto global_element_id = element_ptr->id(); + const auto local_element_id = counter++; + + // Get the LOCAL dofs of the element for both the serial and ParMesh for this element. + mfem::Array serial_local_dofs; + serial_fespace->GetElementDofs(global_element_id, serial_local_dofs); + + mfem::Array parallel_local_dofs; + parallel_fespace->GetElementDofs(local_element_id, parallel_local_dofs); + + // Verify that the number of LOCAL dofs match. + mooseAssert(serial_local_dofs.Size() == parallel_local_dofs.Size(), + "Serial and parallel dofs sizes do not match for element."); + + const auto num_local_dofs = serial_local_dofs.Size(); + + std::map serial_dof_for_parallel_dof; + std::map parallel_dof_for_serial_dof; + + for (int i = 0; i < num_local_dofs; i++) + { + auto parallel_dof = parallel_local_dofs[i]; + auto serial_dof = serial_local_dofs[i]; + + serial_dof_for_parallel_dof[parallel_dof] = serial_dof; + parallel_dof_for_serial_dof[serial_dof] = parallel_dof; + } + + // Iterate over serial local dofs and update mappings. + for (auto dof : serial_local_dofs) + { + const auto parallel_local_dof = parallel_dof_for_serial_dof[dof]; + + // Pair the libmesh node formerly associated with the serial node with this node. + auto libmesh_node_id = getLibmeshGlobalNodeId(dof); + + // Update two-way mappings. + libmesh_global_node_id_for_mfem_local_node_id[parallel_local_dof] = libmesh_node_id; + mfem_local_node_id_for_libmesh_global_node_id[libmesh_node_id] = parallel_local_dof; + } + } + + // Set two-way mappings. + _libmesh_global_node_id_for_mfem_local_node_id = libmesh_global_node_id_for_mfem_local_node_id; + _mfem_local_node_id_for_libmesh_global_node_id = mfem_local_node_id_for_libmesh_global_node_id; +} + +void +CoupledMFEMMesh::buildBoundaryNodeIDs( + const std::vector & unique_side_boundary_ids, + const std::map> & element_ids_for_boundary_id, + const std::map> & side_ids_for_boundary_id, + std::map>> & node_ids_for_boundary_id) +{ + node_ids_for_boundary_id.clear(); + + // Iterate over all boundary IDs. + for (int boundary_id : unique_side_boundary_ids) + { + // Get element IDs of element on boundary (and their sides that are on boundary). + auto & boundary_element_ids = element_ids_for_boundary_id.at(boundary_id); + auto & boundary_element_sides = side_ids_for_boundary_id.at(boundary_id); + + // Create vector to store the node ids of all boundary nodes. + std::vector> boundary_node_ids(boundary_element_ids.size()); + + // Iterate over elements on boundary. + for (int jelement = 0; jelement < (int)boundary_element_ids.size(); jelement++) + { + // Get element ID and the boundary side. + const int boundary_element_global_id = boundary_element_ids[jelement]; + const int boundary_element_side = boundary_element_sides[jelement]; + + Elem * element_ptr = elemPtr(boundary_element_global_id); + + // Get vector of local node IDs on boundary side of element. + auto nodes_of_element_on_side = element_ptr->nodes_on_side(boundary_element_side); + + // Replace local IDs with global IDs. + for (int knode = 0; knode < (int)nodes_of_element_on_side.size(); knode++) + { + // Get the global node ID of each node. + const int local_node_id = nodes_of_element_on_side[knode]; + const int global_node_id = element_ptr->node_id(local_node_id); + + nodes_of_element_on_side[knode] = global_node_id; + } + + // Add to vector. + boundary_node_ids[jelement] = std::move(nodes_of_element_on_side); + } + + // Add to the map. + node_ids_for_boundary_id[boundary_id] = std::move(boundary_node_ids); + } +} diff --git a/src/mesh/CubitElementInfo.C b/src/mesh/CubitElementInfo.C new file mode 100644 index 00000000..63839f10 --- /dev/null +++ b/src/mesh/CubitElementInfo.C @@ -0,0 +1,419 @@ +#include "CubitElementInfo.h" + +/** + * CubitFaceInfo + */ +CubitFaceInfo::CubitFaceInfo(CubitFaceType face_type) : _face_type(face_type) +{ + buildCubitFaceInfo(); +} + +void +CubitFaceInfo::buildCubitFaceInfo() +{ + switch (_face_type) + { + /** + * 2D + */ + case (FACE_EDGE2): + { + _num_face_nodes = 2; + _num_face_corner_nodes = 2; + break; + } + case (FACE_EDGE3): + { + _num_face_nodes = 3; + _num_face_corner_nodes = 2; + break; + } + /** + * 3D + */ + case (FACE_TRI3): + { + _num_face_nodes = 3; + _num_face_corner_nodes = 3; + break; + } + case (FACE_TRI6): + { + _num_face_nodes = 6; + _num_face_corner_nodes = 3; + break; + } + case (FACE_QUAD4): + { + _num_face_nodes = 4; + _num_face_corner_nodes = 4; + break; + } + case (FACE_QUAD8): + { + _num_face_nodes = 8; + _num_face_corner_nodes = 4; + break; + } + case (FACE_QUAD9): + { + _num_face_nodes = 9; // Includes center node. + _num_face_corner_nodes = 4; + break; + } + default: + { + mooseError("Unsupported face type '", _face_type, "'."); + break; + } + } +} + +/** + * CubitElementInfo + */ +CubitElementInfo::CubitElementInfo(int num_nodes_per_element, int dimension) +{ + switch (dimension) + { + case 2: + { + buildCubit2DElementInfo(num_nodes_per_element); + break; + } + case 3: + { + buildCubit3DElementInfo(num_nodes_per_element); + break; + } + default: + { + mooseError("Unsupported element dimension ", dimension, "."); + break; + } + } +} + +void +CubitElementInfo::buildCubit2DElementInfo(int num_nodes_per_element) +{ + _dimension = 2; + _num_nodes = num_nodes_per_element; + + switch (num_nodes_per_element) + { + case 3: + { + _element_type = ELEMENT_TRI3; + _order = 1; + _num_corner_nodes = 3; + _num_faces = 3; + _face_info = {CubitFaceInfo(CubitFaceInfo::FACE_EDGE2)}; + break; + } + case 6: + { + _element_type = ELEMENT_TRI6; + _order = 2; + _num_corner_nodes = 3; + _num_faces = 3; + _face_info = {CubitFaceInfo(CubitFaceInfo::FACE_EDGE3)}; + break; + } + case 4: + { + _element_type = ELEMENT_QUAD4; + _order = 1; + _num_corner_nodes = 4; + _num_faces = 4; + _face_info = {CubitFaceInfo(CubitFaceInfo::FACE_EDGE2)}; + break; + } + case 9: + { + _element_type = ELEMENT_QUAD9; + _order = 2; + _num_corner_nodes = 4; + _num_faces = 4; + _face_info = {CubitFaceInfo(CubitFaceInfo::FACE_EDGE3)}; + break; + } + default: + { + mooseError("Unsupported 2D element with ", num_nodes_per_element, " nodes per element."); + break; + } + } +} + +void +CubitElementInfo::buildCubit3DElementInfo(int num_nodes_per_element) +{ + _dimension = 3; + _num_nodes = num_nodes_per_element; + + switch (num_nodes_per_element) + { + case 4: + { + _element_type = ELEMENT_TET4; + _order = 1; + _num_corner_nodes = 4; + _num_faces = 4; + _face_info = {CubitFaceInfo(CubitFaceInfo::FACE_TRI3)}; + break; + } + case 10: + { + _element_type = ELEMENT_TET10; + _order = 2; + _num_corner_nodes = 4; + _num_faces = 4; + _face_info = {CubitFaceInfo(CubitFaceInfo::FACE_TRI6)}; + break; + } + case 8: + { + _element_type = ELEMENT_HEX8; + _order = 1; + _num_corner_nodes = 8; + _num_faces = 6; + _face_info = {CubitFaceInfo(CubitFaceInfo::FACE_QUAD4)}; + break; + } + case 27: + { + _element_type = ELEMENT_HEX27; + _order = 2; + _num_corner_nodes = 8; + _num_faces = 6; + _face_info = {CubitFaceInfo(CubitFaceInfo::FACE_QUAD9)}; + break; + } + case 6: + { + _element_type = ELEMENT_WEDGE6; + _order = 1; + _num_corner_nodes = 6; + _num_faces = 5; + _face_info = getWedge6FaceInfo(); + break; + } + case 18: + { + _element_type = ELEMENT_WEDGE18; + _order = 2; + _num_corner_nodes = 6; + _num_faces = 5; + _face_info = getWedge18FaceInfo(); + break; + } + case 5: + { + _element_type = ELEMENT_PYRAMID5; + _order = 1; + _num_corner_nodes = 5; + _num_faces = 5; + _face_info = getPyramid5FaceInfo(); + break; + } + case 14: + { + _element_type = ELEMENT_PYRAMID14; + _order = 2; + _num_corner_nodes = 5; + _num_faces = 5; + _face_info = getPyramid14FaceInfo(); + _num_corner_nodes = 5; + break; + } + default: + { + mooseError("Unsupported 3D element with ", num_nodes_per_element, " nodes per element."); + break; + } + } +} + +std::vector +CubitElementInfo::getWedge6FaceInfo() const +{ + // Refer to "cell_prism.C" line 127. + // We are using the same side ordering as used in LibMesh. + CubitFaceInfo tri3 = CubitFaceInfo(CubitFaceInfo::FACE_TRI3); // Faces 0, 4 (LibMesh) + CubitFaceInfo quad4 = CubitFaceInfo(CubitFaceInfo::FACE_QUAD4); // Faces 1, 2, 3 (LibMesh) + + return {tri3, quad4, quad4, quad4, tri3}; +} + +std::vector +CubitElementInfo::getWedge18FaceInfo() const +{ + CubitFaceInfo tri6 = CubitFaceInfo(CubitFaceInfo::FACE_TRI6); + CubitFaceInfo quad9 = CubitFaceInfo(CubitFaceInfo::FACE_QUAD9); + + return {tri6, quad9, quad9, quad9, tri6}; +} + +std::vector +CubitElementInfo::getPyramid5FaceInfo() const +{ + // Refer to "cell_pyramid5.C" line 134. + // We are using the same side ordering as used in LibMesh. + CubitFaceInfo tri3 = CubitFaceInfo(CubitFaceInfo::FACE_TRI3); + CubitFaceInfo quad4 = CubitFaceInfo(CubitFaceInfo::FACE_QUAD4); + + return {tri3, tri3, tri3, tri3, quad4}; +} + +std::vector +CubitElementInfo::getPyramid14FaceInfo() const +{ + // Refer to "cell_pyramid14.h" + // Define Pyramid14: Quad9 base and 4 x Tri6. + CubitFaceInfo tri6 = CubitFaceInfo(CubitFaceInfo::FACE_TRI6); + CubitFaceInfo quad9 = CubitFaceInfo(CubitFaceInfo::FACE_QUAD9); + + // Use same ordering as LibMesh ("cell_pyramid14.c"; line 44) + // front, right, back, left, base (different in MFEM!). + return {tri6, tri6, tri6, tri6, quad9}; +} + +const CubitFaceInfo & +CubitElementInfo::face(int iface) const +{ + /** + * Check _face_info initialized. + */ + if (_face_info.empty()) + { + mooseError("_face_info is empty."); + } + + /** + * Check valid face index. + */ + bool is_valid_face_index = (iface >= 0 && iface < _num_faces); + if (!is_valid_face_index) + { + mooseError("Face index '", iface, "' is invalid."); + } + + /** + * Case 1: single face type --> only store a single face. + * Case 2: multiple face types --> store each face. Return face at index. + */ + bool is_single_face_type = (_face_info.size() == 1); + + /** + * Check vector size matches _num_Faces for multiple face types. + */ + if (!is_single_face_type && _face_info.size() != _num_faces) + { + mooseError("_face_info.size() != _num_faces."); + } + + return is_single_face_type ? _face_info.front() : _face_info[iface]; +}; + +/** + * CubitBlockInfo + */ +CubitBlockInfo::CubitBlockInfo(int dimension) +{ + if (!validDimension(dimension)) + { + mooseError("Invalid dimension '", dimension, "' specified."); + } + + _dimension = dimension; + + clearBlockElements(); +} + +void +CubitBlockInfo::addBlockElement(int block_id, int num_nodes_per_element) +{ + if (hasBlockID(block_id)) + mooseError("Block with ID '", block_id, "' has already been added."); + else if (!validBlockID(block_id)) + mooseError("Illegal block ID '", block_id, "'."); + + auto block_element = CubitElementInfo(num_nodes_per_element, _dimension); + + /** + * Check element is compatible with existing element blocks. + */ + checkElementBlockIsCompatible(block_element); + + if (!hasBlocks()) // Set order of elements. + { + _order = block_element.order(); + } + + _block_ids.insert(block_id); + _block_element_for_block_id[block_id] = block_element; +} + +uint8_t +CubitBlockInfo::order() const +{ + if (!hasBlocks()) + { + mooseError("No elements have been added."); + } + + return _order; +} + +void +CubitBlockInfo::clearBlockElements() +{ + _order = 0; + _block_ids.clear(); + _block_element_for_block_id.clear(); +} + +bool +CubitBlockInfo::hasBlockID(int block_id) const +{ + return (_block_ids.count(block_id) > 0); +} + +bool +CubitBlockInfo::validBlockID(int block_id) const +{ + return (block_id > 0); // 1-based indexing. +} + +bool +CubitBlockInfo::validDimension(int dimension) const +{ + return (dimension == 2 || dimension == 3); +} + +const CubitElementInfo & +CubitBlockInfo::blockElement(int block_id) const +{ + if (!hasBlockID(block_id)) + { + mooseError("No element info for block ID '", block_id, "'."); + } + + return _block_element_for_block_id.at(block_id); +} + +void +CubitBlockInfo::checkElementBlockIsCompatible(const CubitElementInfo & new_block_element) const +{ + if (!hasBlocks()) + { + return; + } + + // Enforce block orders to be the same for now. + if (order() != new_block_element.order()) + { + mooseError("All block elements must be of the same order."); + } +} diff --git a/src/mesh/ExclusiveMFEMMesh.C b/src/mesh/ExclusiveMFEMMesh.C new file mode 100644 index 00000000..95f6e4b6 --- /dev/null +++ b/src/mesh/ExclusiveMFEMMesh.C @@ -0,0 +1,93 @@ +//* This file is part of the MOOSE framework +//* https://www.mooseframework.org +//* +//* All rights reserved, see COPYRIGHT for full restrictions +//* https://github.com/idaholab/moose/blob/master/COPYRIGHT +//* +//* Licensed under LGPL 2.1, please see LICENSE for details +//* https://www.gnu.org/licenses/lgpl-2.1.html + +#include "ExclusiveMFEMMesh.h" + +registerMooseObject("MooseApp", ExclusiveMFEMMesh); + +InputParameters +ExclusiveMFEMMesh::validParams() +{ + InputParameters params = FileMesh::validParams(); + return params; +} + +ExclusiveMFEMMesh::ExclusiveMFEMMesh(const InputParameters & parameters) : FileMesh(parameters) {} + +ExclusiveMFEMMesh::~ExclusiveMFEMMesh() {} + +void +ExclusiveMFEMMesh::buildMesh() +{ + // Build a dummy MOOSE mesh to enable this class to work with other MOOSE classes. + buildDummyMesh(); +} + +void +ExclusiveMFEMMesh::buildDummyMesh() +{ + auto element = new Quad4; + element->set_id() = 1; + element->processor_id() = 0; + + _mesh->add_elem(element); + + Point pt1(0.0, 0.0, 0.0); + Point pt2(1.0, 0.0, 0.0); + Point pt3(1.0, 1.0, 0.0); + Point pt4(0.0, 1.0, 0.0); + + element->set_node(0) = _mesh->add_point(pt1); + element->set_node(1) = _mesh->add_point(pt2); + element->set_node(2) = _mesh->add_point(pt3); + element->set_node(3) = _mesh->add_point(pt4); + + _mesh->prepare_for_use(); +} + +void +ExclusiveMFEMMesh::buildMFEMMesh() +{ + _mfem_mesh = std::make_shared(getFileName()); +} + +void +ExclusiveMFEMMesh::buildMFEMParMesh() +{ + _mfem_par_mesh = std::make_shared(MPI_COMM_WORLD, getMFEMMesh()); + _mfem_mesh.reset(); // Lower reference count of serial mesh since no longer needed. +} + +MFEMMesh & +ExclusiveMFEMMesh::getMFEMMesh() +{ + if (!_mfem_mesh) + { + buildMFEMMesh(); + } + + return *_mfem_mesh; +} + +MFEMParMesh & +ExclusiveMFEMMesh::getMFEMParMesh() +{ + if (!_mfem_par_mesh) + { + buildMFEMParMesh(); + } + + return *_mfem_par_mesh; +} + +std::unique_ptr +ExclusiveMFEMMesh::safeClone() const +{ + return std::make_unique(*this); +} diff --git a/src/mesh/MFEMMesh.C b/src/mesh/MFEMMesh.C new file mode 100644 index 00000000..114f14db --- /dev/null +++ b/src/mesh/MFEMMesh.C @@ -0,0 +1,624 @@ +#pragma once +#include "MFEMMesh.h" + +// Function prototypes: +static bool +coordinatesMatch(const double * primary, const double * secondary, const double tolerance = 0.01); + +/** + * Initializer for 1st order elements. + */ +MFEMMesh::MFEMMesh( + const int num_elements_in_mesh, + const CubitBlockInfo & block_info, + const std::vector & unique_block_ids, + const std::vector & unique_side_boundary_ids, + const std::vector & unique_libmesh_corner_node_ids, + const std::map> & libmesh_element_ids_for_block_id, + const std::map> & libmesh_node_ids_for_element_id, + const std::map>> & libmesh_node_ids_for_boundary_id, + const std::map> & libmesh_side_ids_for_boundary_id, + const std::map> & libmesh_block_ids_for_boundary_id, + const std::map> & coordinates_for_libmesh_node_id) +{ + if (block_info.order() != 1) + { + mooseError("1st order initializer called for order ", block_info.order(), "."); + } + + buildMFEMVerticesAndElements(num_elements_in_mesh, + block_info, + unique_block_ids, + unique_side_boundary_ids, + unique_libmesh_corner_node_ids, + libmesh_element_ids_for_block_id, + libmesh_node_ids_for_element_id, + libmesh_node_ids_for_boundary_id, + libmesh_side_ids_for_boundary_id, + libmesh_block_ids_for_boundary_id, + coordinates_for_libmesh_node_id); + + // Finalize mesh method is needed to fully finish constructing the mesh. + FinalizeMesh(); +} + +/** + * Initializer for 2nd order elements. + */ +MFEMMesh::MFEMMesh( + const int num_elements_in_mesh, + const CubitBlockInfo & block_info, + const std::vector & unique_block_ids, + const std::vector & unique_side_boundary_ids, + const std::vector & unique_libmesh_corner_node_ids, + const std::map> & libmesh_element_ids_for_block_id, + const std::map> & libmesh_node_ids_for_element_id, + const std::map>> & libmesh_node_ids_for_boundary_id, + const std::map> & libmesh_side_ids_for_boundary_id, + const std::map> & libmesh_block_ids_for_boundary_id, + const std::map> & coordinates_for_libmesh_node_id, + std::map & libmesh_node_id_for_mfem_node_id, + std::map & mfem_node_id_for_libmesh_node_id) +{ + if (block_info.order() != 2) + { + mooseError("2nd order initializer called for order ", block_info.order(), "."); + } + + buildMFEMVerticesAndElements(num_elements_in_mesh, + block_info, + unique_block_ids, + unique_side_boundary_ids, + unique_libmesh_corner_node_ids, + libmesh_element_ids_for_block_id, + libmesh_node_ids_for_element_id, + libmesh_node_ids_for_boundary_id, + libmesh_side_ids_for_boundary_id, + libmesh_block_ids_for_boundary_id, + coordinates_for_libmesh_node_id); + + handleQuadraticFESpace(block_info, + unique_block_ids, + libmesh_element_ids_for_block_id, + libmesh_node_ids_for_element_id, + coordinates_for_libmesh_node_id, + libmesh_node_id_for_mfem_node_id, + mfem_node_id_for_libmesh_node_id); + + FinalizeMesh(); +} + +MFEMMesh::MFEMMesh(std::string mesh_fname, int generate_edges, int refine, bool fix_orientation) + : _mfem_element_id_for_libmesh_element_id{}, _mfem_vertex_index_for_libmesh_corner_node_id{} +{ + SetEmpty(); + + mfem::named_ifgzstream mesh_fstream(mesh_fname); + if (!mesh_fstream) // TODO: - can this be nullptr? + { + mooseError("Failed to read '" + mesh_fname + "'\n"); + } + else + { + Load(mesh_fstream, generate_edges, refine, fix_orientation); + } +} + +void +MFEMMesh::buildMFEMVerticesAndElements( + const int num_elements_in_mesh, + const CubitBlockInfo & block_info, + const std::vector & unique_block_ids, + const std::vector & unique_side_boundary_ids, + const std::vector & unique_libmesh_corner_node_ids, + const std::map> & libmesh_element_ids_for_block_id, + const std::map> & libmesh_node_ids_for_element_id, + const std::map>> & libmesh_node_ids_for_boundary_id, + const std::map> & libmesh_side_ids_for_boundary_id, + const std::map> & libmesh_block_ids_for_boundary_id, + const std::map> & coordinates_for_libmesh_node_id) +{ + // Set dimensions. + Dim = spaceDim = block_info.dimension(); + + // Create the vertices. + buildMFEMVertices(unique_libmesh_corner_node_ids, coordinates_for_libmesh_node_id); + + // Create the mesh elements. + buildMFEMElements(num_elements_in_mesh, + block_info, + unique_block_ids, + libmesh_element_ids_for_block_id, + libmesh_node_ids_for_element_id); + + // Create the boundary elements. + buildMFEMBoundaryElements(block_info, + unique_side_boundary_ids, + libmesh_node_ids_for_boundary_id, + libmesh_side_ids_for_boundary_id, + libmesh_block_ids_for_boundary_id); +} + +void +MFEMMesh::buildMFEMVertices( + const std::vector & unique_libmesh_corner_node_ids, + const std::map> & coordinates_for_libmesh_node_id) +{ + _mfem_vertex_index_for_libmesh_corner_node_id.clear(); + + NumOfVertices = unique_libmesh_corner_node_ids.size(); + vertices.SetSize(NumOfVertices); + + // Iterate over the global IDs of each unqiue corner node from the MOOSE mesh. + const bool use_z_component = (Dim == 3); + + int ivertex = 0; + for (int libmesh_node_id : unique_libmesh_corner_node_ids) + { + // Get the xyz coordinates associated with the libmesh corner node. + auto & coordinates = coordinates_for_libmesh_node_id.at(libmesh_node_id); + + // Set xyz components. + vertices[ivertex](0) = coordinates[0]; + vertices[ivertex](1) = coordinates[1]; + + if (use_z_component) + { + vertices[ivertex](2) = coordinates[2]; + } + + _mfem_vertex_index_for_libmesh_corner_node_id[libmesh_node_id] = ivertex; + + ivertex++; + } +} + +void +MFEMMesh::buildMFEMElements(const int num_elements_in_mesh, + const CubitBlockInfo & block_info, + const std::vector & unique_block_ids, + const std::map> & element_ids_for_block_id, + const std::map> & node_ids_for_element_id) +{ + _mfem_element_id_for_libmesh_element_id.clear(); + + // Set mesh elements. + NumOfElements = num_elements_in_mesh; + elements.SetSize(num_elements_in_mesh); + + int ielement = 0; + for (int block_id : unique_block_ids) + { + // Get the element type associated with the block. + auto & block_element = block_info.blockElement(block_id); + + std::vector renumbered_vertex_ids(block_element.numCornerNodes()); + + auto & element_ids = element_ids_for_block_id.at(block_id); + + for (int element_id : element_ids) // Iterate over elements in block. + { + auto & libmesh_node_ids = node_ids_for_element_id.at(element_id); + + // Iterate over ONLY the corner nodes in the element. + for (int ivertex = 0; ivertex < block_element.numCornerNodes(); ivertex++) + { + const int libmesh_node_id = libmesh_node_ids[ivertex]; + + // Map from the corner libmesh node --> corresponding mfem vertex. + renumbered_vertex_ids[ivertex] = getMFEMVertexIndex(libmesh_node_id); + } + + // Map from mfem element id to libmesh element id. + _mfem_element_id_for_libmesh_element_id[element_id] = ielement; + + elements[ielement++] = + buildMFEMElement(block_element.elementType(), renumbered_vertex_ids.data(), block_id); + } + } +} + +void +MFEMMesh::buildMFEMBoundaryElements( + const CubitBlockInfo & block_info, + const std::vector & unique_side_boundary_ids, + const std::map>> & libmesh_node_ids_for_boundary_id, + const std::map> & libmesh_side_ids_for_boundary_id, + const std::map> & libmesh_block_ids_for_boundary_id) +{ + // Find total number of boundary elements. + NumOfBdrElements = 0; + + if (unique_side_boundary_ids.empty()) + { + boundary.SetSize(0); + return; + } + + for (int boundary_id : unique_side_boundary_ids) + { + NumOfBdrElements += libmesh_node_ids_for_boundary_id.at(boundary_id).size(); + } + + boundary.SetSize(NumOfBdrElements); + + // Iterate over boundary ids. + int iboundary = 0; + for (int boundary_id : unique_side_boundary_ids) + { + auto & all_boundary_node_ids = libmesh_node_ids_for_boundary_id.at(boundary_id); + auto & all_boundary_side_ids = libmesh_side_ids_for_boundary_id.at(boundary_id); + auto & all_boundary_block_ids = libmesh_block_ids_for_boundary_id.at(boundary_id); + + // Iterate over all elements on boundary. + for (int jelement = 0; jelement < (int)all_boundary_node_ids.size(); jelement++) + { + // Extract the boundary node ids and face id for this boundary element. + auto & boundary_node_ids = all_boundary_node_ids[jelement]; + auto boundary_face_id = all_boundary_side_ids[jelement]; + auto boundary_block_id = all_boundary_block_ids[jelement]; + + // Get the element type and face info. + auto & block_element = block_info.blockElement(boundary_block_id); + auto & boundary_face_info = block_element.face(boundary_face_id); + + // Iterate only over the corner nodes and renumber. + std::vector renumbered_vertex_ids(boundary_face_info.numFaceCornerNodes()); + + for (int knode = 0; knode < boundary_face_info.numFaceCornerNodes(); knode++) + { + const int libmesh_node_id = boundary_node_ids[knode]; + + // Renumber vertex ("node") IDs so they're contiguous and start from 0. + renumbered_vertex_ids[knode] = getMFEMVertexIndex(libmesh_node_id); + } + + boundary[iboundary++] = buildMFEMFaceElement( + boundary_face_info.faceType(), renumbered_vertex_ids.data(), boundary_id); + } + } +} + +mfem::Element * +MFEMMesh::buildMFEMElement(const int element_type, const int * vertex_ids, const int block_id) +{ + mfem::Element * new_element = nullptr; + + switch (element_type) + { + case CubitElementInfo::ELEMENT_TRI3: + case CubitElementInfo::ELEMENT_TRI6: + { + new_element = new mfem::Triangle(vertex_ids, block_id); + break; + } + case CubitElementInfo::ELEMENT_QUAD4: + case CubitElementInfo::ELEMENT_QUAD9: + { + new_element = new mfem::Quadrilateral(vertex_ids, block_id); + break; + } + case CubitElementInfo::ELEMENT_TET4: + case CubitElementInfo::ELEMENT_TET10: + { +#ifdef MFEM_USE_MEMALLOC + new_element = TetMemory.Alloc(); + new_element->SetVertices(vertex_ids); + new_element->SetAttribute(block_id); +#else + new_element = new mfem::Tetrahedron(vertex_ids, block_id); +#endif + break; + } + case CubitElementInfo::ELEMENT_HEX8: + case CubitElementInfo::ELEMENT_HEX27: + { + new_element = new mfem::Hexahedron(vertex_ids, block_id); + break; + } + case CubitElementInfo::ELEMENT_WEDGE6: + case CubitElementInfo::ELEMENT_WEDGE18: + { + new_element = new mfem::Wedge(vertex_ids, block_id); + break; + } + case CubitElementInfo::ELEMENT_PYRAMID5: + case CubitElementInfo::ELEMENT_PYRAMID14: + { + new_element = new mfem::Pyramid(vertex_ids, block_id); + break; + } + default: + { + mooseError("Unsupported element type specified.\n"); + break; + } + } + + return new_element; +} + +mfem::Element * +MFEMMesh::buildMFEMFaceElement(const int face_type, const int * vertex_ids, const int boundary_id) +{ + mfem::Element * new_face = nullptr; + + switch (face_type) + { + case CubitFaceInfo::FACE_EDGE2: + case CubitFaceInfo::FACE_EDGE3: + { + new_face = new mfem::Segment(vertex_ids, boundary_id); + break; + } + case CubitFaceInfo::FACE_TRI3: + case CubitFaceInfo::FACE_TRI6: + { + new_face = new mfem::Triangle(vertex_ids, boundary_id); + break; + } + case CubitFaceInfo::FACE_QUAD4: + case CubitFaceInfo::FACE_QUAD8: + case CubitFaceInfo::FACE_QUAD9: + { + new_face = new mfem::Quadrilateral(vertex_ids, boundary_id); + break; + } + default: + { + mooseError("Unsupported face type encountered.\n"); + break; + } + } + + return new_face; +} + +void +MFEMMesh::handleQuadraticFESpace( + const CubitBlockInfo & block_info, + const std::vector & unique_block_ids, + const std::map> & libmesh_element_ids_for_block_id, + const std::map> & libmesh_node_ids_for_element_id, + const std::map> & coordinates_for_libmesh_node_id, + std::map & libmesh_node_id_for_mfem_node_id, + std::map & mfem_node_id_for_libmesh_node_id) +{ + // Verify that this is indeed a second-order element. + if (block_info.order() != 2) + { + return; + } + + // Add a warning for 2D second-order elements but proceed. + if (block_info.dimension() == 2) + { + mooseWarning("'", __func__, "' has not been tested with second-order 2D elements."); + } + + // Clear second order maps. + libmesh_node_id_for_mfem_node_id.clear(); + mfem_node_id_for_libmesh_node_id.clear(); + + // Call FinalizeTopology. If we call this then we must call Finalize later after + // we've defined the mesh nodes. + FinalizeTopology(); + + // Define quadratic FE space. + mfem::FiniteElementCollection * finite_element_collection = new mfem::H1_FECollection(2, Dim); + + // NB: the specified ordering is byVDIM. + // byVDim: XYZ, XYZ, XYZ, XYZ,... + // byNode: XXX..., YYY..., ZZZ... + mfem::FiniteElementSpace * finite_element_space = + new mfem::FiniteElementSpace(this, finite_element_collection, spaceDim); + + Nodes = new mfem::GridFunction(finite_element_space); + Nodes->MakeOwner(finite_element_collection); // Nodes will destroy 'finite_element_collection' + own_nodes = 1; // and 'finite_element_space' + + // 2D maps: + const int mfem_to_libmesh_tri6[] = {1, 2, 3, 4, 5, 6}; + const int mfem_to_libmesh_quad9[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; + + // 3D maps: + const int mfem_to_libmesh_tet10[] = {1, 2, 3, 4, 5, 7, 8, 6, 9, 10}; + + // const int mfem_to_libmesh_pyramid14[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; + + const int mfem_to_libmesh_wedge18[] = { + 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 14, 15, 10, 11, 12, 16, 17, 18}; + + // NB: different map used for hex27 to ReadCubit. LibMesh uses a different node + // ordering to the Exodus/Genesis format. + const int mfem_to_libmesh_hex27[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 17, 18, + 19, 20, 13, 14, 15, 16, 21, 22, 23, 24, 25, 26, 27}; + + // Iterate over blocks and libmesh elements. + for (auto block_id : unique_block_ids) + { + auto & libmesh_element_ids = libmesh_element_ids_for_block_id.at(block_id); + + // Find the element type. + auto & block_element = block_info.blockElement(block_id); + + // Get the correct mapping. + int * mfem_to_libmesh_map = nullptr; + + switch (block_element.elementType()) + { + case CubitElementInfo::ELEMENT_TRI6: + { + mfem_to_libmesh_map = (int *)mfem_to_libmesh_tri6; + break; + } + case CubitElementInfo::ELEMENT_QUAD9: + { + mfem_to_libmesh_map = (int *)mfem_to_libmesh_quad9; + break; + } + case CubitElementInfo::ELEMENT_TET10: + { + mfem_to_libmesh_map = (int *)mfem_to_libmesh_tet10; + break; + } + case CubitElementInfo::ELEMENT_HEX27: + { + mfem_to_libmesh_map = (int *)mfem_to_libmesh_hex27; + break; + } + case CubitElementInfo::ELEMENT_WEDGE18: + { + mfem_to_libmesh_map = (int *)mfem_to_libmesh_wedge18; + break; + } + case CubitElementInfo::ELEMENT_PYRAMID14: + { + mooseError("H1_FECollection does not currently support Pyramid14."); + break; + } + default: + { + mooseError("No second-order map available for element type ", + block_element.elementType(), + " with dimension ", + block_element.dimension(), + "."); + break; + } + } + + // Iterate over elements in the block. + for (auto libmesh_element_id : libmesh_element_ids) + { + auto mfem_element_id = getMFEMElementID(libmesh_element_id); + + // Get vector containing ALL node global IDs for element. + auto & libmesh_node_ids = libmesh_node_ids_for_element_id.at(libmesh_element_id); + + // Sets DOF array for element. Higher-order (second-order) elements contain + // additional nodes between corner nodes. + mfem::Array dofs; + finite_element_space->GetElementDofs(mfem_element_id, dofs); + + // Iterate over dofs array. + for (int j = 0; j < dofs.Size(); j++) + { + const int mfem_node_id = dofs[j]; + + // Find the libmesh node ID: + // NB: the map is 1-based to we need to subtract 1. + const int libmesh_node_index = mfem_to_libmesh_map[j] - 1; + const int libmesh_node_id = libmesh_node_ids[libmesh_node_index]; + + // Update two-way map: + libmesh_node_id_for_mfem_node_id[mfem_node_id] = libmesh_node_id; + mfem_node_id_for_libmesh_node_id[libmesh_node_id] = mfem_node_id; + + // Extract node's coordinates: + auto & coordinates = coordinates_for_libmesh_node_id.at(libmesh_node_id); + + SetNode(dofs[j], coordinates.data()); + } + } + } + + /** + * Ensure that there is a one-to-one mapping between libmesh and mfem node ids. + * All coordinates should match. If this does not occur then it suggests that + * there is a problem with the higher-order transfer. + */ + verifyUniqueMappingBetweenLibmeshAndMFEMNodes(unique_block_ids, + libmesh_element_ids_for_block_id, + libmesh_node_ids_for_element_id, + coordinates_for_libmesh_node_id, + libmesh_node_id_for_mfem_node_id); +} + +void +MFEMMesh::verifyUniqueMappingBetweenLibmeshAndMFEMNodes( + const std::vector & unique_block_ids, + const std::map> & libmesh_element_ids_for_block_id, + const std::map> & libmesh_node_ids_for_element_id, + const std::map> & coordinates_for_libmesh_node_id, + const std::map & libmesh_node_id_for_mfem_node_id) +{ + const auto * finite_element_space = GetNodalFESpace(); + if (!finite_element_space) + { + mooseError("No nodal FE space."); + } + + // Create a set of all unique libmesh node ids. + std::set libmesh_node_ids; + + for (auto & key_value : libmesh_node_ids_for_element_id) + { + const std::vector & libmesh_node_ids_for_element = key_value.second; + + for (int libmesh_node_id : libmesh_node_ids_for_element) + { + libmesh_node_ids.insert(libmesh_node_id); + } + } + + double mfem_coordinates[3]; + + for (int ielement = 0; ielement < NumOfElements; ielement++) + { + mfem::Array mfem_dofs; + finite_element_space->GetElementDofs(ielement, mfem_dofs); + + for (int mfem_dof : mfem_dofs) + { + GetNode(mfem_dof, mfem_coordinates); + + const int libmesh_node_id = libmesh_node_id_for_mfem_node_id.at(mfem_dof); + + // Remove from set. + libmesh_node_ids.erase(libmesh_node_id); + + auto & libmesh_coordinates = coordinates_for_libmesh_node_id.at(libmesh_node_id); + + if (!coordinatesMatch(libmesh_coordinates.data(), mfem_coordinates)) + { + mooseError("Non-matching coordinates detected for libmesh node ", + libmesh_node_id, + " and MFEM node ", + mfem_dof, + " for MFEM element ", + ielement, + "."); + } + } + } + + // Check how many elements remain in set of libmesh element ids. Ideally, + // there should be none left indicating that we've referenced every single + // element in the set. + if (libmesh_node_ids.size() != 0) + { + mooseError("There are ", + libmesh_node_ids.size(), + " unpaired libmesh node ids. No one-to-one mapping exists!"); + } +} + +static bool +coordinatesMatch(const double * primary, const double * secondary, const double tolerance) +{ + if (!primary || !secondary || tolerance < 0.0) + { + return false; + } + + for (int i = 0; i < 3; i++) + { + if (fabs(primary[i] - secondary[i]) > tolerance) + { + return false; + } + } + + return true; +} diff --git a/src/mesh/MFEMParMesh.C b/src/mesh/MFEMParMesh.C new file mode 100644 index 00000000..b32c1a47 --- /dev/null +++ b/src/mesh/MFEMParMesh.C @@ -0,0 +1,9 @@ +#pragma once +#include "MFEMParMesh.h" + +// This is a temporary initializer and will be replaced once this class has been +// completed. +MFEMParMesh::MFEMParMesh(MPI_Comm comm, MFEMMesh & mesh, int * partitioning, int part_method) + : mfem::ParMesh(comm, dynamic_cast(mesh), partitioning, part_method) +{ +} diff --git a/src/outputs/MFEMDataCollection.C b/src/outputs/MFEMDataCollection.C new file mode 100644 index 00000000..1164d5d1 --- /dev/null +++ b/src/outputs/MFEMDataCollection.C @@ -0,0 +1,21 @@ +#include "MFEMDataCollection.h" + +registerMooseObject("PlatypusApp", MFEMDataCollection); + +InputParameters +MFEMDataCollection::validParams() +{ + InputParameters params = FileOutput::validParams(); + params.addClassDescription("Output for controlling MFEMDataCollection inherited data."); + return params; +} + +MFEMDataCollection::MFEMDataCollection(const InputParameters & parameters) : FileOutput(parameters) +{ +} + +std::shared_ptr +MFEMDataCollection::createDataCollection(const std::string & collection_name) const +{ + return std::make_shared(collection_name); +} \ No newline at end of file diff --git a/src/outputs/MFEMParaViewDataCollection.C b/src/outputs/MFEMParaViewDataCollection.C new file mode 100644 index 00000000..2af64c09 --- /dev/null +++ b/src/outputs/MFEMParaViewDataCollection.C @@ -0,0 +1,41 @@ +#include "MFEMParaViewDataCollection.h" + +registerMooseObject("PlatypusApp", MFEMParaViewDataCollection); + +InputParameters +MFEMParaViewDataCollection::validParams() +{ + InputParameters params = MFEMDataCollection::validParams(); + params.addClassDescription("Output for controlling MFEMParaViewDataCollection inherited data."); + params.addParam("refinements", + 0, + "Number of uniform refinements for oversampling " + "(refinement levels beyond any uniform " + "refinements)"); + params.addParam("high_order_output", + false, + "Sets whether or not to output the data as " + "high-order elements (false by default)." + "Reading high-order data requires ParaView" + "5.5 or later."); + return params; +} + +MFEMParaViewDataCollection::MFEMParaViewDataCollection(const InputParameters & parameters) + : MFEMDataCollection(parameters), + _high_order_output(getParam("high_order_output")), + _refinements(getParam("refinements")) +{ +} + +std::shared_ptr +MFEMParaViewDataCollection::createDataCollection(const std::string & collection_name) const +{ + auto pv_dc = std::make_shared(_file_base.c_str() + collection_name); + + pv_dc->SetPrecision(9); + pv_dc->SetHighOrderOutput(_high_order_output); + pv_dc->SetLevelsOfDetail(_refinements + 1); + + return pv_dc; +} \ No newline at end of file diff --git a/src/outputs/MFEMVisItDataCollection.C b/src/outputs/MFEMVisItDataCollection.C new file mode 100644 index 00000000..4019c543 --- /dev/null +++ b/src/outputs/MFEMVisItDataCollection.C @@ -0,0 +1,30 @@ +#include "MFEMVisItDataCollection.h" + +registerMooseObject("PlatypusApp", MFEMVisItDataCollection); + +InputParameters +MFEMVisItDataCollection::validParams() +{ + InputParameters params = MFEMDataCollection::validParams(); + params.addClassDescription("Output for controlling MFEMVisItDataCollection inherited data."); + params.addParam("refinements", + 0, + "Number of uniform refinements for oversampling " + "(refinement levels beyond any uniform " + "refinements)"); + return params; +} + +MFEMVisItDataCollection::MFEMVisItDataCollection(const InputParameters & parameters) + : MFEMDataCollection(parameters), _refinements(getParam("refinements")) +{ +} + +std::shared_ptr +MFEMVisItDataCollection::createDataCollection(const std::string & collection_name) const +{ + auto visit_dc = std::make_shared(_file_base.c_str() + collection_name); + visit_dc->SetLevelsOfDetail(_refinements + 1); + + return visit_dc; +} \ No newline at end of file diff --git a/src/postprocessors/ElementVectorL2Difference.C b/src/postprocessors/ElementVectorL2Difference.C new file mode 100644 index 00000000..a2b70acb --- /dev/null +++ b/src/postprocessors/ElementVectorL2Difference.C @@ -0,0 +1,76 @@ +#include "ElementVectorL2Difference.h" + +registerMooseObject("MooseApp", ElementVectorL2Difference); + +InputParameters +ElementVectorL2Difference::validParams() +{ + InputParameters params = ElementIntegralPostprocessor::validParams(); + + params.addRequiredCoupledVar("variable", "The name of the vector variable."); + params.addRequiredCoupledVar("other_variable", + "The name of the other vector variable to compare against."); + + params.addClassDescription( + "Computes the element-wise L2 difference between two coupled vector fields."); + return params; +} + +ElementVectorL2Difference::ElementVectorL2Difference(const InputParameters & parameters) + : ElementIntegralPostprocessor(parameters), + _vector_variable(coupledVectorValue("variable")), + _other_vector_variable(coupledVectorValue("other_variable")) +{ + checkVectorVariables(); +} + +Real +ElementVectorL2Difference::getValue() const +{ + return std::sqrt(ElementIntegralPostprocessor::getValue()); +} + +Real +ElementVectorL2Difference::computeQpIntegral() +{ + RealVectorValue solution_value(0.0, 0.0, 0.0); + RealVectorValue other_value(0.0, 0.0, 0.0); + + for (int icomponent = 0; icomponent < 3; icomponent++) + { + solution_value(icomponent) = _vector_variable[_qp](icomponent); + other_value(icomponent) = _other_vector_variable[_qp](icomponent); + } + + RealVectorValue difference_vector = (solution_value - other_value); + + return difference_vector.norm_sq(); // dot product of difference vector. +} + +void ElementVectorL2Difference::checkVectorVariables() const +{ + auto & coupled_vector_variables = getCoupledVectorMooseVars(); + + if (coupled_vector_variables.size() != 2) + { + mooseError("There are ", coupled_vector_variables.size(), " coupled vector variables. Expected 2."); + } + + auto first = coupled_vector_variables[0]; + auto second = coupled_vector_variables[1]; + + if (!first || !second) + { + mooseError("Coupled vector variable is nullptr."); + } + + if (first->feType().family != second->feType().family) + { + mooseError("The families of the vector variables must match."); + } + + if (first->order() != second->order()) + { + mooseError("The order of the vector variables must match."); + } +} diff --git a/src/problem/MFEMProblem.C b/src/problem/MFEMProblem.C new file mode 100644 index 00000000..5de8121f --- /dev/null +++ b/src/problem/MFEMProblem.C @@ -0,0 +1,632 @@ +#include "MFEMProblem.h" + +registerMooseObject("PlatypusApp", MFEMProblem); + +InputParameters +MFEMProblem::validParams() +{ + InputParameters params = ExternalProblem::validParams(); + params.addParam( + "vis_steps", + 1, + "Number of timesteps between successive write outs of data collections to file."); + params.addParam( + "use_glvis", false, "Attempt to open GLVis ports to display variables during simulation"); + + return params; +} + +MFEMProblem::MFEMProblem(const InputParameters & params) + : ExternalProblem(params), + _input_mesh(_mesh.parameters().get("file")), + _coefficients(), + _outputs(), + _exec_params() +{ + hephaestus::logger.set_level(spdlog::level::info); +} + +MFEMProblem::~MFEMProblem() {} + +void +MFEMProblem::outputStep(ExecFlagType type) +{ + // Needed to ensure outputs from successive runs when using MultiApps are stored in + // directories with iterated names + if (type == EXEC_INITIAL) + { + std::vector mfem_data_collections = + _app.getOutputWarehouse().getOutputNames(); + for (const auto & name : mfem_data_collections) + { + auto dc = _app.getOutputWarehouse().getOutput(name); + int filenum(dc->getFileNumber()); + std::string filename("/Run" + std::to_string(filenum)); + + mfem_problem->_outputs.Register(name, dc->createDataCollection(filename)); + mfem_problem->_outputs.Reset(); + dc->setFileNumber(filenum + 1); + } + } + FEProblemBase::outputStep(type); +} + +void +MFEMProblem::initialSetup() +{ + FEProblemBase::initialSetup(); + EquationSystems & es = FEProblemBase::es(); + _solver_options.SetParam("Tolerance", float(es.parameters.get("linear solver tolerance"))); + _solver_options.SetParam("AbsTolerance", + float(es.parameters.get("linear solver absolute tolerance"))); + _solver_options.SetParam("MaxIter", + es.parameters.get("linear solver maximum iterations")); + _coefficients.AddGlobalCoefficientsFromSubdomains(); + + mfem_problem_builder->SetCoefficients(_coefficients); + mfem_problem_builder->SetSolverOptions(_solver_options); + + // NB: set to false to avoid reconstructing problem operator. + mfem_problem_builder->FinalizeProblem(false); + + hephaestus::InputParameters exec_params; + + Transient * _moose_executioner = dynamic_cast(_app.getExecutioner()); + if (_moose_executioner != nullptr) + { + auto mfem_transient_problem_builder = + std::dynamic_pointer_cast(mfem_problem_builder); + if (mfem_transient_problem_builder == nullptr) + { + mooseError("Specified formulation does not support Transient executioners"); + } + + mfem_problem = mfem_transient_problem_builder->ReturnProblem(); + + exec_params.SetParam("StartTime", float(_moose_executioner->getStartTime())); + exec_params.SetParam("TimeStep", float(dt())); + exec_params.SetParam("EndTime", float(_moose_executioner->endTime())); + exec_params.SetParam("VisualisationSteps", getParam("vis_steps")); + exec_params.SetParam("Problem", + static_cast(mfem_problem.get())); + + executioner = std::make_unique(exec_params); + } + else if (dynamic_cast(_app.getExecutioner())) + { + auto mfem_steady_problem_builder = + std::dynamic_pointer_cast(mfem_problem_builder); + if (mfem_steady_problem_builder == nullptr) + { + mooseError("Specified formulation does not support Steady executioners"); + } + + mfem_problem = mfem_steady_problem_builder->ReturnProblem(); + + exec_params.SetParam("Problem", + static_cast(mfem_problem.get())); + + executioner = std::make_unique(exec_params); + } + else + { + mooseError("Executioner used that is not currently supported by MFEMProblem"); + } + + mfem_problem->_outputs.EnableGLVis(getParam("use_glvis")); +} + +void +MFEMProblem::init() +{ + FEProblemBase::init(); +} + +void +MFEMProblem::externalSolve() +{ + if (!_solve) + { + return; + } + + auto * transient_mfem_exec = dynamic_cast(executioner.get()); + if (transient_mfem_exec != nullptr) + { + transient_mfem_exec->_t_step = dt(); + } + executioner->Solve(); +} + +void +MFEMProblem::setFormulation(const std::string & user_object_name, + const std::string & name, + InputParameters & parameters) +{ + mfem::ParMesh & mfem_par_mesh = mesh().getMFEMParMesh(); + FEProblemBase::addUserObject(user_object_name, name, parameters); + MFEMFormulation * mfem_formulation(&getUserObject(name)); + + mfem_problem_builder = mfem_formulation->getProblemBuilder(); + + mfem_problem_builder->SetMesh(std::make_shared(mfem_par_mesh)); + mfem_problem_builder->ConstructOperator(); +} + +void +MFEMProblem::addBoundaryCondition(const std::string & bc_name, + const std::string & name, + InputParameters & parameters) +{ + FEProblemBase::addUserObject(bc_name, name, parameters); + MFEMBoundaryCondition * mfem_bc(&getUserObject(name)); + mfem_problem_builder->AddBoundaryCondition(name, mfem_bc->getBC()); +} + +void +MFEMProblem::addMaterial(const std::string & kernel_name, + const std::string & name, + InputParameters & parameters) +{ + FEProblemBase::addUserObject(kernel_name, name, parameters); + MFEMMaterial & mfem_material(getUserObject(name)); + + for (unsigned int bid = 0; bid < mfem_material.blocks.size(); ++bid) + { + int block = std::stoi(mfem_material.blocks[bid]); + hephaestus::Subdomain mfem_subdomain(name, block); + mfem_material.storeCoefficients(mfem_subdomain); + _coefficients._subdomains.push_back(mfem_subdomain); + } +} + +void +MFEMProblem::addCoefficient(const std::string & user_object_name, + const std::string & name, + InputParameters & parameters) +{ + FEProblemBase::addUserObject(user_object_name, name, parameters); + MFEMCoefficient * mfem_coef(&getUserObject(name)); + _coefficients._scalars.Register(name, mfem_coef->getCoefficient()); + + // Add associated auxsolvers for CoupledCoefficients + auto coupled_coef = std::dynamic_pointer_cast( + _coefficients._scalars.GetShared(name)); + if (coupled_coef != nullptr) + { + mfem_problem_builder->AddAuxSolver(name, std::move(coupled_coef)); + } +} + +void +MFEMProblem::addVectorCoefficient(const std::string & user_object_name, + const std::string & name, + InputParameters & parameters) +{ + FEProblemBase::addUserObject(user_object_name, name, parameters); + MFEMVectorCoefficient * mfem_vec_coef(&getUserObject(name)); + _coefficients._vectors.Register(name, mfem_vec_coef->getVectorCoefficient()); +} + +void +MFEMProblem::addFESpace(const std::string & user_object_name, + const std::string & name, + InputParameters & parameters) +{ + FEProblemBase::addUserObject(user_object_name, name, parameters); + MFEMFESpace & mfem_fespace(getUserObject(name)); + + mfem_problem_builder->AddFESpace(name, mfem_fespace.fec_name, mfem_fespace.vdim); +} + +void +MFEMProblem::addAuxVariable(const std::string & var_type, + const std::string & var_name, + InputParameters & parameters) +{ + if (var_type == "MFEMVariable") + { + FEProblemBase::addUserObject(var_type, var_name, parameters); + } + else + { + ExternalProblem::addAuxVariable(var_type, var_name, parameters); + + InputParameters mfem_var_params(addMFEMFESpaceFromMOOSEVariable(parameters)); + FEProblemBase::addUserObject("MFEMVariable", var_name, mfem_var_params); + } + + MFEMVariable & var(getUserObject(var_name)); + + mfem_problem_builder->AddGridFunction(var_name, var.fespace.name()); +} + +void +MFEMProblem::addKernel(const std::string & kernel_name, + const std::string & name, + InputParameters & parameters) +{ + FEProblemBase::addUserObject(kernel_name, name, parameters); + const UserObject * kernel = &(getUserObjectBase(name)); + + if (dynamic_cast(kernel) != nullptr) + { + MFEMLinearFormKernel * lf_kernel(&getUserObject(name)); + addKernel(parameters.get("variable"), lf_kernel->getKernel()); + } + else if (dynamic_cast(kernel) != nullptr) + { + MFEMBilinearFormKernel * blf_kernel(&getUserObject(name)); + addKernel(parameters.get("variable"), + blf_kernel->getKernel()); + } + else + { + mooseError("Unsupported kernel of type '", kernel_name, "' and name '", name, "' detected."); + } +} + +void +MFEMProblem::addAuxKernel(const std::string & kernel_name, + const std::string & name, + InputParameters & parameters) +{ + std::string base_auxkernel = parameters.get("_moose_base"); + + if (base_auxkernel == "MFEMAuxKernel") // MFEM auxsolver. + { + FEProblemBase::addUserObject(kernel_name, name, parameters); + MFEMAuxSolver * mfem_auxsolver(&getUserObject(name)); + + mfem_problem_builder->AddPostprocessor(name, mfem_auxsolver->getAuxSolver()); + mfem_auxsolver->storeCoefficients(_coefficients); + } + else if (base_auxkernel == "AuxKernel" || base_auxkernel == "VectorAuxKernel" || + base_auxkernel == "ArrayAuxKernel") // MOOSE auxkernels. + { + FEProblemBase::addAuxKernel(kernel_name, name, parameters); + } + else + { + mooseError("Unrecognized auxkernel base class '", base_auxkernel, "' detected."); + } +} + +void +MFEMProblem::setMFEMVarData(const std::string & var_name) +{ + auto & moose_var_ref = getVariable(0, var_name); + + if (moose_var_ref.isNodal()) + setMFEMNodalVarData(moose_var_ref); + else + setMFEMElementalVarData(moose_var_ref); +} + +void +MFEMProblem::setMOOSEVarData(const std::string & var_name) +{ + auto & moose_var_ref = getVariable(0, var_name); + + if (moose_var_ref.isNodal()) + setMOOSENodalVarData(moose_var_ref); + else + setMOOSEElementalVarData(moose_var_ref); +} + +void +MFEMProblem::setMFEMNodalVarData(MooseVariableFieldBase & moose_var_ref) +{ + // Sanity check: + mooseAssert(moose_var_ref.isNodal() == true, + "Attempted to call 'setMFEMNodalVarData' on a non-nodal MOOSE variable."); + + auto order = (unsigned int)moose_var_ref.order(); + + auto & libmesh_base = mesh().getMesh(); + auto & temp_solution_vector = moose_var_ref.sys().solution(); + auto pgf = mfem_problem->_gridfunctions.Get(moose_var_ref.name()); + + const auto * par_fespace = order > 1 ? pgf->ParFESpace() : nullptr; + + // Count number of true local dofs. + unsigned int true_local_dofs_count = 0; + + for (const auto * node : libmesh_base.local_node_ptr_range()) + { + bool has_dofs = (node->n_dofs(moose_var_ref.sys().number(), moose_var_ref.number()) > 0); + if (!has_dofs) + continue; + + auto n_comp = node->n_comp(moose_var_ref.sys().number(), moose_var_ref.number()); + true_local_dofs_count += n_comp; + } + + mfem::Vector mfem_true_local_dofs(true_local_dofs_count); + + // Set MFEM true local dofs. + unsigned int dof_index = 0; + + for (const auto * node : libmesh_base.local_node_ptr_range()) + { + bool has_dofs = (node->n_dofs(moose_var_ref.sys().number(), moose_var_ref.number()) > 0); + if (!has_dofs) + { + continue; + } + + auto n_comp = node->n_comp(moose_var_ref.sys().number(), moose_var_ref.number()); + + for (decltype(n_comp) i = 0; i < n_comp; i++) + { + auto dof = node->dof_number(moose_var_ref.sys().number(), moose_var_ref.number(), i); + + if (order == 1) + { + mfem_true_local_dofs[dof_index++] = temp_solution_vector(dof); + } + else + { + // Get the local dof: + auto mfem_local_dof = mesh().getLocalMFEMNodeId(node->id()); + + // Convert to TRUE LOCAL dof. Removes duplicated. No longer 1:1 mapping. + auto mfem_true_local_dof = par_fespace->GetLocalTDofNumber(mfem_local_dof); + + // Not on this processor? --> skip. + if (mfem_true_local_dof == -1) + { + continue; + } + + // Catch dodgy local true dofs. + mooseAssert(mfem_true_local_dof >= 0 && mfem_true_local_dof < mfem_true_local_dofs.Size(), + "local-true dof out-of-bounds."); + + mfem_true_local_dofs[mfem_true_local_dof] = temp_solution_vector(dof); + } + } + } + + pgf->SetFromTrueDofs(mfem_true_local_dofs); + + moose_var_ref.sys().solution().close(); + moose_var_ref.sys().update(); +} + +void +MFEMProblem::setMFEMElementalVarData(MooseVariableFieldBase & moose_var_ref) +{ + // Sanity check: + mooseAssert(moose_var_ref.isNodal() == false, + "Attempted to call 'setMFEMElementalVarData' on a nodal MOOSE variable."); + + auto order = (unsigned int)moose_var_ref.order(); + mooseAssert((n_processors() == 1) || (n_processors() > 1 && order == CONSTANT), + "Currently, only constant-order elemental variables can be synced in parallel."); + + auto & libmesh_base = mesh().getMesh(); + auto & temp_solution_vector = moose_var_ref.sys().solution(); + auto pgf = (mfem_problem->_gridfunctions.Get(moose_var_ref.name())); + + // Count number of true local dofs. + unsigned int true_local_dofs_count = 0; + + for (const auto * elem : libmesh_base.local_element_ptr_range()) + { + auto n_comp = elem->n_comp(moose_var_ref.sys().number(), moose_var_ref.number()); + true_local_dofs_count += n_comp; + } + + mfem::Vector mfem_true_local_dofs(true_local_dofs_count); + + // Set MFEM true local dofs. + unsigned int dof_index = 0; + + for (const auto * elem : libmesh_base.local_element_ptr_range()) + { + auto n_comp = elem->n_comp(moose_var_ref.sys().number(), moose_var_ref.number()); + + for (decltype(n_comp) i = 0; i < n_comp; i++) + { + dof_id_type dof = elem->dof_number(moose_var_ref.sys().number(), moose_var_ref.number(), i); + + mfem_true_local_dofs[dof_index++] = temp_solution_vector(dof); + } + } + + pgf->SetFromTrueDofs(mfem_true_local_dofs); + + moose_var_ref.sys().solution().close(); + moose_var_ref.sys().update(); +} + +void +MFEMProblem::setMOOSENodalVarData(MooseVariableFieldBase & moose_var_ref) +{ + mooseAssert(moose_var_ref.isNodal() == true, + "Attempted to call 'setMOOSENodalVarData' on a non-nodal MOOSE variable."); + + auto order = (unsigned int)moose_var_ref.order(); + + auto & libmesh_base = mesh().getMesh(); + auto pgf = (mfem_problem->_gridfunctions.Get(moose_var_ref.name())); + + const auto * par_fespace = (order > 1) ? pgf->ParFESpace() : nullptr; + + auto * mfem_true_local_dofs = pgf->GetTrueDofs(); // Must delete. + + unsigned int dof_index = 0; + + for (const auto * node : libmesh_base.local_node_ptr_range()) + { + auto n_comp = node->n_comp(moose_var_ref.sys().number(), moose_var_ref.number()); + + for (decltype(n_comp) i = 0; i < n_comp; i++) + { + auto dof = node->dof_number(moose_var_ref.sys().number(), moose_var_ref.number(), i); + + if (order == 1) + { + moose_var_ref.sys().solution().set(dof, (*mfem_true_local_dofs)[dof_index++]); + } + else + { + // Local dof # 1:1 correspondance with MOOSE nodes. + auto mfem_local_dof = mesh().getLocalMFEMNodeId(node->id()); + + // No 1:1 correspondance with MOOSE nodes. #local true dofs <= #local dofs. + // Removes multiple local nodes that refer to same coordinate. + auto mfem_true_local_dof = par_fespace->GetLocalTDofNumber(mfem_local_dof); + + // Skip dof if it isn't on this processor. + if (mfem_true_local_dof == -1) + { + continue; + } + + mooseAssert(mfem_true_local_dof >= 0 && mfem_true_local_dof < mfem_true_local_dofs->Size(), + "local-true dof out-of-bounds."); + + moose_var_ref.sys().solution().set(dof, (*mfem_true_local_dofs)[mfem_true_local_dof]); + } + } + } + + moose_var_ref.sys().solution().close(); + moose_var_ref.sys().update(); + + delete mfem_true_local_dofs; +} + +void +MFEMProblem::setMOOSEElementalVarData(MooseVariableFieldBase & moose_var_ref) +{ + mooseAssert(moose_var_ref.isNodal() == false, + "Attempted to call 'setMOOSEElementalVarData' on a nodal MOOSE variable."); + + auto order = (unsigned int)moose_var_ref.order(); + mooseAssert((n_processors() == 1) || (n_processors() > 1 && order == CONSTANT), + "Currently, only constant-order elemental variables can be synced in parallel."); + + auto & libmesh_base = mesh().getMesh(); + auto pgf = (mfem_problem->_gridfunctions.Get(moose_var_ref.name())); + + auto * mfem_local_elems = pgf->GetTrueDofs(); // Must delete. + + unsigned int dof_index = 0; + + for (const auto * elem : libmesh_base.local_element_ptr_range()) + { + auto n_comp = elem->n_comp(moose_var_ref.sys().number(), moose_var_ref.number()); + + for (decltype(n_comp) i = 0; i < n_comp; i++) + { + dof_id_type dof = elem->dof_number(moose_var_ref.sys().number(), moose_var_ref.number(), i); + moose_var_ref.sys().solution().set(dof, (*mfem_local_elems)[dof_index++]); + } + } + + moose_var_ref.sys().solution().close(); + moose_var_ref.sys().update(); + + delete mfem_local_elems; +} + +InputParameters +MFEMProblem::addMFEMFESpaceFromMOOSEVariable(InputParameters & moosevar_params) +{ + InputParameters mfem_fespace_params(_factory.getValidParams("MFEMFESpace")); + InputParameters mfem_var_params(_factory.getValidParams("MFEMVariable")); + + const FEFamily var_family = + Utility::string_to_enum(moosevar_params.get("family")); + switch (var_family) + { + case FEFamily::LAGRANGE: + mfem_fespace_params.set("fespace_type") = std::string("H1"); + break; + case FEFamily::LAGRANGE_VEC: + mfem_fespace_params.set("fespace_type") = std::string("H1"); + mfem_fespace_params.set("vdim") = 3; + break; + case FEFamily::MONOMIAL: + mfem_fespace_params.set("fespace_type") = std::string("L2"); + break; + case FEFamily::MONOMIAL_VEC: + mfem_fespace_params.set("fespace_type") = + std::string("L2"); // Create L2 only for now. + mfem_fespace_params.set("vdim") = 3; + break; + default: + mooseError("Unable to set MFEM FESpace for MOOSE variable"); + break; + } + mfem_fespace_params.setParameters("order", moosevar_params.get("order")); + int order(moosevar_params.get("order")); + std::string fec_name( + MFEMFESpace::createFECName(mfem_fespace_params.get("fespace_type"), order)); + std::string fespace_name(Utility::enum_to_string(var_family) + "_" + fec_name); + + if (!hasUserObject(fespace_name)) + { + addFESpace("MFEMFESpace", fespace_name, mfem_fespace_params); + } + + mfem_var_params.set("fespace") = fespace_name; + + return mfem_var_params; +} + +std::vector +MFEMProblem::getAuxVariableNames() +{ + return systemBaseAuxiliary().getVariableNames(); +} + +void +MFEMProblem::syncSolutions(Direction direction) +{ + // Only sync solutions if MOOSE and MFEM meshes are coupled. + if (ExternalProblem::mesh().type() != "CoupledMFEMMesh") + { + return; + } + + void (MFEMProblem::*setVarDataFuncPtr)(const std::string &); + + switch (direction) + { + case Direction::TO_EXTERNAL_APP: + setVarDataFuncPtr = + &MFEMProblem::setMFEMVarData; // If data is being sent from the master app. + break; + case Direction::FROM_EXTERNAL_APP: + setVarDataFuncPtr = + &MFEMProblem::setMOOSEVarData; // If data is being sent back to the master app. + break; + default: + setVarDataFuncPtr = nullptr; + break; + } + + if (!setVarDataFuncPtr) + { + mooseError("Invalid syncSolutions direction specified."); + } + + for (std::string & name : getAuxVariableNames()) + { + (this->*setVarDataFuncPtr)(name); + } +} + +ExclusiveMFEMMesh & +MFEMProblem::mesh() +{ + mooseAssert(ExternalProblem::mesh().type() == "ExclusiveMFEMMesh" || + ExternalProblem::mesh().type() == "CoupledMFEMMesh", + "Please choose a valid mesh type for an MFEMProblem\n(Either CoupledMFEMMesh or " + "ExclusiveMFEMMesh)"); + return (ExclusiveMFEMMesh &)_mesh; +} diff --git a/src/variables/MFEMVariable.C b/src/variables/MFEMVariable.C new file mode 100644 index 00000000..451085f0 --- /dev/null +++ b/src/variables/MFEMVariable.C @@ -0,0 +1,44 @@ +#include "MFEMVariable.h" + +registerMooseObject("PlatypusApp", MFEMVariable); + +InputParameters +MFEMVariable::validParams() +{ + InputParameters params = GeneralUserObject::validParams(); + + params.registerBase("MooseVariableBase"); + + // Create user-facing 'boundary' input for restricting inheriting object to boundaries + + params.addRequiredParam("fespace", + "The finite element space this variable is defined on."); + + // Remaining params are for compatibility with MOOSE AuxVariable interface + params.addRangeCheckedParam( + "components", 3, "components>0", "Number of components for an array variable"); + + params.addParam>("scaling", + "Specifies a scaling factor to apply to this variable"); + params.addParam("eigen", false, "True to make this variable an eigen variable"); + params.addParam("fv", false, "True to make this variable a finite volume variable"); + params.addParam("array", + false, + "True to make this variable a array variable regardless of number of " + "components. If 'components' > 1, this will automatically be set to" + "true."); + params.addParamNamesToGroup("scaling eigen", "Advanced"); + + params.addParam("use_dual", false, "True to use dual basis for Lagrange multipliers"); + + return params; +} + +MFEMVariable::MFEMVariable(const InputParameters & parameters) + : GeneralUserObject(parameters), + fespace(getUserObject("fespace")), + components(parameters.get("components")) +{ +} + +MFEMVariable::~MFEMVariable() {} diff --git a/syntax.yaml b/syntax.yaml new file mode 100644 index 00000000..122b3798 --- /dev/null +++ b/syntax.yaml @@ -0,0 +1,77039 @@ + +**START YAML DATA** +- name: /Adaptivity + description: | + + parameters: + - name: cycles_per_step + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + The number of adaptive steps to use when on each timestep during a Transient simulation. + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: initial_marker + required: No + default: !!str + cpp_type: MarkerName + group_name: + description: | + The name of the Marker to use to adapt the mesh during initial refinement. + - name: initial_steps + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The number of adaptive steps to do based on the initial condition. + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + The number of time steps betweeen each adaptivity phase + - name: marker + required: No + default: !!str + cpp_type: MarkerName + group_name: + description: | + The name of the Marker to use to actually adapt the mesh. + - name: max_h_level + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Maximum number of times a single element can be refined. If 0 then infinite. + - name: recompute_markers_during_cycles + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Recompute markers during adaptivity cycles + - name: start_time + required: No + default: !!str -1.79769e+308 + cpp_type: double + group_name: + description: | + The time that adaptivity will be active after. + - name: steps + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The number of adaptive steps to use when doing a Steady simulation. + - name: stop_time + required: No + default: !!str 1.79769e+308 + cpp_type: double + group_name: + description: | + The time after which adaptivity will no longer be active. + subblocks: + - name: /Adaptivity/Indicators + description: | + + parameters: + subblocks: + - name: /Adaptivity/Indicators/* + description: | + + parameters: + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH + description: | + Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed) + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Adaptivity/Indicators/AnalyticalIndicator + description: | + + parameters: + - name: block + required: No + default: !!str ANY_BLOCK_ID + cpp_type: std::vector > + group_name: + description: | + block ID or name where the object works + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str AnalyticalIndicator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The name of the variable that this Indicator operates on + subblocks: + - name: /Adaptivity/Indicators/ArrayMooseVariable + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str ArrayMooseVariable + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Adaptivity/Indicators/GradientJumpIndicator + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scale_by_flux_faces + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to scale the error values by the number of flux faces. This attempts to not penalize elements on boundaries for having less neighbors. + - name: type + required: No + default: !!str GradientJumpIndicator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The name of the variable that this side indicator applies to + subblocks: + - name: /Adaptivity/Indicators/LaplacianJumpIndicator + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scale_by_flux_faces + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to scale the error values by the number of flux faces. This attempts to not penalize elements on boundaries for having less neighbors. + - name: type + required: No + default: !!str LaplacianJumpIndicator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The name of the variable that this side indicator applies to + subblocks: + - name: /Adaptivity/Indicators/MooseVariable + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariable + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Adaptivity/Indicators/MooseVariableBase + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariableBase + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Adaptivity/Indicators/MooseVariableConstMonomial + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str MONOMIAL + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str CONSTANT + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariableConstMonomial + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Adaptivity/Indicators/MooseVariableFVReal + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariableFVReal + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Adaptivity/Indicators/MooseVariableScalar + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str SCALAR + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariableScalar + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Adaptivity/Indicators/ValueJumpIndicator + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scale_by_flux_faces + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to scale the error values by the number of flux faces. This attempts to not penalize elements on boundaries for having less neighbors. + - name: type + required: No + default: !!str ValueJumpIndicator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The name of the variable that this side indicator applies to + subblocks: + - name: /Adaptivity/Indicators/VectorMooseVariable + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str VectorMooseVariable + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Adaptivity/Markers + description: | + + parameters: + subblocks: + - name: /Adaptivity/Markers/* + description: | + + parameters: + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH + description: | + Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed) + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Adaptivity/Markers/ArrayMooseVariable + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str ArrayMooseVariable + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Adaptivity/Markers/BoxMarker + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: bottom_left + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: inside + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: DONT_MARK COARSEN DO_NOTHING REFINE + description: | + How to mark elements inside the box. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: outside + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: DONT_MARK COARSEN DO_NOTHING REFINE + description: | + How to mark elements outside the box. + - name: top_right + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between). + - name: type + required: No + default: !!str BoxMarker + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Adaptivity/Markers/ComboMarker + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: markers + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + A list of marker names to combine into a single marker. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str ComboMarker + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Adaptivity/Markers/ErrorFractionMarker + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: clear_extremes + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to clear the extremes during each error calculation. Changing this to `false` will result in the global extremes ever encountered during the run to be used as the min and max error. + - name: coarsen + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Elements within this percentage of the min error will be coarsened. Must be between 0 and 1! + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: indicator + required: Yes + default: !!str + cpp_type: IndicatorName + group_name: + description: | + The name of the Indicator that this Marker uses. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: refine + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Elements within this percentage of the max error will be refined. Must be between 0 and 1! + - name: type + required: No + default: !!str ErrorFractionMarker + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Adaptivity/Markers/ErrorToleranceMarker + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: coarsen + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Elements with error less than this will be coarsened. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: indicator + required: Yes + default: !!str + cpp_type: IndicatorName + group_name: + description: | + The name of the Indicator that this Marker uses. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: refine + required: No + default: !!str 1.79769e+308 + cpp_type: double + group_name: + description: | + Elements with error more than this will be refined. + - name: type + required: No + default: !!str ErrorToleranceMarker + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Adaptivity/Markers/MooseVariable + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariable + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Adaptivity/Markers/MooseVariableBase + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariableBase + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Adaptivity/Markers/MooseVariableConstMonomial + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str MONOMIAL + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str CONSTANT + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariableConstMonomial + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Adaptivity/Markers/MooseVariableFVReal + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariableFVReal + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Adaptivity/Markers/MooseVariableScalar + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str SCALAR + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariableScalar + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Adaptivity/Markers/OrientedBoxMarker + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: center + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The center (many people spell this 'center') of the box. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: height + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The height of the box + - name: inside + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: DONT_MARK COARSEN DO_NOTHING REFINE + description: | + How to mark elements inside the box. + - name: length + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The length of the box + - name: length_direction + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The direction along which the length is oriented (must be perpendicular to width_direction). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: outside + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: DONT_MARK COARSEN DO_NOTHING REFINE + description: | + How to mark elements outside the box. + - name: type + required: No + default: !!str OrientedBoxMarker + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: width + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The width of the box + - name: width_direction + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The direction along which the width is oriented. + subblocks: + - name: /Adaptivity/Markers/UniformMarker + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: mark + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: DONT_MARK COARSEN DO_NOTHING REFINE + description: | + How to mark elements. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str UniformMarker + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Adaptivity/Markers/ValueRangeMarker + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: buffer_size + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + A buffer zone value added to both ends of the range where a third_state marker can be returned. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: invert + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If this is true then values _below_ 'refine' will be refined and _above_ 'coarsen' will be coarsened. + - name: lower_bound + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The lower bound value for the range. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: third_state + required: No + default: !!str DONT_MARK + cpp_type: MooseEnum + group_name: + options: DONT_MARK COARSEN DO_NOTHING REFINE + description: | + The Marker state to apply to values falling in-between the coarsen and refine thresholds. + - name: type + required: No + default: !!str ValueRangeMarker + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: upper_bound + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The upper bound value for the range. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The values of this variable will be compared to 'refine' and 'coarsen' to see what should be done with the element + subblocks: + - name: /Adaptivity/Markers/ValueThresholdMarker + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: coarsen + required: No + default: !!str + cpp_type: double + group_name: + description: | + The threshold value for coarsening. Elements with variable values beyond this will be marked for coarsening. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: invert + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If this is true then values _below_ 'refine' will be refined and _above_ 'coarsen' will be coarsened. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: refine + required: No + default: !!str + cpp_type: double + group_name: + description: | + The threshold value for refinement. Elements with variable values beyond this will be marked for refinement. + - name: third_state + required: No + default: !!str DONT_MARK + cpp_type: MooseEnum + group_name: + options: DONT_MARK COARSEN DO_NOTHING REFINE + description: | + The Marker state to apply to values falling in-between the coarsen and refine thresholds. + - name: type + required: No + default: !!str ValueThresholdMarker + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The values of this variable will be compared to 'refine' and 'coarsen' to see what should be done with the element + subblocks: + - name: /Adaptivity/Markers/VectorMooseVariable + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str VectorMooseVariable + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: +- name: /AuxKernels + description: | + + parameters: + subblocks: + - name: /AuxKernels/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /AuxKernels/ADMaterialRankTwoTensorAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: i + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The index i of ij for the tensor to output + - name: j + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The index j of ij for the tensor to output + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADMaterialRankTwoTensorAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/ADMaterialRealAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADMaterialRealAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/ADMaterialRealVectorValueAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: component + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The vector component to consider for this kernel + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADMaterialRealVectorValueAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/ADVectorMaterialRealVectorValueAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: offset + required: No + default: !!str 0 0 0 + cpp_type: libMesh::VectorValue + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADVectorMaterialRealVectorValueAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/ArrayVariableComponent + description: | + + parameters: + - name: array_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the array variable + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: component + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Component of the array variable to be extracted + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ArrayVariableComponent + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/ConstantAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ConstantAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Some constant value that can be read from the input file + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/ConstantBoundsAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: bound_type + required: No + default: !!str upper + cpp_type: MooseEnum + group_name: + options: upper lower + description: | + Type of bound. 'upper' refers to the upper bound. 'lower' refers to the lower value. + - name: bound_value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The value of bound for the variable + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: bounded_variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The variable to be bounded + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ConstantBoundsAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/DebugResidualAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: debug_variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The variable that is being debugged. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str DebugResidualAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/DiffusionFluxAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: component + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The desired component of flux. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diffusion_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable + - name: diffusivity + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the diffusivity material property that will be used in the flux computation. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str DiffusionFluxAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/ElemExtraIDAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: extra_id_name + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The extra ID name in the mesh + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElemExtraIDAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/ElementH1ErrorFunctionAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: coupled_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable to compute the norm of. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + Function representing the exact solution + - name: p + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + The exponent used in the norm. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementH1ErrorFunctionAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/ElementIntegerAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: integer_names + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Element integers to be retrieved + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementIntegerAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/ElementL2ErrorFunctionAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: coupled_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable to compute the norm of. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + Function representing the exact solution + - name: p + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + The exponent used in the norm. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementL2ErrorFunctionAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/ElementLengthAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: method + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: min max + description: | + The size calculation to perform ('min' or 'max'). + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementLengthAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/ElementLpNormAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: coupled_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable to compute the norm of. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: p + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + The exponent used in the norm. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementLpNormAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/ElementQualityAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: metric + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: ASPECT_RATIO SKEW SHEAR SHAPE MAX_ANGLE MIN_ANGLE CONDITION DISTORTION TAPER WARP STRETCH DIAGONAL ASPECT_RATIO_BETA ASPECT_RATIO_GAMMA SIZE JACOBIAN + description: | + The quality metric to use. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementQualityAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/FunctionAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The function to use as the value + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str FunctionAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/GapValueAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: normal_smoothing_distance + required: No + default: !!str + cpp_type: double + group_name: + description: | + Distance from edge in parametric coordinates over which to smooth contact normal + - name: normal_smoothing_method + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Method to use to smooth normals (edge_based|nodal_normal_based) + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: FIRST SECOND THIRD FOURTH + description: | + The finite element order + - name: paired_boundary + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The boundary on the other side of a gap. + - name: paired_variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable to get the value of. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: tangential_tolerance + required: No + default: !!str + cpp_type: double + group_name: + description: | + Tangential distance to extend edges of contact surfaces + - name: type + required: No + default: !!str GapValueAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + - name: warnings + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether to output warning messages concerning nodes not being found + subblocks: + - name: /AuxKernels/GhostingAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: functor_type + required: No + default: !!str geometric + cpp_type: MooseEnum + group_name: + options: geometric algebraic + description: | + The type of ghosting functor to use + - name: ghost_uo + required: Yes + default: !!str + cpp_type: UserObjectName + group_name: + description: | + The GhostUserObject from which to obtain ghosting information from. + - name: include_local_elements + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to include local elements as part of the ghosting set + - name: pid + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The PID to see the ghosting for + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str GhostingAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/HardwareIDAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str HardwareIDAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/InterfaceValueUserObjectAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: interface_uo_name + required: Yes + default: !!str + cpp_type: UserObjectName + group_name: + description: | + The name of the interface user object to use + - name: return_side_average + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true returns the elment side average rather than a single qp value + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str InterfaceValueUserObjectAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/MaterialRankFourTensorAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: i + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The index i of ijkl for the tensor to output + - name: j + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The index j of ijkl for the tensor to output + - name: k + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The index k of ijkl for the tensor to output + - name: l + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The index l of ijkl for the tensor to output + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialRankFourTensorAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/MaterialRankTwoTensorAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: i + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The index i of ij for the tensor to output + - name: j + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The index j of ij for the tensor to output + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialRankTwoTensorAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/MaterialRealAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialRealAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/MaterialRealDenseMatrixAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: column + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The column component to consider for this kernel + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: row + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The row component to consider for this kernel + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialRealDenseMatrixAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/MaterialRealTensorValueAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: column + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The column component to consider for this kernel + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: row + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The row component to consider for this kernel + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialRealTensorValueAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/MaterialRealVectorValueAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: component + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The vector component to consider for this kernel + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialRealVectorValueAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/MaterialStdVectorAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: index + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The index to consider for this kernel + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: selected_qp + required: No + default: !!str + cpp_type: unsigned int + group_name: 'Advanced' + description: | + Evaluate the std::vector at this quadpoint. This only needs to be used if you are interested in a particular quadpoint in each element: otherwise do not include this parameter in your input file + - name: type + required: No + default: !!str MaterialStdVectorAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/MaterialStdVectorRealGradientAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: component + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The gradient component to be extracted for this kernel + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: index + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The index to consider for this kernel + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialStdVectorRealGradientAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/NearestNodeDistanceAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: paired_boundary + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The boundary to find the distance to. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NearestNodeDistanceAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/NearestNodeValueAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: paired_boundary + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The boundary to get the value from. + - name: paired_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable to get the value of. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NearestNodeValueAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/NormalizationAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: normal_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The normalization factor + - name: normalization + required: No + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The postprocessor on the source + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: shift + required: No + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The postprocessor to shift the source + - name: source_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable to be normalized + - name: type + required: No + default: !!str NormalizationAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/ParsedAux + description: | + + parameters: + - name: args + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + coupled variables + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: constant_expressions + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of values for the constants in constant_names (can be an FParser expression) + - name: constant_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of constants used in the parsed function (use this for kB etc.) + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: disable_fpoptimizer + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Disable the function parser algebraic optimizer + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_ad_cache + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable cacheing of function derivatives for faster startup time + - name: enable_auto_optimize + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable automatic immediate optimization of derivatives + - name: enable_jit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable just-in-time compilation of function expressions for faster evaluation + - name: evalerror_behavior + required: No + default: !!str nan + cpp_type: MooseEnum + group_name: 'Advanced' + options: nan nan_warning error exception + description: | + What to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exception + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: fail_on_evalerror + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Fail fatally if a function evaluation returns an error code (otherwise just pass on NaN) + - name: function + required: Yes + default: !!str + cpp_type: FunctionExpression + group_name: + description: | + function expression + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ParsedAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/PenetrationAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: normal_smoothing_distance + required: No + default: !!str + cpp_type: double + group_name: + description: | + Distance from edge in parametric coordinates over which to smooth contact normal + - name: normal_smoothing_method + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Method to use to smooth normals (edge_based|nodal_normal_based) + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: FIRST SECOND THIRD FOURTH + description: | + The finite element order + - name: paired_boundary + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The boundary to be penetrated + - name: quantity + required: No + default: !!str distance + cpp_type: MooseEnum + group_name: + options: distance tangential_distance normal_x normal_y normal_z closest_point_x closest_point_y closest_point_z element_id side incremental_slip_magnitude incremental_slip_x incremental_slip_y incremental_slip_z accumulated_slip force_x force_y force_z normal_force_magnitude normal_force_x normal_force_y normal_force_z tangential_force_magnitude tangential_force_x tangential_force_y tangential_force_z frictional_energy lagrange_multiplier mechanical_status + description: | + The quantity to recover from the available penetration information + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: tangential_tolerance + required: No + default: !!str + cpp_type: double + group_name: + description: | + Tangential distance to extend edges of contact surfaces + - name: type + required: No + default: !!str PenetrationAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/ProcessorIDAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ProcessorIDAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/QuotientAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: denominator + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The downstairs of the quotient variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: numerator + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The upstairs of the quotient variable + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str QuotientAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/SelfAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str SelfAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/SolutionAux + description: | + + parameters: + - name: add_factor + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Add this value (b) to the solution (x): ax+b, where a is the 'scale_factor' + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direct + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true the meshes must be the same and then the values are simply copied over. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: from_variable + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the variable to extract from the file + - name: scale_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Scale factor (a) to be applied to the solution (x): ax+b, where b is the 'add_factor' + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: solution + required: Yes + default: !!str + cpp_type: UserObjectName + group_name: + description: | + The name of the SolutionUserObject + - name: type + required: No + default: !!str SolutionAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/SpatialUserObjectAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str SpatialUserObjectAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: user_object + required: Yes + default: !!str + cpp_type: UserObjectName + group_name: + description: | + The UserObject UserObject to get values from. Note that the UserObject _must_ implement the spatialValue() virtual function! + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/TagMatrixAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: matrix_tag + required: No + default: !!str TagName + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Tag Name this Aux works on + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str TagMatrixAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The coupled variable whose components are coupled to AuxVariable + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/TagVectorAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str TagVectorAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The coupled variable whose components are coupled to AuxVariable + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + - name: vector_tag + required: No + default: !!str TagName + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Tag Name this Aux works on + subblocks: + - name: /AuxKernels/VariableGradientComponent + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: component + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The gradient component to compute + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: gradient_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable from which to compute the gradient component + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VariableGradientComponent + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/VariableOldValueBoundsAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: bound_type + required: No + default: !!str upper + cpp_type: MooseEnum + group_name: + options: upper lower + description: | + Type of bound. 'upper' refers to the upper bound. 'lower' refers to the lower value. + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: bounded_variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The variable to be bounded + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VariableOldValueBoundsAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/VariableTimeIntegrationAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: coefficient + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + A simple coefficient + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: order + required: No + default: !!str 2 + cpp_type: unsigned int + group_name: + description: | + The order of global truncation error: midpoint=1, trapazoidal=2, Simpson=3 + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VariableTimeIntegrationAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + - name: variable_to_integrate + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable to be integrated + subblocks: + - name: /AuxKernels/VectorFunctionAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The function to use as the value. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorFunctionAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/VectorMagnitudeAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorMagnitudeAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + - name: x + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + x-component of the vector + - name: y + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + y-component of the vector + - name: z + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + z-component of the vector + subblocks: + - name: /AuxKernels/VectorMaterialRealVectorValueAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: offset + required: No + default: !!str 0 0 0 + cpp_type: libMesh::VectorValue + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorMaterialRealVectorValueAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /AuxKernels/VectorPostprocessorVisualizationAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorPostprocessorVisualizationAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_broadcast + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Causes this AuxKernel to use a broadcasted version of the vector instead of a scattered version of the vector (the default). This is slower - but is useful for debugging and testing + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + - name: vector_name + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the vector to use from the VectorPostprocessor + - name: vpp + required: Yes + default: !!str + cpp_type: VectorPostprocessorName + group_name: + description: | + The name of the VectorPostprocessor to pull the data from. + subblocks: + - name: /AuxKernels/VectorVariableComponentAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: component + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The component to compute + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorVariableComponentAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + - name: vector_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable from which to compute the component + subblocks: +- name: /AuxScalarKernels + description: | + + parameters: + subblocks: + - name: /AuxScalarKernels/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /AuxScalarKernels/ConstantScalarAux + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: type + required: No + default: !!str ConstantScalarAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The value to be set to the scalar variable. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this kernel operates on + subblocks: + - name: /AuxScalarKernels/FunctionScalarAux + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The functions to set the scalar variable components. + - name: type + required: No + default: !!str FunctionScalarAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this kernel operates on + subblocks: + - name: /AuxScalarKernels/QuotientScalarAux + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: denominator + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The downstairs of the quotient variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: numerator + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The upstairs of the quotient variable + - name: type + required: No + default: !!str QuotientScalarAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this kernel operates on + subblocks: + - name: /AuxScalarKernels/ScalarTagMatrixAux + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: matrix_tag + required: No + default: !!str TagName + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Tag Name this Aux works on + - name: type + required: No + default: !!str ScalarTagMatrixAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The coupled variable whose components are coupled to AuxVariable + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this kernel operates on + subblocks: + - name: /AuxScalarKernels/ScalarTagVectorAux + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: type + required: No + default: !!str ScalarTagVectorAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The coupled variable whose components are coupled to AuxVariable + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this kernel operates on + - name: vector_tag + required: No + default: !!str TagName + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Tag Name this Aux works on + subblocks: + - name: /AuxScalarKernels/SolutionScalarAux + description: | + + parameters: + - name: add_factor + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Add this value (b) to the solution (x): ax+b, where a is the 'scale_factor' + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: from_variable + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the variable to extract from the file + - name: scale_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Scale factor (a) to be applied to the solution (x): ax+b, where b is the 'add_factor' + - name: solution + required: Yes + default: !!str + cpp_type: UserObjectName + group_name: + description: | + The name of the SolutionUserObject + - name: type + required: No + default: !!str SolutionScalarAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this kernel operates on + subblocks: +- name: /AuxVariables + description: | + + parameters: + subblocks: + - name: /AuxVariables/* + description: | + + parameters: + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH + description: | + Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed) + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: Yes + default: !!str MooseVariableBase + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + - name: initial_from_file_timestep + required: No + default: !!str LATEST + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: 'Initial From File' + description: | + Gives the timestep (or "LATEST") for which to read a solution from a file for a given variable. (Default: LATEST) + - name: initial_from_file_var + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: 'Initial From File' + description: | + Gives the name of a variable for which to read an initial condition from a mesh file + subblocks: + - name: /AuxVariables/*/InitialCondition + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /AuxVariables/*/InitialCondition/ + description: | + + parameters: + subblocks: + - name: /AuxVariables/*/InitialCondition//ArrayConstantIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str ArrayConstantIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: value + required: Yes + default: !!str + cpp_type: Eigen::Matrix + group_name: + description: | + The values to be set in IC + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /AuxVariables/*/InitialCondition//ArrayFunctionIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: function + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The initial condition functions. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str ArrayFunctionIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /AuxVariables/*/InitialCondition//BoundingBoxIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: inside + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The value of the variable inside the box + - name: int_width + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The width of the diffuse interface. Set to 0 for sharp interface. + - name: outside + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The value of the variable outside the box + - name: type + required: No + default: !!str BoundingBoxIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + - name: x1 + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The x coordinate of the lower left-hand corner of the box + - name: x2 + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The x coordinate of the upper right-hand corner of the box + - name: y1 + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The y coordinate of the lower left-hand corner of the box + - name: y2 + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The y coordinate of the upper right-hand corner of the box + - name: z1 + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The z coordinate of the lower left-hand corner of the box + - name: z2 + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The z coordinate of the upper right-hand corner of the box + subblocks: + - name: /AuxVariables/*/InitialCondition//ConstantIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str ConstantIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The value to be set in IC + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /AuxVariables/*/InitialCondition//FunctionIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The initial condition function. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str FunctionIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /AuxVariables/*/InitialCondition//FunctionScalarIC + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: function + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The initial condition function. + - name: type + required: No + default: !!str FunctionScalarIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: No + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /AuxVariables/*/InitialCondition//RandomIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: distribution + required: No + default: !!str + cpp_type: DistributionName + group_name: + description: | + Name of distribution defining distribution of randomly generated values + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: legacy_generator + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Determines whether or not the legacy generator (deprecated) should be used. + - name: max + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper bound of uniformly distributed randomly generated values + - name: min + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower bound of uniformly distributed randomly generated values + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Seed value for the random number generator + - name: type + required: No + default: !!str RandomIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /AuxVariables/*/InitialCondition//ScalarComponentIC + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str ScalarComponentIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: values + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Initial values to initialize the scalar variable. + - name: variable + required: No + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /AuxVariables/*/InitialCondition//ScalarConstantIC + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str ScalarConstantIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + + - name: variable + required: No + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /AuxVariables/*/InitialCondition//VectorConstantIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str VectorConstantIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + - name: x_value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The x value to be set in IC + - name: y_value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The y value to be set in IC + - name: z_value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The z value to be set in IC + subblocks: + - name: /AuxVariables/*/InitialCondition//VectorFunctionIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: function + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + The initial condition vector function. This cannot be supplied with the component parameters. + - name: function_x + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + A function that describes the x-component of the initial condition + - name: function_y + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + A function that describes the y-component of the initial condition + - name: function_z + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + A function that describes the z-component of the initial condition + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str VectorFunctionIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /AuxVariables/ArrayMooseVariable + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str ArrayMooseVariable + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /AuxVariables/MooseVariable + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariable + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /AuxVariables/MooseVariableBase + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariableBase + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /AuxVariables/MooseVariableConstMonomial + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str MONOMIAL + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str CONSTANT + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariableConstMonomial + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /AuxVariables/MooseVariableFVReal + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariableFVReal + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /AuxVariables/MooseVariableScalar + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str SCALAR + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariableScalar + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /AuxVariables/VectorMooseVariable + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str VectorMooseVariable + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: +- name: /BCs + description: | + + parameters: + subblocks: + - name: /BCs/* + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/ADDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: preset + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to preset the BC (apply the value before the solve begins). Note that the default value of this parameter is handled by the use_legacy_dirichlet_bc parameter on the MooseApp. + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: set_x_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the x-component of the variable + - name: set_y_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the y-component of the variable + - name: set_z_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the z-component of the variable + - name: type + required: No + default: !!str ADDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Value of the BC + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/ADFunctionDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The function describing the Dirichlet condition + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: preset + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to preset the BC (apply the value before the solve begins). Note that the default value of this parameter is handled by the use_legacy_dirichlet_bc parameter on the MooseApp. + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: set_x_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the x-component of the variable + - name: set_y_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the y-component of the variable + - name: set_z_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the z-component of the variable + - name: type + required: No + default: !!str ADFunctionDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/ADFunctionNeumannBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The function. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADFunctionNeumannBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/ADFunctionPenaltyDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + Forcing function + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: penalty + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Penalty scalar + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADFunctionPenaltyDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/ADFunctionPresetBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The forcing function. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: set_x_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the x-component of the variable + - name: set_y_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the y-component of the variable + - name: set_z_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the z-component of the variable + - name: type + required: No + default: !!str ADFunctionPresetBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/ADNeumannBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADNeumannBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: Yes + default: !!str 0 + cpp_type: double + group_name: + description: | + The value of the gradient on the boundary. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/ADPenaltyDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: penalty + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Penalty scalar + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADPenaltyDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Boundary value of the variable + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/ADPresetBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: set_x_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the x-component of the variable + - name: set_y_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the y-component of the variable + - name: set_z_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the z-component of the variable + - name: type + required: No + default: !!str ADPresetBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Value of the BC + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/ADVectorFunctionDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + The boundary condition vector function. This cannot be supplied with the component parameters. + - name: function_x + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The function for the x component + - name: function_y + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The function for the y component + - name: function_z + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The function for the z component + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: set_x_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the x-component of the variable + - name: set_y_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the y-component of the variable + - name: set_z_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the z-component of the variable + - name: type + required: No + default: !!str ADVectorFunctionDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/ADVectorMatchedValueBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: set_x_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the x-component of the variable + - name: set_y_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the y-component of the variable + - name: set_z_comp + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to set the z-component of the variable + - name: type + required: No + default: !!str ADVectorMatchedValueBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable whose value we are to match. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/ArrayDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ArrayDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: values + required: Yes + default: !!str + cpp_type: Eigen::Matrix + group_name: + description: | + The values the components must take on the boundary + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/ArrayPenaltyDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: penalty + required: No + default: !!str 4 + cpp_type: double + group_name: + description: | + Penalty scalar + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ArrayPenaltyDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: Yes + default: !!str + cpp_type: Eigen::Matrix + group_name: + description: | + Boundary value of the array variable + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/ArrayVacuumBC + description: | + + parameters: + - name: alpha + required: No + default: !!str + cpp_type: Eigen::Matrix + group_name: + description: | + Ratio between directional gradient and solution + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ArrayVacuumBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/ConvectiveFluxBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: duration + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: final + required: No + default: !!str 500 + cpp_type: double + group_name: + description: | + + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: initial + required: No + default: !!str 500 + cpp_type: double + group_name: + description: | + + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: rate + required: No + default: !!str 7500 + cpp_type: double + group_name: + description: | + + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ConvectiveFluxBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/CoupledVarNeumannBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: coef + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Coefficent ($\sigma$) multiplier for the coupled force term. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str CoupledVarNeumannBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + Coupled variable setting the gradient on the boundary. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/DGFunctionDiffusionDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: diff + required: No + default: !!str 1 + cpp_type: MaterialPropertyName + group_name: + description: | + The diffusion (or thermal electrical_conductivity or viscosity) coefficient. + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: epsilon + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Epsilon + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The forcing function. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: sigma + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Sigma + - name: type + required: No + default: !!str DGFunctionDiffusionDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The value the variable should have on the boundary + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/DiffusionFluxBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str DiffusionFluxBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/DirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: preset + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to preset the BC (apply the value before the solve begins). Note that the default value of this parameter is handled by the use_legacy_dirichlet_bc parameter on the MooseApp. + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str DirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Value of the BC + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/EigenArrayDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str eigen + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time eigen + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str EigenArrayDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str eigen + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual eigen + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/EigenDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str eigen + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time eigen + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str EigenDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str eigen + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual eigen + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/FunctionDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The forcing function. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: preset + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to preset the BC (apply the value before the solve begins). Note that the default value of this parameter is handled by the use_legacy_dirichlet_bc parameter on the MooseApp. + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str FunctionDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/FunctionGradientNeumannBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: coeff + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The diffusion, thermal electrical_conductivity, etc. coefficient + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: exact_solution + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The exact solution. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str FunctionGradientNeumannBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/FunctionNeumannBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The function. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str FunctionNeumannBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/FunctionPenaltyDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + Forcing function + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: penalty + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Penalty scalar + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str FunctionPenaltyDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/FunctionPresetBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The forcing function. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str FunctionPresetBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/LagrangeVecDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str LagrangeVecDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: values + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The values the components must take on the boundary + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/LagrangeVecFunctionDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + The boundary condition vector function. This cannot be supplied with the component parameters. + - name: function_x + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The function for the x component + - name: function_y + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The function for the y component + - name: function_z + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The function for the z component + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str LagrangeVecFunctionDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + - name: x_exact_soln + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + The exact solution for the x component + - name: y_exact_soln + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + The exact solution for the y component + - name: z_exact_soln + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + The exact solution for the z component + subblocks: + - name: /BCs/MatchedValueBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MatchedValueBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable whose value we are to match. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/NeumannBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NeumannBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The value of the gradient on the boundary. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/OneDEqualValueConstraintBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: component + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + Component of the Lagrange multiplier + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: lambda + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + Lagrange multiplier + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str OneDEqualValueConstraintBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + - name: vg + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Variation of the constraint g wrt this surface (+1 or -1). Note: g = value1 - value2 = 0 + subblocks: + - name: /BCs/PenaltyDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: penalty + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Penalty scalar + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str PenaltyDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Boundary value of the variable + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/Periodic + description: | + + parameters: + subblocks: + - name: /BCs/Periodic/* + description: | + + parameters: + - name: auto_direction + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If using a generated mesh, you can specifiy just the dimension(s) you want to mark as periodic + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: inv_transform_func + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Functions that specify the inverse transformation + - name: primary + required: No + default: !!str + cpp_type: BoundaryName + group_name: + description: | + Boundary ID associated with the primary boundary. + - name: secondary + required: No + default: !!str + cpp_type: BoundaryName + group_name: + description: | + Boundary ID associated with the secondary boundary. + - name: transform_func + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Functions that specify the transformation + - name: translation + required: No + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + Vector that translates coordinates on the primary boundary to coordinates on the secondary boundary. + - name: variable + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Variable for the periodic boundary + subblocks: + - name: /BCs/PostprocessorDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The postprocessor to set the value to on the boundary. + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str PostprocessorDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/PostprocessorNeumannBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: postprocessor + required: No + default: !!str 0 + cpp_type: PostprocessorName + group_name: + description: | + The postprocessor to use for value of the gradient on the boundary. + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str PostprocessorNeumannBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/PresetBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str PresetBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Value of the BC + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/SinDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: duration + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: final + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: initial + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str SinDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/SinNeumannBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: duration + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The duration of the ramp + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: final + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The final value of the gradient on the boundary + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: initial + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The initial value of the gradient on the boundary + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str SinNeumannBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/VacuumBC + description: | + + parameters: + - name: alpha + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + No idea. + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VacuumBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/VectorCurlBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: curl_value + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + Value of field curl on the boundary. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorCurlBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/VectorTangentialPenaltyDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function_x + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The function for the x component + - name: function_y + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The function for the y component + - name: function_z + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The function for the z component + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: penalty + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The penalty coefficient + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorTangentialPenaltyDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + - name: x_exact_soln + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + The exact solution for the x component + - name: y_exact_soln + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + The exact solution for the y component + - name: z_exact_soln + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + The exact solution for the z component + subblocks: + - name: /BCs/VectorDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: values + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The values the components must take on the boundary + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /BCs/VectorFunctionDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + The boundary condition vector function. This cannot be supplied with the component parameters. + - name: function_x + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The function for the x component + - name: function_y + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The function for the y component + - name: function_z + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The function for the z component + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorFunctionDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str residual + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time residual + description: | + The tag for the vectors this Kernel should fill + - name: x_exact_soln + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + The exact solution for the x component + - name: y_exact_soln + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + The exact solution for the y component + - name: z_exact_soln + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + The exact solution for the z component + subblocks: + - name: /BCs/VectorNeumannBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorNeumannBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + - name: vector_value + required: No + default: !!str 0 0 0 + cpp_type: libMesh::VectorValue + group_name: + description: | + vector this BC should act in + subblocks: + - name: /BCs/WeakGradientBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str WeakGradientBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: +- name: /Bounds + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + subblocks: + - name: /Bounds/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Bounds/ADMaterialRankTwoTensorAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: i + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The index i of ij for the tensor to output + - name: j + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The index j of ij for the tensor to output + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADMaterialRankTwoTensorAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/ADMaterialRealAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADMaterialRealAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/ADMaterialRealVectorValueAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: component + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The vector component to consider for this kernel + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADMaterialRealVectorValueAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/ADVectorMaterialRealVectorValueAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: offset + required: No + default: !!str 0 0 0 + cpp_type: libMesh::VectorValue + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADVectorMaterialRealVectorValueAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/ArrayVariableComponent + description: | + + parameters: + - name: array_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the array variable + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: component + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Component of the array variable to be extracted + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ArrayVariableComponent + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/ConstantAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ConstantAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Some constant value that can be read from the input file + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/ConstantBoundsAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: bound_type + required: No + default: !!str upper + cpp_type: MooseEnum + group_name: + options: upper lower + description: | + Type of bound. 'upper' refers to the upper bound. 'lower' refers to the lower value. + - name: bound_value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The value of bound for the variable + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: bounded_variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The variable to be bounded + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ConstantBoundsAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/DebugResidualAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: debug_variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The variable that is being debugged. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str DebugResidualAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/DiffusionFluxAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: component + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The desired component of flux. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diffusion_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable + - name: diffusivity + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the diffusivity material property that will be used in the flux computation. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str DiffusionFluxAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/ElemExtraIDAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: extra_id_name + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The extra ID name in the mesh + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElemExtraIDAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/ElementH1ErrorFunctionAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: coupled_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable to compute the norm of. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + Function representing the exact solution + - name: p + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + The exponent used in the norm. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementH1ErrorFunctionAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/ElementIntegerAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: integer_names + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Element integers to be retrieved + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementIntegerAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/ElementL2ErrorFunctionAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: coupled_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable to compute the norm of. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + Function representing the exact solution + - name: p + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + The exponent used in the norm. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementL2ErrorFunctionAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/ElementLengthAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: method + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: min max + description: | + The size calculation to perform ('min' or 'max'). + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementLengthAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/ElementLpNormAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: coupled_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable to compute the norm of. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: p + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + The exponent used in the norm. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementLpNormAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/ElementQualityAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: metric + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: ASPECT_RATIO SKEW SHEAR SHAPE MAX_ANGLE MIN_ANGLE CONDITION DISTORTION TAPER WARP STRETCH DIAGONAL ASPECT_RATIO_BETA ASPECT_RATIO_GAMMA SIZE JACOBIAN + description: | + The quality metric to use. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementQualityAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/FunctionAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The function to use as the value + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str FunctionAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/GapValueAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: normal_smoothing_distance + required: No + default: !!str + cpp_type: double + group_name: + description: | + Distance from edge in parametric coordinates over which to smooth contact normal + - name: normal_smoothing_method + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Method to use to smooth normals (edge_based|nodal_normal_based) + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: FIRST SECOND THIRD FOURTH + description: | + The finite element order + - name: paired_boundary + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The boundary on the other side of a gap. + - name: paired_variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable to get the value of. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: tangential_tolerance + required: No + default: !!str + cpp_type: double + group_name: + description: | + Tangential distance to extend edges of contact surfaces + - name: type + required: No + default: !!str GapValueAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + - name: warnings + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether to output warning messages concerning nodes not being found + subblocks: + - name: /Bounds/GhostingAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: functor_type + required: No + default: !!str geometric + cpp_type: MooseEnum + group_name: + options: geometric algebraic + description: | + The type of ghosting functor to use + - name: ghost_uo + required: Yes + default: !!str + cpp_type: UserObjectName + group_name: + description: | + The GhostUserObject from which to obtain ghosting information from. + - name: include_local_elements + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to include local elements as part of the ghosting set + - name: pid + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The PID to see the ghosting for + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str GhostingAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/HardwareIDAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str HardwareIDAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/InterfaceValueUserObjectAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: interface_uo_name + required: Yes + default: !!str + cpp_type: UserObjectName + group_name: + description: | + The name of the interface user object to use + - name: return_side_average + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true returns the elment side average rather than a single qp value + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str InterfaceValueUserObjectAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/MaterialRankFourTensorAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: i + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The index i of ijkl for the tensor to output + - name: j + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The index j of ijkl for the tensor to output + - name: k + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The index k of ijkl for the tensor to output + - name: l + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The index l of ijkl for the tensor to output + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialRankFourTensorAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/MaterialRankTwoTensorAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: i + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The index i of ij for the tensor to output + - name: j + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The index j of ij for the tensor to output + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialRankTwoTensorAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/MaterialRealAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialRealAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/MaterialRealDenseMatrixAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: column + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The column component to consider for this kernel + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: row + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The row component to consider for this kernel + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialRealDenseMatrixAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/MaterialRealTensorValueAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: column + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The column component to consider for this kernel + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: row + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The row component to consider for this kernel + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialRealTensorValueAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/MaterialRealVectorValueAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: component + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The vector component to consider for this kernel + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialRealVectorValueAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/MaterialStdVectorAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: index + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The index to consider for this kernel + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: selected_qp + required: No + default: !!str + cpp_type: unsigned int + group_name: 'Advanced' + description: | + Evaluate the std::vector at this quadpoint. This only needs to be used if you are interested in a particular quadpoint in each element: otherwise do not include this parameter in your input file + - name: type + required: No + default: !!str MaterialStdVectorAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/MaterialStdVectorRealGradientAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: component + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The gradient component to be extracted for this kernel + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: index + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The index to consider for this kernel + - name: offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialStdVectorRealGradientAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/NearestNodeDistanceAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: paired_boundary + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The boundary to find the distance to. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NearestNodeDistanceAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/NearestNodeValueAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: paired_boundary + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The boundary to get the value from. + - name: paired_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable to get the value of. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NearestNodeValueAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/NormalizationAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: normal_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The normalization factor + - name: normalization + required: No + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The postprocessor on the source + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: shift + required: No + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The postprocessor to shift the source + - name: source_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable to be normalized + - name: type + required: No + default: !!str NormalizationAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/ParsedAux + description: | + + parameters: + - name: args + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + coupled variables + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: constant_expressions + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of values for the constants in constant_names (can be an FParser expression) + - name: constant_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of constants used in the parsed function (use this for kB etc.) + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: disable_fpoptimizer + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Disable the function parser algebraic optimizer + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_ad_cache + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable cacheing of function derivatives for faster startup time + - name: enable_auto_optimize + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable automatic immediate optimization of derivatives + - name: enable_jit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable just-in-time compilation of function expressions for faster evaluation + - name: evalerror_behavior + required: No + default: !!str nan + cpp_type: MooseEnum + group_name: 'Advanced' + options: nan nan_warning error exception + description: | + What to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exception + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: fail_on_evalerror + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Fail fatally if a function evaluation returns an error code (otherwise just pass on NaN) + - name: function + required: Yes + default: !!str + cpp_type: FunctionExpression + group_name: + description: | + function expression + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ParsedAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/PenetrationAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: normal_smoothing_distance + required: No + default: !!str + cpp_type: double + group_name: + description: | + Distance from edge in parametric coordinates over which to smooth contact normal + - name: normal_smoothing_method + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Method to use to smooth normals (edge_based|nodal_normal_based) + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: FIRST SECOND THIRD FOURTH + description: | + The finite element order + - name: paired_boundary + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The boundary to be penetrated + - name: quantity + required: No + default: !!str distance + cpp_type: MooseEnum + group_name: + options: distance tangential_distance normal_x normal_y normal_z closest_point_x closest_point_y closest_point_z element_id side incremental_slip_magnitude incremental_slip_x incremental_slip_y incremental_slip_z accumulated_slip force_x force_y force_z normal_force_magnitude normal_force_x normal_force_y normal_force_z tangential_force_magnitude tangential_force_x tangential_force_y tangential_force_z frictional_energy lagrange_multiplier mechanical_status + description: | + The quantity to recover from the available penetration information + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: tangential_tolerance + required: No + default: !!str + cpp_type: double + group_name: + description: | + Tangential distance to extend edges of contact surfaces + - name: type + required: No + default: !!str PenetrationAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/ProcessorIDAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ProcessorIDAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/QuotientAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: denominator + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The downstairs of the quotient variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: numerator + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The upstairs of the quotient variable + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str QuotientAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/SelfAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str SelfAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/SolutionAux + description: | + + parameters: + - name: add_factor + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Add this value (b) to the solution (x): ax+b, where a is the 'scale_factor' + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direct + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true the meshes must be the same and then the values are simply copied over. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: from_variable + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the variable to extract from the file + - name: scale_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Scale factor (a) to be applied to the solution (x): ax+b, where b is the 'add_factor' + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: solution + required: Yes + default: !!str + cpp_type: UserObjectName + group_name: + description: | + The name of the SolutionUserObject + - name: type + required: No + default: !!str SolutionAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/SpatialUserObjectAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str SpatialUserObjectAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: user_object + required: Yes + default: !!str + cpp_type: UserObjectName + group_name: + description: | + The UserObject UserObject to get values from. Note that the UserObject _must_ implement the spatialValue() virtual function! + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/TagMatrixAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: matrix_tag + required: No + default: !!str TagName + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Tag Name this Aux works on + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str TagMatrixAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The coupled variable whose components are coupled to AuxVariable + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/TagVectorAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str TagVectorAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The coupled variable whose components are coupled to AuxVariable + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + - name: vector_tag + required: No + default: !!str TagName + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Tag Name this Aux works on + subblocks: + - name: /Bounds/VariableGradientComponent + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: component + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The gradient component to compute + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: gradient_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable from which to compute the gradient component + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VariableGradientComponent + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/VariableOldValueBoundsAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: bound_type + required: No + default: !!str upper + cpp_type: MooseEnum + group_name: + options: upper lower + description: | + Type of bound. 'upper' refers to the upper bound. 'lower' refers to the lower value. + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: bounded_variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The variable to be bounded + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VariableOldValueBoundsAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/VariableTimeIntegrationAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: coefficient + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + A simple coefficient + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: order + required: No + default: !!str 2 + cpp_type: unsigned int + group_name: + description: | + The order of global truncation error: midpoint=1, trapazoidal=2, Simpson=3 + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VariableTimeIntegrationAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + - name: variable_to_integrate + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable to be integrated + subblocks: + - name: /Bounds/VectorFunctionAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The function to use as the value. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorFunctionAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/VectorMagnitudeAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorMagnitudeAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + - name: x + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + x-component of the vector + - name: y + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + y-component of the vector + - name: z + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + z-component of the vector + subblocks: + - name: /Bounds/VectorMaterialRealVectorValueAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The factor by which to multiply your material property for visualization + - name: offset + required: No + default: !!str 0 0 0 + cpp_type: libMesh::VectorValue + group_name: + description: | + The offset to add to your material property for visualization + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The scalar material property name + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorMaterialRealVectorValueAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + subblocks: + - name: /Bounds/VectorPostprocessorVisualizationAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorPostprocessorVisualizationAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_broadcast + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Causes this AuxKernel to use a broadcasted version of the vector instead of a scattered version of the vector (the default). This is slower - but is useful for debugging and testing + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + - name: vector_name + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the vector to use from the VectorPostprocessor + - name: vpp + required: Yes + default: !!str + cpp_type: VectorPostprocessorName + group_name: + description: | + The name of the VectorPostprocessor to pull the data from. + subblocks: + - name: /Bounds/VectorVariableComponentAux + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: component + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The component to compute + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, PRE_DISPLACE. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorVariableComponentAux + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The name of the variable that this object applies to + - name: vector_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable from which to compute the component + subblocks: +- name: /Constraints + description: | + + parameters: + subblocks: + - name: /Constraints/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Constraints/CoupledTiedValueConstraint + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: master + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The boundary ID associated with the master side + - name: master_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable on the master side of the domain + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: normal_smoothing_distance + required: No + default: !!str + cpp_type: double + group_name: + description: | + Distance from edge in parametric coordinates over which to smooth contact normal + - name: normal_smoothing_method + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Method to use to smooth normals (edge_based|nodal_normal_based) + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: FIRST SECOND THIRD FOURTH + description: | + The finite element order used for projections + - name: scaling + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + scaling factor to be applied to constraint equations + - name: slave + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The boundary ID associated with the slave side + - name: tangential_tolerance + required: No + default: !!str + cpp_type: double + group_name: + description: | + Tangential distance to extend edges of contact surfaces + - name: type + required: No + default: !!str CoupledTiedValueConstraint + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this constraint is applied to. + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Constraints/EqualGradientConstraint + description: | + + parameters: + - name: component + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + Gradient component to constrain + - name: compute_lm_residuals + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to compute Lagrange Multiplier residuals + - name: compute_primal_residuals + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to compute residuals for the primal variable. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: master_boundary + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The name of the master boundary sideset. + - name: master_subdomain + required: Yes + default: !!str + cpp_type: SubdomainName + group_name: + description: | + The name of the master subdomain. + - name: master_variable + required: No + default: !!str + cpp_type: VariableName + group_name: + description: | + Primal variable on master surface. If this parameter is not provided then the master variable will be initialized to the slave variable + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: periodic + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether this constraint is going to be used to enforce a periodic condition. This has the effect of changing the normals vector for projection from outward to inward facing + - name: slave_boundary + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The name of the slave boundary sideset. + - name: slave_subdomain + required: Yes + default: !!str + cpp_type: SubdomainName + group_name: + description: | + The name of the slave subdomain. + - name: slave_variable + required: No + default: !!str + cpp_type: VariableName + group_name: + description: | + Primal variable on slave surface. + - name: type + required: No + default: !!str EqualGradientConstraint + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: No + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the lagrange multiplier variable that this constraint is applied to. This parameter may not be supplied in the case of using penalty methods for example + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Constraints/EqualValueBoundaryConstraint + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: formulation + required: No + default: !!str penalty + cpp_type: MooseEnum + group_name: + options: penalty kinematic + description: | + Formulation used to calculate constraint - penalty or kinematic. + - name: master + required: No + default: !!str 4294967295 + cpp_type: unsigned int + group_name: + description: | + The ID of the master node. If no ID is provided, first node of slave set is chosen. + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: penalty + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The penalty used for the boundary term + - name: slave + required: No + default: !!str NaN + cpp_type: BoundaryName + group_name: + description: | + The boundary ID associated with the slave side + - name: slave_node_ids + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The IDs of the slave node + - name: type + required: No + default: !!str EqualValueBoundaryConstraint + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this constraint is applied to. + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Constraints/EqualValueConstraint + description: | + + parameters: + - name: compute_lm_residuals + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to compute Lagrange Multiplier residuals + - name: compute_primal_residuals + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to compute residuals for the primal variable. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: master_boundary + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The name of the master boundary sideset. + - name: master_subdomain + required: Yes + default: !!str + cpp_type: SubdomainName + group_name: + description: | + The name of the master subdomain. + - name: master_variable + required: No + default: !!str + cpp_type: VariableName + group_name: + description: | + Primal variable on master surface. If this parameter is not provided then the master variable will be initialized to the slave variable + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: periodic + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether this constraint is going to be used to enforce a periodic condition. This has the effect of changing the normals vector for projection from outward to inward facing + - name: slave_boundary + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The name of the slave boundary sideset. + - name: slave_subdomain + required: Yes + default: !!str + cpp_type: SubdomainName + group_name: + description: | + The name of the slave subdomain. + - name: slave_variable + required: No + default: !!str + cpp_type: VariableName + group_name: + description: | + Primal variable on slave surface. + - name: type + required: No + default: !!str EqualValueConstraint + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: No + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the lagrange multiplier variable that this constraint is applied to. This parameter may not be supplied in the case of using penalty methods for example + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Constraints/EqualValueEmbeddedConstraint + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: formulation + required: No + default: !!str kinematic + cpp_type: MooseEnum + group_name: + options: kinematic penalty + description: | + Formulation used to enforce the constraint + - name: master + required: Yes + default: !!str + cpp_type: SubdomainName + group_name: + description: | + master block id + - name: master_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable on the master side of the domain + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: penalty + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Penalty parameter used in constraint enforcement for kinematic and penalty formulations. + - name: slave + required: Yes + default: !!str + cpp_type: SubdomainName + group_name: + description: | + slave block id + - name: type + required: No + default: !!str EqualValueEmbeddedConstraint + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this constraint is applied to. + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Constraints/LinearNodalConstraint + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: formulation + required: No + default: !!str penalty + cpp_type: MooseEnum + group_name: + options: penalty kinematic + description: | + Formulation used to calculate constraint - penalty or kinematic. + - name: master + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The master node IDs. + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: penalty + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The penalty used for the boundary term + - name: slave_node_ids + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of slave node ids + - name: slave_node_set + required: No + default: !!str NaN + cpp_type: BoundaryName + group_name: + description: | + The boundary ID associated with the slave side + - name: type + required: No + default: !!str LinearNodalConstraint + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this constraint is applied to. + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + - name: weights + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The weights associated with the master node ids. Must be of the same size as master nodes + subblocks: + - name: /Constraints/OldEqualValueConstraint + description: | + + parameters: + - name: compute_lm_residuals + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to compute Lagrange Multiplier residuals + - name: compute_primal_residuals + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether to compute residuals for the primal variable. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: master_boundary + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The name of the master boundary sideset. + - name: master_subdomain + required: Yes + default: !!str + cpp_type: SubdomainName + group_name: + description: | + The name of the master subdomain. + - name: master_variable + required: No + default: !!str + cpp_type: VariableName + group_name: + description: | + Primal variable on master surface. If this parameter is not provided then the master variable will be initialized to the slave variable + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: periodic + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether this constraint is going to be used to enforce a periodic condition. This has the effect of changing the normals vector for projection from outward to inward facing + - name: slave_boundary + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The name of the slave boundary sideset. + - name: slave_subdomain + required: Yes + default: !!str + cpp_type: SubdomainName + group_name: + description: | + The name of the slave subdomain. + - name: slave_variable + required: No + default: !!str + cpp_type: VariableName + group_name: + description: | + Primal variable on slave surface. + - name: type + required: No + default: !!str OldEqualValueConstraint + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: No + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the lagrange multiplier variable that this constraint is applied to. This parameter may not be supplied in the case of using penalty methods for example + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Constraints/TiedValueConstraint + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str LINEAR + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: master + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The boundary ID associated with the master side + - name: master_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable on the master side of the domain + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: normal_smoothing_distance + required: No + default: !!str + cpp_type: double + group_name: + description: | + Distance from edge in parametric coordinates over which to smooth contact normal + - name: normal_smoothing_method + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Method to use to smooth normals (edge_based|nodal_normal_based) + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: FIRST SECOND THIRD FOURTH + description: | + The finite element order used for projections + - name: scaling + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + scaling factor to be applied to constraint equations + - name: slave + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The boundary ID associated with the slave side + - name: tangential_tolerance + required: No + default: !!str + cpp_type: double + group_name: + description: | + Tangential distance to extend edges of contact surfaces + - name: type + required: No + default: !!str TiedValueConstraint + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this constraint is applied to. + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: +- name: /Controls + description: | + + parameters: + subblocks: + - name: /Controls/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Controls/BoolFunctionControl + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The Controls that this control relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The function to use for controlling the specified parameter. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: parameter + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The input parameter(s) to control. Specify a single parameter name and all parameters in all objects matching the name will be updated + - name: type + required: No + default: !!str BoolFunctionControl + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Controls/ConditionalFunctionEnableControl + description: | + + parameters: + - name: conditional_function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The function to give a true or false value + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The Controls that this control relies upon (i.e. must execute before this one) + - name: disable_objects + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + A list of object tags to disable. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_objects + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + A list of object tags to enable. + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: reverse_on_false + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When true, the disable/enable lists are set to opposite values when the specified condition is false. + - name: type + required: No + default: !!str ConditionalFunctionEnableControl + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Controls/RealFunctionControl + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The Controls that this control relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The function to use for controlling the specified parameter. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: parameter + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The input parameter(s) to control. Specify a single parameter name and all parameters in all objects matching the name will be updated + - name: type + required: No + default: !!str RealFunctionControl + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Controls/TimePeriod + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The Controls that this control relies upon (i.e. must execute before this one) + - name: disable_objects + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + A list of object tags to disable. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_objects + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + A list of object tags to enable. + - name: end_time + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The time at which the objects are to be enable/disabled. + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: reverse_on_false + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When true, the disable/enable lists are set to opposite values when the specified condition is false. + - name: set_sync_times + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set the start and end time as execute sync times. + - name: start_time + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The time at which the objects are to be enabled/disabled. + - name: type + required: No + default: !!str TimePeriod + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: +- name: /DGKernels + description: | + + parameters: + subblocks: + - name: /DGKernels/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /DGKernels/ADDGDiffusion + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: diff + required: No + default: !!str 1 + cpp_type: MaterialPropertyName + group_name: + description: | + The diffusion (or thermal electrical_conductivity or viscosity) coefficient. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: epsilon + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + epsilon + - name: exclude_boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The internal side sets to be excluded from this kernel. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: sigma + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + sigma + - name: type + required: No + default: !!str ADDGDiffusion + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /DGKernels/ArrayDGDiffusion + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: diff + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The diffusion (or thermal electrical_conductivity or viscosity) coefficient. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: epsilon + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + epsilon + - name: exclude_boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The internal side sets to be excluded from this kernel. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: sigma + required: No + default: !!str 4 + cpp_type: double + group_name: + description: | + sigma + - name: type + required: No + default: !!str ArrayDGDiffusion + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /DGKernels/DGConvection + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: exclude_boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The internal side sets to be excluded from this kernel. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: type + required: No + default: !!str DGConvection + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + - name: velocity + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + Velocity vector + subblocks: + - name: /DGKernels/DGDiffusion + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: diff + required: No + default: !!str 1 + cpp_type: MaterialPropertyName + group_name: + description: | + The diffusion (or thermal electrical_conductivity or viscosity) coefficient. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: epsilon + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + epsilon + - name: exclude_boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The internal side sets to be excluded from this kernel. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: sigma + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + sigma + - name: type + required: No + default: !!str DGDiffusion + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: +- name: /Dampers + description: | + + parameters: + subblocks: + - name: /Dampers/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Dampers/BoundingValueElementDamper + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: max_value + required: No + default: !!str 1.79769e+308 + cpp_type: double + group_name: + description: | + The maximum permissible iterative value for the variable. + - name: min_damping + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Minimum value of computed damping. Damping lower than this will result in an exception being thrown and cutting the time step + - name: min_value + required: No + default: !!str -1.79769e+308 + cpp_type: double + group_name: + description: | + The minimum permissible iterative value for the variable. + - name: type + required: No + default: !!str BoundingValueElementDamper + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this damper operates on + subblocks: + - name: /Dampers/BoundingValueNodalDamper + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: max_value + required: No + default: !!str 1.79769e+308 + cpp_type: double + group_name: + description: | + The maximum permissible iterative value for the variable. + - name: min_damping + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Minimum value of computed damping. Damping lower than this will result in an exception being thrown and cutting the time step + - name: min_value + required: No + default: !!str -1.79769e+308 + cpp_type: double + group_name: + description: | + The minimum permissible iterative value for the variable. + - name: type + required: No + default: !!str BoundingValueNodalDamper + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this damper operates on + subblocks: + - name: /Dampers/ConstantDamper + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: damping + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The percentage (between 0 and 1) of the newton update to take. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: min_damping + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Minimum value of computed damping. Damping lower than this will result in an exception being thrown and cutting the time step + - name: type + required: No + default: !!str ConstantDamper + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Dampers/MaxIncrement + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: increment_type + required: No + default: !!str absolute + cpp_type: MooseEnum + group_name: + options: absolute fractional + description: | + Type of increment to compare against max_increment. 'absolute': use variable increment. 'fractional': use variable increment divided by the variable value. + - name: max_increment + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The maximum newton increment for the variable. + - name: min_damping + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Minimum value of computed damping. Damping lower than this will result in an exception being thrown and cutting the time step + - name: type + required: No + default: !!str MaxIncrement + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this damper operates on + subblocks: +- name: /Debug + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: show_actions + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Print out the actions being executed + - name: show_material_props + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Print out the material properties supplied for each block, face, neighbor, and/or sideset + - name: show_parser + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Shows parser block extraction and debugging information + - name: show_top_residuals + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The number of top residuals to print out (0 = no output) + - name: show_var_residual_norms + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Print the residual norms of the individual solution variables at each nonlinear iteration + - name: show_var_residual + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Variables for which residuals will be sent to the output file. + subblocks: + - name: /Debug/MaterialDerivativeTest + description: | + + parameters: + subblocks: + - name: /Debug/MaterialDerivativeTest/* + description: | + + parameters: + - name: args + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Variables the tested material property depends on. + - name: derivative_order + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Highest order derivative to test derivatives of. + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: prop_name + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + Name of the material property to test the derivatives of. + - name: prop_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: Real RankTwoTensor RankFourTensor + description: | + Type of the material property to test the derivatives of. + subblocks: +- name: /DeprecatedBlock + description: | + + parameters: + - name: DEPRECATED + required: No + default: !!str + cpp_type: bool + group_name: + description: | + *** WARNING: This block is deprecated - DO NOT USE *** + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + subblocks: +- name: /DiracKernels + description: | + + parameters: + subblocks: + - name: /DiracKernels/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /DiracKernels/ConstantPointSource + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: drop_duplicate_points + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + By default points added to a DiracKernel are dropped if a point at the same locationhas been added before. If this option is set to false duplicate points are retainedand contribute to residual and Jacobian. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: point + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The x,y,z coordinates of the point + - name: type + required: No + default: !!str ConstantPointSource + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The value of the point source + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /DiracKernels/FunctionDiracSource + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: drop_duplicate_points + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + By default points added to a DiracKernel are dropped if a point at the same locationhas been added before. If this option is set to false duplicate points are retainedand contribute to residual and Jacobian. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The function to use for controlling the specified dirac source. + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: point + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The x,y,z coordinates of the point + - name: type + required: No + default: !!str FunctionDiracSource + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: +- name: /Distributions + description: | + + parameters: + subblocks: + - name: /Distributions/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: +- name: /Executioner + description: | + + parameters: + - name: auto_preconditioning + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When true and a [Preconditioning] block does not exist, the application will attempt to use the correct preconditioning given the Executioner settings. + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Executioner/ + description: | + + parameters: + subblocks: + - name: /Executioner//Eigenvalue + description: | + + parameters: + - name: accept_on_max_picard_iteration + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Picard' + description: | + True to treat reaching the maximum number of Picard iterations as converged. + - name: automatic_scaling + required: No + default: !!str + cpp_type: bool + group_name: 'Solver' + description: | + Whether to use automatic scaling for the variables. + - name: compute_initial_residual_before_preset_bcs + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Solver' + description: | + Use the residual norm computed *before* preset BCs are imposed in relative convergence check + - name: compute_scaling_once + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Solver' + description: | + Whether the scaling factors should only be computed once at the beginning of the simulation through an extra Jacobian evaluation. If this is set to false, then the scaling factors will be computed during an extra Jacobian evaluation at the beginning of every time step. + - name: contact_line_search_allowed_lambda_cuts + required: No + default: !!str 2 + cpp_type: unsigned int + group_name: + description: | + The number of times lambda is allowed to be cut in half in the contact line search. We recommend this number be roughly bounded by 0 <= allowed_lambda_cuts <= 3 + - name: contact_line_search_ltol + required: No + default: !!str + cpp_type: double + group_name: + description: | + The linear relative tolerance to be used while the contact state is changing between non-linear iterations. We recommend that this tolerance be looser than the standard linear tolerance + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: custom_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: + description: | + The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual. + - name: custom_rel_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: + description: | + The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual. + - name: direct_pp_value + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use direct postprocessor value (scaled by value on first iteration). False (default) to use difference in postprocessor value between picard iterations. + - name: disable_picard_residual_norm_check + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Picard' + description: | + Disable the Picard residual norm evaluation thus the three parameters picard_rel_tol, picard_abs_tol and picard_force_norms. + - name: eigen_max_its + required: No + default: !!str 10000 + cpp_type: unsigned int + group_name: + description: | + Max Iterations for Eigen Solver + - name: eigen_problem_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: HERMITIAN NON_HERMITIAN GEN_HERMITIAN GEN_NON_HERMITIAN GEN_INDEFINITE POS_GEN_NON_HERMITIAN SLEPC_DEFAULT + description: | + Type of the eigenvalue problem we are solving HERMITIAN: Hermitian NON_HERMITIAN: Non-Hermitian GEN_HERMITIAN: Generalized Hermitian GEN_NON_HERMITIAN: Generalized Non-Hermitian GEN_INDEFINITE: Generalized indefinite Hermitian POS_GEN_NON_HERMITIAN: Generalized Non-Hermitian with positive (semi-)definite B SLEPC_DEFAULT: Use whatever SLEPC has by default + - name: eigen_tol + required: No + default: !!str 0.0001 + cpp_type: double + group_name: + description: | + Relative Tolerance for Eigen Solver + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: free_power_iterations + required: No + default: !!str 4 + cpp_type: unsigned int + group_name: + description: | + The number of free power iterations + - name: l_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: + description: | + Absolute Tolerances for Linear Solver + - name: l_max_its + required: No + default: !!str 10000 + cpp_type: unsigned int + group_name: 'Solver' + description: | + Max Linear Iterations + - name: l_tol + required: No + default: !!str 0.01 + cpp_type: double + group_name: 'Solver' + description: | + Linear Tolerance + - name: line_search + required: No + default: !!str default + cpp_type: MooseEnum + group_name: + options: basic bt contact cp default l2 none project shell + description: | + Specifies the line search type (Note: none = basic) + - name: line_search_package + required: No + default: !!str petsc + cpp_type: MooseEnum + group_name: + options: petsc moose + description: | + The solver package to use to conduct the line-search + - name: matrix_free + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use a matrix free fashion to form operators. If true, shell matrices will be used and meanwhile a preconditioning matrixmay be formed as well. + - name: max_xfem_update + required: No + default: !!str 4294967295 + cpp_type: unsigned int + group_name: + description: | + Maximum number of times to update XFEM crack topology in a step due to evolving cracks + - name: mffd_type + required: No + default: !!str wp + cpp_type: MooseEnum + group_name: + options: wp ds + description: | + Specifies the finite differencing type for Jacobian-free solve types. Note that the default is wp (for Walker and Pernice). + - name: n_basis_vectors + required: No + default: !!str 3 + cpp_type: unsigned int + group_name: + description: | + The dimension of eigen subspaces + - name: n_eigen_pairs + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + The number of eigen pairs + - name: nl_abs_step_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Absolute step Tolerance + - name: nl_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Absolute Tolerance + - name: nl_div_tol + required: No + default: !!str -1 + cpp_type: double + group_name: + description: | + Nonlinear Divergence Tolerance + - name: nl_max_funcs + required: No + default: !!str 10000 + cpp_type: unsigned int + group_name: 'Solver' + description: | + Max Nonlinear solver function evaluations + - name: nl_max_its + required: No + default: !!str 50 + cpp_type: unsigned int + group_name: 'Solver' + description: | + Max Nonlinear Iterations + - name: nl_rel_step_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Relative step Tolerance + - name: nl_rel_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Relative Tolerance + - name: normal_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Normalize eigenvector to make a defined norm equal to this factor + - name: normalization + required: No + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + Postprocessor evaluating norm of eigenvector for normalization + - name: num_grids + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Solver' + description: | + The number of grids to use for a grid sequencing algorithm. This includes the final grid, so num_grids = 1 indicates just one solve in a time-step + - name: petsc_options + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -dm_moose_print_embedding -dm_view -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_monitor -ksp_monitor_snes_lg-snes_ksp_ew -ksp_snes_ew -snes_converged_reason -snes_ksp -snes_ksp_ew -snes_linesearch_monitor -snes_mf -snes_mf_operator -snes_monitor -snes_test_display -snes_view + description: | + Singleton PETSc options + - name: petsc_options_iname + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -ksp_atol -ksp_gmres_restart -ksp_max_it -ksp_pc_side -ksp_rtol -ksp_type -mat_fd_coloring_err -mat_fd_type -mat_mffd_type -pc_asm_overlap -pc_factor_levels -pc_factor_mat_ordering_type -pc_hypre_boomeramg_grid_sweeps_all -pc_hypre_boomeramg_max_iter -pc_hypre_boomeramg_strong_threshold -pc_hypre_type -pc_type -snes_atol -snes_linesearch_type -snes_ls -snes_max_it -snes_rtol -snes_divergence_tolerance -snes_type -sub_ksp_type -sub_pc_type + description: | + Names of PETSc name/value pairs + - name: petsc_options_value + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Values of PETSc name/value pairs (must correspond with "petsc_options_iname" + - name: picard_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Picard' + description: | + The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual. + - name: picard_custom_pp + required: No + default: !!str + cpp_type: PostprocessorName + group_name: 'Picard' + description: | + Postprocessor for custom picard convergence check. + - name: picard_force_norms + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Picard' + description: | + Force the evaluation of both the TIMESTEP_BEGIN and TIMESTEP_END norms regardless of the existance of active MultiApps with those execute_on flags, default: false. + - name: picard_max_its + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Picard' + description: | + Specifies the maximum number of Picard iterations. Mainly used when wanting to do Picard iterations with MultiApps that are set to execute_on timestep_end or timestep_begin. Setting this parameter to 1 turns off the Picard iterations. + - name: picard_rel_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: 'Picard' + description: | + The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual. + - name: precond_matrix_free + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use a matrix free fashion for forming the preconditioning matrix. If true, a shell matrix will be used for preconditioner. + - name: precond_matrix_includes_eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to include eigen kernels in the preconditioning matrix. If true, the preconditioning matrix will include eigen kernels. + - name: relaxation_factor + required: No + default: !!str 1 + cpp_type: double + group_name: 'Picard' + description: | + Fraction of newly computed value to keep.Set between 0 and 2. + - name: relaxed_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Picard' + description: | + List of variables to relax during Picard Iteration + - name: resid_vs_jac_scaling_param + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + A parameter that indicates the weighting of the residual vs the Jacobian in determining variable scaling parameters. A value of 1 indicates pure residual-based scaling. A value of 0 indicates pure Jacobian-based scaling + - name: restart_file_base + required: No + default: !!str + cpp_type: FileNameNoExtension + group_name: 'Restart' + description: | + File base name used for restart + - name: scaling_group_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > >, std::allocator, std::allocator >, std::allocator, std::allocator > > > > > + group_name: + description: | + Name of variables that are grouped together to for determing scale factors. (Multiple groups can be provided, separated by semicolon) + - name: skip_exception_check + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether or not to skip exception check + - name: snesmf_reuse_base + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Solver' + description: | + Specifies whether or not to reuse the base vector for matrix-free calculation + - name: solve_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: POWER ARNOLDI KRYLOVSCHUR JACOBI_DAVIDSON NONLINEAR_POWER NEWTON + description: | + POWER: Power / Inverse / RQI ARNOLDI: Arnoldi KRYLOVSCHUR: Krylov-Schur JACOBI_DAVIDSON: Jacobi-Davidson NONLINEAR_POWER: Nonlinear Power NEWTON: Newton + - name: splitting + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Top-level splitting defining a hierarchical decomposition into subsystems to help the solver. + - name: time + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + System time + - name: type + required: No + default: !!str Eigenvalue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: update_xfem_at_timestep_begin + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Should XFEM update the mesh at the beginning of the timestep + - name: verbose + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true to print additional information + - name: which_eigen_pairs + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: LARGEST_MAGNITUDE SMALLEST_MAGNITUDE LARGEST_REAL SMALLEST_REAL LARGEST_IMAGINARY SMALLEST_IMAGINARY TARGET_MAGNITUDE TARGET_REAL TARGET_IMAGINARY ALL_EIGENVALUES SLEPC_DEFAULT + description: | + Which eigenvalue pairs to obtain from the solution LARGEST_MAGNITUDE SMALLEST_MAGNITUDE LARGEST_REAL SMALLEST_REAL LARGEST_IMAGINARY SMALLEST_IMAGINARY TARGET_MAGNITUDE TARGET_REAL TARGET_IMAGINARY ALL_EIGENVALUES SLEPC_DEFAULT + subblocks: + - name: /Executioner//InversePowerMethod + description: | + + parameters: + - name: Chebyshev_acceleration_on + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If Chebyshev acceleration is turned on + - name: accept_on_max_picard_iteration + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Picard' + description: | + True to treat reaching the maximum number of Picard iterations as converged. + - name: auto_initialization + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + True to ask the solver to set initial + - name: automatic_scaling + required: No + default: !!str + cpp_type: bool + group_name: 'Solver' + description: | + Whether to use automatic scaling for the variables. + - name: bx_norm + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + To evaluate |Bx| for the eigenvalue + - name: compute_initial_residual_before_preset_bcs + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Solver' + description: | + Use the residual norm computed *before* preset BCs are imposed in relative convergence check + - name: compute_scaling_once + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Solver' + description: | + Whether the scaling factors should only be computed once at the beginning of the simulation through an extra Jacobian evaluation. If this is set to false, then the scaling factors will be computed during an extra Jacobian evaluation at the beginning of every time step. + - name: contact_line_search_allowed_lambda_cuts + required: No + default: !!str 2 + cpp_type: unsigned int + group_name: + description: | + The number of times lambda is allowed to be cut in half in the contact line search. We recommend this number be roughly bounded by 0 <= allowed_lambda_cuts <= 3 + - name: contact_line_search_ltol + required: No + default: !!str + cpp_type: double + group_name: + description: | + The linear relative tolerance to be used while the contact state is changing between non-linear iterations. We recommend that this tolerance be looser than the standard linear tolerance + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: custom_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: + description: | + The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual. + - name: custom_rel_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: + description: | + The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual. + - name: direct_pp_value + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use direct postprocessor value (scaled by value on first iteration). False (default) to use difference in postprocessor value between picard iterations. + - name: disable_picard_residual_norm_check + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Picard' + description: | + Disable the Picard residual norm evaluation thus the three parameters picard_rel_tol, picard_abs_tol and picard_force_norms. + - name: eig_check_tol + required: No + default: !!str 1e-06 + cpp_type: double + group_name: + description: | + Eigenvalue convergence tolerance + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: k0 + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Initial guess of the eigenvalue + - name: l_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Linear Absolute Tolerance + - name: l_max_its + required: No + default: !!str 10000 + cpp_type: unsigned int + group_name: 'Solver' + description: | + Max Linear Iterations + - name: l_tol + required: No + default: !!str 0.01 + cpp_type: double + group_name: 'Solver' + description: | + Linear Tolerance + - name: line_search + required: No + default: !!str default + cpp_type: MooseEnum + group_name: + options: basic bt contact cp default l2 none project shell + description: | + Specifies the line search type (Note: none = basic) + - name: line_search_package + required: No + default: !!str petsc + cpp_type: MooseEnum + group_name: + options: petsc moose + description: | + The solver package to use to conduct the line-search + - name: max_power_iterations + required: No + default: !!str 300 + cpp_type: unsigned int + group_name: + description: | + The maximum number of power iterations + - name: max_xfem_update + required: No + default: !!str 4294967295 + cpp_type: unsigned int + group_name: + description: | + Maximum number of times to update XFEM crack topology in a step due to evolving cracks + - name: mffd_type + required: No + default: !!str wp + cpp_type: MooseEnum + group_name: + options: wp ds + description: | + Specifies the finite differencing type for Jacobian-free solve types. Note that the default is wp (for Walker and Pernice). + - name: min_power_iterations + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Minimum number of power iterations + - name: nl_abs_step_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Absolute step Tolerance + - name: nl_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Absolute Tolerance + - name: nl_div_tol + required: No + default: !!str -1 + cpp_type: double + group_name: + description: | + Nonlinear Divergence Tolerance + - name: nl_max_funcs + required: No + default: !!str 10000 + cpp_type: unsigned int + group_name: 'Solver' + description: | + Max Nonlinear solver function evaluations + - name: nl_max_its + required: No + default: !!str 50 + cpp_type: unsigned int + group_name: 'Solver' + description: | + Max Nonlinear Iterations + - name: nl_rel_step_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Relative step Tolerance + - name: nl_rel_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Relative Tolerance + - name: normal_factor + required: No + default: !!str + cpp_type: double + group_name: 'Normalization' + description: | + Normalize x to make |x| equal to this factor + - name: normalization + required: No + default: !!str + cpp_type: PostprocessorName + group_name: 'Normalization' + description: | + To evaluate |x| for normalization + - name: num_grids + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Solver' + description: | + The number of grids to use for a grid sequencing algorithm. This includes the final grid, so num_grids = 1 indicates just one solve in a time-step + - name: output_before_normalization + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Normalization' + description: | + True to output a step before normalization + - name: petsc_options + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -dm_moose_print_embedding -dm_view -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_monitor -ksp_monitor_snes_lg-snes_ksp_ew -ksp_snes_ew -snes_converged_reason -snes_ksp -snes_ksp_ew -snes_linesearch_monitor -snes_mf -snes_mf_operator -snes_monitor -snes_test_display -snes_view + description: | + Singleton PETSc options + - name: petsc_options_iname + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -ksp_atol -ksp_gmres_restart -ksp_max_it -ksp_pc_side -ksp_rtol -ksp_type -mat_fd_coloring_err -mat_fd_type -mat_mffd_type -pc_asm_overlap -pc_factor_levels -pc_factor_mat_ordering_type -pc_hypre_boomeramg_grid_sweeps_all -pc_hypre_boomeramg_max_iter -pc_hypre_boomeramg_strong_threshold -pc_hypre_type -pc_type -snes_atol -snes_linesearch_type -snes_ls -snes_max_it -snes_rtol -snes_divergence_tolerance -snes_type -sub_ksp_type -sub_pc_type + description: | + Names of PETSc name/value pairs + - name: petsc_options_value + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Values of PETSc name/value pairs (must correspond with "petsc_options_iname" + - name: picard_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Picard' + description: | + The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual. + - name: picard_custom_pp + required: No + default: !!str + cpp_type: PostprocessorName + group_name: 'Picard' + description: | + Postprocessor for custom picard convergence check. + - name: picard_force_norms + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Picard' + description: | + Force the evaluation of both the TIMESTEP_BEGIN and TIMESTEP_END norms regardless of the existance of active MultiApps with those execute_on flags, default: false. + - name: picard_max_its + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Picard' + description: | + Specifies the maximum number of Picard iterations. Mainly used when wanting to do Picard iterations with MultiApps that are set to execute_on timestep_end or timestep_begin. Setting this parameter to 1 turns off the Picard iterations. + - name: picard_rel_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: 'Picard' + description: | + The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual. + - name: relaxation_factor + required: No + default: !!str 1 + cpp_type: double + group_name: 'Picard' + description: | + Fraction of newly computed value to keep.Set between 0 and 2. + - name: relaxed_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Picard' + description: | + List of variables to relax during Picard Iteration + - name: resid_vs_jac_scaling_param + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + A parameter that indicates the weighting of the residual vs the Jacobian in determining variable scaling parameters. A value of 1 indicates pure residual-based scaling. A value of 0 indicates pure Jacobian-based scaling + - name: restart_file_base + required: No + default: !!str + cpp_type: FileNameNoExtension + group_name: 'Restart' + description: | + File base name used for restart + - name: scaling_group_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > >, std::allocator, std::allocator >, std::allocator, std::allocator > > > > > + group_name: + description: | + Name of variables that are grouped together to for determing scale factors. (Multiple groups can be provided, separated by semicolon) + - name: skip_exception_check + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether or not to skip exception check + - name: snesmf_reuse_base + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Solver' + description: | + Specifies whether or not to reuse the base vector for matrix-free calculation + - name: sol_check_tol + required: No + default: !!str 1.79769e+308 + cpp_type: double + group_name: + description: | + Convergence tolerance on |x-x_previous| when provided + - name: solve_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: PJFNK JFNK NEWTON FD LINEAR + description: | + PJFNK: Preconditioned Jacobian-Free Newton Krylov JFNK: Jacobian-Free Newton Krylov NEWTON: Full Newton Solve FD: Use finite differences to compute Jacobian LINEAR: Solving a linear problem + - name: splitting + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Top-level splitting defining a hierarchical decomposition into subsystems to help the solver. + - name: time + required: No + default: !!str 0 + cpp_type: double + group_name: 'Advanced' + description: | + System time + - name: type + required: No + default: !!str InversePowerMethod + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: update_xfem_at_timestep_begin + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Should XFEM update the mesh at the beginning of the timestep + - name: verbose + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true to print additional information + - name: xdiff + required: No + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + To evaluate |x-x_previous| for power iterations + subblocks: + - name: /Executioner//NonlinearEigen + description: | + + parameters: + - name: accept_on_max_picard_iteration + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Picard' + description: | + True to treat reaching the maximum number of Picard iterations as converged. + - name: auto_initialization + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + True to ask the solver to set initial + - name: automatic_scaling + required: No + default: !!str + cpp_type: bool + group_name: 'Solver' + description: | + Whether to use automatic scaling for the variables. + - name: bx_norm + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + To evaluate |Bx| for the eigenvalue + - name: compute_initial_residual_before_preset_bcs + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Solver' + description: | + Use the residual norm computed *before* preset BCs are imposed in relative convergence check + - name: compute_scaling_once + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Solver' + description: | + Whether the scaling factors should only be computed once at the beginning of the simulation through an extra Jacobian evaluation. If this is set to false, then the scaling factors will be computed during an extra Jacobian evaluation at the beginning of every time step. + - name: contact_line_search_allowed_lambda_cuts + required: No + default: !!str 2 + cpp_type: unsigned int + group_name: + description: | + The number of times lambda is allowed to be cut in half in the contact line search. We recommend this number be roughly bounded by 0 <= allowed_lambda_cuts <= 3 + - name: contact_line_search_ltol + required: No + default: !!str + cpp_type: double + group_name: + description: | + The linear relative tolerance to be used while the contact state is changing between non-linear iterations. We recommend that this tolerance be looser than the standard linear tolerance + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: custom_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: + description: | + The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual. + - name: custom_rel_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: + description: | + The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual. + - name: direct_pp_value + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use direct postprocessor value (scaled by value on first iteration). False (default) to use difference in postprocessor value between picard iterations. + - name: disable_picard_residual_norm_check + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Picard' + description: | + Disable the Picard residual norm evaluation thus the three parameters picard_rel_tol, picard_abs_tol and picard_force_norms. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: free_l_tol + required: No + default: !!str 0.01 + cpp_type: double + group_name: + description: | + Relative linear tolerance in free power iteration + - name: free_power_iterations + required: No + default: !!str 4 + cpp_type: unsigned int + group_name: + description: | + The number of free power iterations + - name: k0 + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Initial guess of the eigenvalue + - name: l_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Linear Absolute Tolerance + - name: l_max_its + required: No + default: !!str 10000 + cpp_type: unsigned int + group_name: 'Solver' + description: | + Max Linear Iterations + - name: l_tol + required: No + default: !!str 0.01 + cpp_type: double + group_name: 'Solver' + description: | + Linear Tolerance + - name: line_search + required: No + default: !!str default + cpp_type: MooseEnum + group_name: + options: basic bt contact cp default l2 none project shell + description: | + Specifies the line search type (Note: none = basic) + - name: line_search_package + required: No + default: !!str petsc + cpp_type: MooseEnum + group_name: + options: petsc moose + description: | + The solver package to use to conduct the line-search + - name: max_xfem_update + required: No + default: !!str 4294967295 + cpp_type: unsigned int + group_name: + description: | + Maximum number of times to update XFEM crack topology in a step due to evolving cracks + - name: mffd_type + required: No + default: !!str wp + cpp_type: MooseEnum + group_name: + options: wp ds + description: | + Specifies the finite differencing type for Jacobian-free solve types. Note that the default is wp (for Walker and Pernice). + - name: nl_abs_step_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Absolute step Tolerance + - name: nl_abs_tol + required: No + default: !!str 1e-06 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Absolute Tolerance + - name: nl_div_tol + required: No + default: !!str -1 + cpp_type: double + group_name: + description: | + Nonlinear Divergence Tolerance + - name: nl_max_funcs + required: No + default: !!str 10000 + cpp_type: unsigned int + group_name: 'Solver' + description: | + Max Nonlinear solver function evaluations + - name: nl_max_its + required: No + default: !!str 50 + cpp_type: unsigned int + group_name: 'Solver' + description: | + Max Nonlinear Iterations + - name: nl_rel_step_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Relative step Tolerance + - name: nl_rel_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Relative Tolerance + - name: normal_factor + required: No + default: !!str + cpp_type: double + group_name: 'Normalization' + description: | + Normalize x to make |x| equal to this factor + - name: normalization + required: No + default: !!str + cpp_type: PostprocessorName + group_name: 'Normalization' + description: | + To evaluate |x| for normalization + - name: num_grids + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Solver' + description: | + The number of grids to use for a grid sequencing algorithm. This includes the final grid, so num_grids = 1 indicates just one solve in a time-step + - name: output_after_power_iterations + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + True to output solution after free power iterations + - name: output_before_normalization + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Normalization' + description: | + True to output a step before normalization + - name: petsc_options + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -dm_moose_print_embedding -dm_view -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_monitor -ksp_monitor_snes_lg-snes_ksp_ew -ksp_snes_ew -snes_converged_reason -snes_ksp -snes_ksp_ew -snes_linesearch_monitor -snes_mf -snes_mf_operator -snes_monitor -snes_test_display -snes_view + description: | + Singleton PETSc options + - name: petsc_options_iname + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -ksp_atol -ksp_gmres_restart -ksp_max_it -ksp_pc_side -ksp_rtol -ksp_type -mat_fd_coloring_err -mat_fd_type -mat_mffd_type -pc_asm_overlap -pc_factor_levels -pc_factor_mat_ordering_type -pc_hypre_boomeramg_grid_sweeps_all -pc_hypre_boomeramg_max_iter -pc_hypre_boomeramg_strong_threshold -pc_hypre_type -pc_type -snes_atol -snes_linesearch_type -snes_ls -snes_max_it -snes_rtol -snes_divergence_tolerance -snes_type -sub_ksp_type -sub_pc_type + description: | + Names of PETSc name/value pairs + - name: petsc_options_value + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Values of PETSc name/value pairs (must correspond with "petsc_options_iname" + - name: picard_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Picard' + description: | + The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual. + - name: picard_custom_pp + required: No + default: !!str + cpp_type: PostprocessorName + group_name: 'Picard' + description: | + Postprocessor for custom picard convergence check. + - name: picard_force_norms + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Picard' + description: | + Force the evaluation of both the TIMESTEP_BEGIN and TIMESTEP_END norms regardless of the existance of active MultiApps with those execute_on flags, default: false. + - name: picard_max_its + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Picard' + description: | + Specifies the maximum number of Picard iterations. Mainly used when wanting to do Picard iterations with MultiApps that are set to execute_on timestep_end or timestep_begin. Setting this parameter to 1 turns off the Picard iterations. + - name: picard_rel_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: 'Picard' + description: | + The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual. + - name: relaxation_factor + required: No + default: !!str 1 + cpp_type: double + group_name: 'Picard' + description: | + Fraction of newly computed value to keep.Set between 0 and 2. + - name: relaxed_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Picard' + description: | + List of variables to relax during Picard Iteration + - name: resid_vs_jac_scaling_param + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + A parameter that indicates the weighting of the residual vs the Jacobian in determining variable scaling parameters. A value of 1 indicates pure residual-based scaling. A value of 0 indicates pure Jacobian-based scaling + - name: restart_file_base + required: No + default: !!str + cpp_type: FileNameNoExtension + group_name: 'Restart' + description: | + File base name used for restart + - name: scaling_group_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > >, std::allocator, std::allocator >, std::allocator, std::allocator > > > > > + group_name: + description: | + Name of variables that are grouped together to for determing scale factors. (Multiple groups can be provided, separated by semicolon) + - name: skip_exception_check + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether or not to skip exception check + - name: snesmf_reuse_base + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Solver' + description: | + Specifies whether or not to reuse the base vector for matrix-free calculation + - name: solve_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: PJFNK JFNK NEWTON FD LINEAR + description: | + PJFNK: Preconditioned Jacobian-Free Newton Krylov JFNK: Jacobian-Free Newton Krylov NEWTON: Full Newton Solve FD: Use finite differences to compute Jacobian LINEAR: Solving a linear problem + - name: splitting + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Top-level splitting defining a hierarchical decomposition into subsystems to help the solver. + - name: time + required: No + default: !!str 0 + cpp_type: double + group_name: 'Advanced' + description: | + System time + - name: type + required: No + default: !!str NonlinearEigen + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: update_xfem_at_timestep_begin + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Should XFEM update the mesh at the beginning of the timestep + - name: verbose + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true to print additional information + subblocks: + - name: /Executioner//Steady + description: | + + parameters: + - name: accept_on_max_picard_iteration + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Picard' + description: | + True to treat reaching the maximum number of Picard iterations as converged. + - name: automatic_scaling + required: No + default: !!str + cpp_type: bool + group_name: 'Solver' + description: | + Whether to use automatic scaling for the variables. + - name: compute_initial_residual_before_preset_bcs + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Solver' + description: | + Use the residual norm computed *before* preset BCs are imposed in relative convergence check + - name: compute_scaling_once + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Solver' + description: | + Whether the scaling factors should only be computed once at the beginning of the simulation through an extra Jacobian evaluation. If this is set to false, then the scaling factors will be computed during an extra Jacobian evaluation at the beginning of every time step. + - name: contact_line_search_allowed_lambda_cuts + required: No + default: !!str 2 + cpp_type: unsigned int + group_name: + description: | + The number of times lambda is allowed to be cut in half in the contact line search. We recommend this number be roughly bounded by 0 <= allowed_lambda_cuts <= 3 + - name: contact_line_search_ltol + required: No + default: !!str + cpp_type: double + group_name: + description: | + The linear relative tolerance to be used while the contact state is changing between non-linear iterations. We recommend that this tolerance be looser than the standard linear tolerance + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: custom_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: + description: | + The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual. + - name: custom_rel_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: + description: | + The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual. + - name: direct_pp_value + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use direct postprocessor value (scaled by value on first iteration). False (default) to use difference in postprocessor value between picard iterations. + - name: disable_picard_residual_norm_check + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Picard' + description: | + Disable the Picard residual norm evaluation thus the three parameters picard_rel_tol, picard_abs_tol and picard_force_norms. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: l_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Linear Absolute Tolerance + - name: l_max_its + required: No + default: !!str 10000 + cpp_type: unsigned int + group_name: 'Solver' + description: | + Max Linear Iterations + - name: l_tol + required: No + default: !!str 1e-05 + cpp_type: double + group_name: 'Solver' + description: | + Linear Tolerance + - name: line_search + required: No + default: !!str default + cpp_type: MooseEnum + group_name: + options: basic bt contact cp default l2 none project shell + description: | + Specifies the line search type (Note: none = basic) + - name: line_search_package + required: No + default: !!str petsc + cpp_type: MooseEnum + group_name: + options: petsc moose + description: | + The solver package to use to conduct the line-search + - name: max_xfem_update + required: No + default: !!str 4294967295 + cpp_type: unsigned int + group_name: + description: | + Maximum number of times to update XFEM crack topology in a step due to evolving cracks + - name: mffd_type + required: No + default: !!str wp + cpp_type: MooseEnum + group_name: + options: wp ds + description: | + Specifies the finite differencing type for Jacobian-free solve types. Note that the default is wp (for Walker and Pernice). + - name: nl_abs_step_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Absolute step Tolerance + - name: nl_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Absolute Tolerance + - name: nl_div_tol + required: No + default: !!str -1 + cpp_type: double + group_name: + description: | + Nonlinear Divergence Tolerance + - name: nl_max_funcs + required: No + default: !!str 10000 + cpp_type: unsigned int + group_name: 'Solver' + description: | + Max Nonlinear solver function evaluations + - name: nl_max_its + required: No + default: !!str 50 + cpp_type: unsigned int + group_name: 'Solver' + description: | + Max Nonlinear Iterations + - name: nl_rel_step_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Relative step Tolerance + - name: nl_rel_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Relative Tolerance + - name: num_grids + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Solver' + description: | + The number of grids to use for a grid sequencing algorithm. This includes the final grid, so num_grids = 1 indicates just one solve in a time-step + - name: petsc_options + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -dm_moose_print_embedding -dm_view -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_monitor -ksp_monitor_snes_lg-snes_ksp_ew -ksp_snes_ew -snes_converged_reason -snes_ksp -snes_ksp_ew -snes_linesearch_monitor -snes_mf -snes_mf_operator -snes_monitor -snes_test_display -snes_view + description: | + Singleton PETSc options + - name: petsc_options_iname + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -ksp_atol -ksp_gmres_restart -ksp_max_it -ksp_pc_side -ksp_rtol -ksp_type -mat_fd_coloring_err -mat_fd_type -mat_mffd_type -pc_asm_overlap -pc_factor_levels -pc_factor_mat_ordering_type -pc_hypre_boomeramg_grid_sweeps_all -pc_hypre_boomeramg_max_iter -pc_hypre_boomeramg_strong_threshold -pc_hypre_type -pc_type -snes_atol -snes_linesearch_type -snes_ls -snes_max_it -snes_rtol -snes_divergence_tolerance -snes_type -sub_ksp_type -sub_pc_type + description: | + Names of PETSc name/value pairs + - name: petsc_options_value + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Values of PETSc name/value pairs (must correspond with "petsc_options_iname" + - name: picard_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Picard' + description: | + The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual. + - name: picard_custom_pp + required: No + default: !!str + cpp_type: PostprocessorName + group_name: 'Picard' + description: | + Postprocessor for custom picard convergence check. + - name: picard_force_norms + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Picard' + description: | + Force the evaluation of both the TIMESTEP_BEGIN and TIMESTEP_END norms regardless of the existance of active MultiApps with those execute_on flags, default: false. + - name: picard_max_its + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Picard' + description: | + Specifies the maximum number of Picard iterations. Mainly used when wanting to do Picard iterations with MultiApps that are set to execute_on timestep_end or timestep_begin. Setting this parameter to 1 turns off the Picard iterations. + - name: picard_rel_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: 'Picard' + description: | + The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual. + - name: relaxation_factor + required: No + default: !!str 1 + cpp_type: double + group_name: 'Picard' + description: | + Fraction of newly computed value to keep.Set between 0 and 2. + - name: relaxed_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Picard' + description: | + List of variables to relax during Picard Iteration + - name: resid_vs_jac_scaling_param + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + A parameter that indicates the weighting of the residual vs the Jacobian in determining variable scaling parameters. A value of 1 indicates pure residual-based scaling. A value of 0 indicates pure Jacobian-based scaling + - name: restart_file_base + required: No + default: !!str + cpp_type: FileNameNoExtension + group_name: 'Restart' + description: | + File base name used for restart + - name: scaling_group_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > >, std::allocator, std::allocator >, std::allocator, std::allocator > > > > > + group_name: + description: | + Name of variables that are grouped together to for determing scale factors. (Multiple groups can be provided, separated by semicolon) + - name: skip_exception_check + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether or not to skip exception check + - name: snesmf_reuse_base + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Solver' + description: | + Specifies whether or not to reuse the base vector for matrix-free calculation + - name: solve_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: PJFNK JFNK NEWTON FD LINEAR + description: | + PJFNK: Preconditioned Jacobian-Free Newton Krylov JFNK: Jacobian-Free Newton Krylov NEWTON: Full Newton Solve FD: Use finite differences to compute Jacobian LINEAR: Solving a linear problem + - name: splitting + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Top-level splitting defining a hierarchical decomposition into subsystems to help the solver. + - name: time + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + System time + - name: type + required: No + default: !!str Steady + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: update_xfem_at_timestep_begin + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Should XFEM update the mesh at the beginning of the timestep + - name: verbose + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true to print additional information + subblocks: + - name: /Executioner//Transient + description: | + + parameters: + - name: abort_on_solve_fail + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + abort if solve not converged rather than cut timestep + - name: accept_on_max_picard_iteration + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Picard' + description: | + True to treat reaching the maximum number of Picard iterations as converged. + - name: automatic_scaling + required: No + default: !!str + cpp_type: bool + group_name: 'Solver' + description: | + Whether to use automatic scaling for the variables. + - name: compute_initial_residual_before_preset_bcs + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Solver' + description: | + Use the residual norm computed *before* preset BCs are imposed in relative convergence check + - name: compute_scaling_once + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Solver' + description: | + Whether the scaling factors should only be computed once at the beginning of the simulation through an extra Jacobian evaluation. If this is set to false, then the scaling factors will be computed during an extra Jacobian evaluation at the beginning of every time step. + - name: contact_line_search_allowed_lambda_cuts + required: No + default: !!str 2 + cpp_type: unsigned int + group_name: + description: | + The number of times lambda is allowed to be cut in half in the contact line search. We recommend this number be roughly bounded by 0 <= allowed_lambda_cuts <= 3 + - name: contact_line_search_ltol + required: No + default: !!str + cpp_type: double + group_name: + description: | + The linear relative tolerance to be used while the contact state is changing between non-linear iterations. We recommend that this tolerance be looser than the standard linear tolerance + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: custom_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: + description: | + The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual. + - name: custom_rel_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: + description: | + The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual. + - name: direct_pp_value + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use direct postprocessor value (scaled by value on first iteration). False (default) to use difference in postprocessor value between picard iterations. + - name: disable_picard_residual_norm_check + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Picard' + description: | + Disable the Picard residual norm evaluation thus the three parameters picard_rel_tol, picard_abs_tol and picard_force_norms. + - name: dt + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The timestep size between solves + - name: dtmax + required: No + default: !!str 1e+30 + cpp_type: double + group_name: 'Advanced' + description: | + The maximum timestep size in an adaptive run + - name: dtmin + required: No + default: !!str 2e-14 + cpp_type: double + group_name: 'Advanced' + description: | + The minimum timestep size in an adaptive run + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_time + required: No + default: !!str 1e+30 + cpp_type: double + group_name: + description: | + The end time of the simulation + - name: l_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Linear Absolute Tolerance + - name: l_max_its + required: No + default: !!str 10000 + cpp_type: unsigned int + group_name: 'Solver' + description: | + Max Linear Iterations + - name: l_tol + required: No + default: !!str 1e-05 + cpp_type: double + group_name: 'Solver' + description: | + Linear Tolerance + - name: line_search + required: No + default: !!str default + cpp_type: MooseEnum + group_name: + options: basic bt contact cp default l2 none project shell + description: | + Specifies the line search type (Note: none = basic) + - name: line_search_package + required: No + default: !!str petsc + cpp_type: MooseEnum + group_name: + options: petsc moose + description: | + The solver package to use to conduct the line-search + - name: max_xfem_update + required: No + default: !!str 4294967295 + cpp_type: unsigned int + group_name: + description: | + Maximum number of times to update XFEM crack topology in a step due to evolving cracks + - name: mffd_type + required: No + default: !!str wp + cpp_type: MooseEnum + group_name: + options: wp ds + description: | + Specifies the finite differencing type for Jacobian-free solve types. Note that the default is wp (for Walker and Pernice). + - name: n_startup_steps + required: No + default: !!str 0 + cpp_type: int + group_name: 'Advanced' + description: | + The number of timesteps during startup + - name: nl_abs_step_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Absolute step Tolerance + - name: nl_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Absolute Tolerance + - name: nl_div_tol + required: No + default: !!str -1 + cpp_type: double + group_name: + description: | + Nonlinear Divergence Tolerance + - name: nl_max_funcs + required: No + default: !!str 10000 + cpp_type: unsigned int + group_name: 'Solver' + description: | + Max Nonlinear solver function evaluations + - name: nl_max_its + required: No + default: !!str 50 + cpp_type: unsigned int + group_name: 'Solver' + description: | + Max Nonlinear Iterations + - name: nl_rel_step_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Relative step Tolerance + - name: nl_rel_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: 'Solver' + description: | + Nonlinear Relative Tolerance + - name: num_grids + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Solver' + description: | + The number of grids to use for a grid sequencing algorithm. This includes the final grid, so num_grids = 1 indicates just one solve in a time-step + - name: num_steps + required: No + default: !!str 4294967295 + cpp_type: unsigned int + group_name: + description: | + The number of timesteps in a transient run + - name: petsc_options + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -dm_moose_print_embedding -dm_view -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_monitor -ksp_monitor_snes_lg-snes_ksp_ew -ksp_snes_ew -snes_converged_reason -snes_ksp -snes_ksp_ew -snes_linesearch_monitor -snes_mf -snes_mf_operator -snes_monitor -snes_test_display -snes_view + description: | + Singleton PETSc options + - name: petsc_options_iname + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -ksp_atol -ksp_gmres_restart -ksp_max_it -ksp_pc_side -ksp_rtol -ksp_type -mat_fd_coloring_err -mat_fd_type -mat_mffd_type -pc_asm_overlap -pc_factor_levels -pc_factor_mat_ordering_type -pc_hypre_boomeramg_grid_sweeps_all -pc_hypre_boomeramg_max_iter -pc_hypre_boomeramg_strong_threshold -pc_hypre_type -pc_type -snes_atol -snes_linesearch_type -snes_ls -snes_max_it -snes_rtol -snes_divergence_tolerance -snes_type -sub_ksp_type -sub_pc_type + description: | + Names of PETSc name/value pairs + - name: petsc_options_value + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Values of PETSc name/value pairs (must correspond with "petsc_options_iname" + - name: picard_abs_tol + required: No + default: !!str 1e-50 + cpp_type: double + group_name: 'Picard' + description: | + The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual. + - name: picard_custom_pp + required: No + default: !!str + cpp_type: PostprocessorName + group_name: 'Picard' + description: | + Postprocessor for custom picard convergence check. + - name: picard_force_norms + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Picard' + description: | + Force the evaluation of both the TIMESTEP_BEGIN and TIMESTEP_END norms regardless of the existance of active MultiApps with those execute_on flags, default: false. + - name: picard_max_its + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Picard' + description: | + Specifies the maximum number of Picard iterations. Mainly used when wanting to do Picard iterations with MultiApps that are set to execute_on timestep_end or timestep_begin. Setting this parameter to 1 turns off the Picard iterations. + - name: picard_rel_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: 'Picard' + description: | + The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual. + - name: relaxation_factor + required: No + default: !!str 1 + cpp_type: double + group_name: 'Picard' + description: | + Fraction of newly computed value to keep.Set between 0 and 2. + - name: relaxed_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Picard' + description: | + List of variables to relax during Picard Iteration + - name: reset_dt + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Use when restarting a calculation to force a change in dt. + - name: resid_vs_jac_scaling_param + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + A parameter that indicates the weighting of the residual vs the Jacobian in determining variable scaling parameters. A value of 1 indicates pure residual-based scaling. A value of 0 indicates pure Jacobian-based scaling + - name: restart_file_base + required: No + default: !!str + cpp_type: FileNameNoExtension + group_name: 'Restart' + description: | + File base name used for restart + - name: scaling_group_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > >, std::allocator, std::allocator >, std::allocator, std::allocator > > > > > + group_name: + description: | + Name of variables that are grouped together to for determing scale factors. (Multiple groups can be provided, separated by semicolon) + - name: scheme + required: No + default: !!str implicit-euler + cpp_type: MooseEnum + group_name: + options: implicit-euler explicit-euler crank-nicolson bdf2 explicit-midpoint dirk explicit-tvd-rk-2 newmark-beta + description: | + Time integration scheme used. + - name: skip_exception_check + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether or not to skip exception check + - name: snesmf_reuse_base + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Solver' + description: | + Specifies whether or not to reuse the base vector for matrix-free calculation + - name: solve_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: PJFNK JFNK NEWTON FD LINEAR + description: | + PJFNK: Preconditioned Jacobian-Free Newton Krylov JFNK: Jacobian-Free Newton Krylov NEWTON: Full Newton Solve FD: Use finite differences to compute Jacobian LINEAR: Solving a linear problem + - name: splitting + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Top-level splitting defining a hierarchical decomposition into subsystems to help the solver. + - name: ss_check_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: 'Advanced' + description: | + Whenever the relative residual changes by less than this the solution will be considered to be at steady state. + - name: ss_tmin + required: No + default: !!str 0 + cpp_type: double + group_name: 'Advanced' + description: | + Minimum amount of time to run before checking for steady state conditions. + - name: start_time + required: No + default: !!str 0 + cpp_type: double + group_name: 'Advanced' + description: | + The start time of the simulation + - name: steady_state_detection + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Steady State Detection' + description: | + Whether or not to check for steady state conditions + - name: steady_state_start_time + required: No + default: !!str 0 + cpp_type: double + group_name: 'Steady State Detection' + description: | + Minimum amount of time to run before checking for steady state conditions. + - name: steady_state_tolerance + required: No + default: !!str 1e-08 + cpp_type: double + group_name: 'Steady State Detection' + description: | + Whenever the relative residual changes by less than this the solution will be considered to be at steady state. + - name: time_period_ends + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Time Periods' + description: | + The end times of time periods + - name: time_period_starts + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Time Periods' + description: | + The start times of time periods + - name: time_periods + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Time Periods' + description: | + The names of periods + - name: timestep_tolerance + required: No + default: !!str 2e-14 + cpp_type: double + group_name: 'Advanced' + description: | + the tolerance setting for final timestep size and sync times + - name: trans_ss_check + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to check for steady state conditions + - name: type + required: No + default: !!str Transient + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: update_xfem_at_timestep_begin + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Should XFEM update the mesh at the beginning of the timestep + - name: use_multiapp_dt + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + If true then the dt for the simulation will be chosen by the MultiApps. If false (the default) then the minimum over the master dt and the MultiApps is used + - name: verbose + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true to print additional information + subblocks: + - name: /Executioner/Adaptivity + description: | + + parameters: + - name: coarsen_fraction + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The fraction of elements or error to coarsen. Should be between 0 and 1. + - name: cycles_per_step + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + The number of adaptivity cycles per step + - name: error_estimator + required: No + default: !!str KellyErrorEstimator + cpp_type: MooseEnum + group_name: + options: KellyErrorEstimator LaplacianErrorEstimator PatchRecoveryErrorEstimator + description: | + The class name of the error estimator you want to use. + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: initial_adaptivity + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The number of adaptivity steps to perform using the initial conditions + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + The number of time steps betweeen each adaptivity phase + - name: max_h_level + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Maximum number of times a single element can be refined. If 0 then infinite. + - name: print_changed_info + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Determines whether information about the mesh is printed when adaptivity occurs + - name: recompute_markers_during_cycles + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Recompute markers during adaptivity cycles + - name: refine_fraction + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The fraction of elements or error to refine. Should be between 0 and 1. + - name: show_initial_progress + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Show the progress of the initial adaptivity + - name: start_time + required: No + default: !!str -1.79769e+308 + cpp_type: double + group_name: + description: | + The time that adaptivity will be active after. + - name: steps + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The number of adaptivity steps to perform at any one time for steady state + - name: stop_time + required: No + default: !!str 1.79769e+308 + cpp_type: double + group_name: + description: | + The time after which adaptivity will no longer be active. + - name: weight_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + List of names of variables that will be associated with weight_values + - name: weight_values + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + List of values between 0 and 1 to weight the associated weight_names error by + subblocks: + - name: /Executioner/Predictor + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Executioner/Predictor/ + description: | + + parameters: + subblocks: + - name: /Executioner/Predictor//AdamsPredictor + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: order + required: No + default: !!str 2 + cpp_type: int + group_name: + description: | + The maximum reachable order of the Adams-Bashforth Predictor + - name: scale + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The scale factor for the predictor (can range from 0 to 1) + - name: skip_times + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Skip the predictor if the current solution time is in this list of times + - name: skip_times_old + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Skip the predictor if the previous solution time is in this list of times + - name: type + required: No + default: !!str AdamsPredictor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/Predictor//SimplePredictor + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: scale + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The scale factor for the predictor (can range from 0 to 1) + - name: skip_times + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Skip the predictor if the current solution time is in this list of times + - name: skip_times_old + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Skip the predictor if the previous solution time is in this list of times + - name: type + required: No + default: !!str SimplePredictor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/Quadrature + description: | + + parameters: + - name: element_order + required: No + default: !!str AUTO + cpp_type: MooseEnum + group_name: + options: AUTO CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINTEENTH TWENTIETH + description: | + Order of the quadrature for elements + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: order + required: No + default: !!str AUTO + cpp_type: MooseEnum + group_name: + options: AUTO CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINTEENTH TWENTIETH + description: | + Order of the quadrature + - name: side_order + required: No + default: !!str AUTO + cpp_type: MooseEnum + group_name: + options: AUTO CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINTEENTH TWENTIETH + description: | + Order of the quadrature for sides + - name: type + required: No + default: !!str GAUSS + cpp_type: MooseEnum + group_name: + options: CLOUGH CONICAL GAUSS GRID MONOMIAL SIMPSON TRAP GAUSS_LOBATTO + description: | + Type of the quadrature rule + subblocks: + - name: /Executioner/TimeIntegrator + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Executioner/TimeIntegrator/ + description: | + + parameters: + subblocks: + - name: /Executioner/TimeIntegrator//AStableDirk4 + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: safe_start + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If true, use LStableDirk4 to bootstrap this method. + - name: type + required: No + default: !!str AStableDirk4 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeIntegrator//ActuallyExplicitEuler + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: solve_type + required: No + default: !!str consistent + cpp_type: MooseEnum + group_name: + options: consistent lumped lump_preconditioned + description: | + The way to solve the system. A 'consistent' solve uses the full mass matrix and actually needs to use a linear solver to solve the problem. 'lumped' uses a lumped mass matrix with a simple inversion - incredibly fast but may be less accurate. 'lump_preconditioned' uses the lumped mass matrix as a preconditioner for the 'consistent' solve + - name: type + required: No + default: !!str ActuallyExplicitEuler + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeIntegrator//BDF2 + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str BDF2 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeIntegrator//CentralDifference + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: solve_type + required: No + default: !!str consistent + cpp_type: MooseEnum + group_name: + options: consistent lumped lump_preconditioned + description: | + The way to solve the system. A 'consistent' solve uses the full mass matrix and actually needs to use a linear solver to solve the problem. 'lumped' uses a lumped mass matrix with a simple inversion - incredibly fast but may be less accurate. 'lump_preconditioned' uses the lumped mass matrix as a preconditioner for the 'consistent' solve + - name: type + required: No + default: !!str CentralDifference + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeIntegrator//CrankNicolson + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str CrankNicolson + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeIntegrator//ExplicitEuler + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str ExplicitEuler + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeIntegrator//ExplicitMidpoint + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str ExplicitMidpoint + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeIntegrator//ExplicitSSPRungeKutta + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: order + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: 1 2 3 + description: | + Order of time integration + - name: solve_type + required: No + default: !!str consistent + cpp_type: MooseEnum + group_name: + options: consistent lumped lump_preconditioned + description: | + The way to solve the system. A 'consistent' solve uses the full mass matrix and actually needs to use a linear solver to solve the problem. 'lumped' uses a lumped mass matrix with a simple inversion - incredibly fast but may be less accurate. 'lump_preconditioned' uses the lumped mass matrix as a preconditioner for the 'consistent' solve + - name: type + required: No + default: !!str ExplicitSSPRungeKutta + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeIntegrator//ExplicitTVDRK2 + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str ExplicitTVDRK2 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeIntegrator//Heun + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str Heun + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeIntegrator//ImplicitEuler + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str ImplicitEuler + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeIntegrator//ImplicitMidpoint + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str ImplicitMidpoint + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeIntegrator//LStableDirk2 + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str LStableDirk2 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeIntegrator//LStableDirk3 + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str LStableDirk3 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeIntegrator//LStableDirk4 + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str LStableDirk4 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeIntegrator//NewmarkBeta + description: | + + parameters: + - name: beta + required: No + default: !!str 0.25 + cpp_type: double + group_name: + description: | + beta value + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: gamma + required: No + default: !!str 0.5 + cpp_type: double + group_name: + description: | + gamma value + - name: type + required: No + default: !!str NewmarkBeta + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeIntegrator//Ralston + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str Ralston + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeStepper + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Executioner/TimeStepper/ + description: | + + parameters: + subblocks: + - name: /Executioner/TimeStepper//AB2PredictorCorrector + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cutback_factor_at_failure + required: No + default: !!str 0.5 + cpp_type: double + group_name: + description: | + Factor to apply to timestep if it a time step fails to convergence. + - name: dt + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Initial time step size + - name: e_max + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Maximum acceptable error. + - name: e_tol + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Target error tolerance. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: max_increase + required: No + default: !!str 1e+09 + cpp_type: double + group_name: + description: | + Maximum ratio that the time step can increase. + - name: reset_dt + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Use when restarting a calculation to force a change in dt. + - name: scaling_parameter + required: No + default: !!str 0.8 + cpp_type: double + group_name: + description: | + scaling parameter for dt selection + - name: start_adapting + required: No + default: !!str 2 + cpp_type: int + group_name: + description: | + when to start taking adaptive time steps + - name: steps_between_increase + required: No + default: !!str 1 + cpp_type: int + group_name: + description: | + the number of time steps before recalculating dt + - name: type + required: No + default: !!str AB2PredictorCorrector + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeStepper//CSVTimeSequenceStepper + description: | + + parameters: + - name: column_index + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + index of the column which contains the time sequence + - name: column_name + required: No + default: !!str time + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + name of the column which contains the time sequence + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cutback_factor_at_failure + required: No + default: !!str 0.5 + cpp_type: double + group_name: + description: | + Factor to apply to timestep if it a time step fails to convergence. + - name: delimiter + required: No + default: !!str "," + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + delimiter used to parse the file + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: file_name + required: Yes + default: !!str + cpp_type: FileName + group_name: + description: | + name of the file in which the time sequence is read + - name: header + required: No + default: !!str + cpp_type: bool + group_name: + description: | + indicates whether the file contains a header with the column names + - name: reset_dt + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Use when restarting a calculation to force a change in dt. + - name: type + required: No + default: !!str CSVTimeSequenceStepper + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeStepper//ConstantDT + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cutback_factor_at_failure + required: No + default: !!str 0.5 + cpp_type: double + group_name: + description: | + Factor to apply to timestep if it a time step fails to convergence. + - name: dt + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Size of the time step + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: growth_factor + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + Maximum ratio of new to previous timestep sizes following a step that required the time step to be cut due to a failed solve. + - name: reset_dt + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Use when restarting a calculation to force a change in dt. + - name: type + required: No + default: !!str ConstantDT + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeStepper//DT2 + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cutback_factor_at_failure + required: No + default: !!str 0.5 + cpp_type: double + group_name: + description: | + Factor to apply to timestep if it a time step fails to convergence. + - name: dt + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The initial time step size. + - name: e_max + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Maximum acceptable error. + - name: e_tol + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Target error tolerance. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: max_increase + required: No + default: !!str 1e+09 + cpp_type: double + group_name: + description: | + Maximum ratio that the time step can increase. + - name: reset_dt + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Use when restarting a calculation to force a change in dt. + - name: type + required: No + default: !!str DT2 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeStepper//ExodusTimeSequenceStepper + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cutback_factor_at_failure + required: No + default: !!str 0.5 + cpp_type: double + group_name: + description: | + Factor to apply to timestep if it a time step fails to convergence. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: mesh + required: Yes + default: !!str + cpp_type: MeshFileName + group_name: + description: | + The name of the mesh file to extract the time sequence from (must be an exodusII file). + - name: reset_dt + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Use when restarting a calculation to force a change in dt. + - name: type + required: No + default: !!str ExodusTimeSequenceStepper + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeStepper//FunctionDT + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cutback_factor_at_failure + required: No + default: !!str 0.5 + cpp_type: double + group_name: + description: | + Factor to apply to timestep if it a time step fails to convergence. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: function + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + The name of the time-dependent function that prescribes the time step size. + - name: growth_factor + required: No + default: !!str 1.79769e+308 + cpp_type: double + group_name: + description: | + Maximum ratio of new to previous timestep sizes following a step that required the time step to be cut due to a failed solve. + - name: interpolate + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to interpolate DT between times. This is true by default for historical reasons. + - name: min_dt + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The minimal dt to take. + - name: reset_dt + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Use when restarting a calculation to force a change in dt. + - name: time_dt + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The values of dt + - name: time_t + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The values of t + - name: type + required: No + default: !!str FunctionDT + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeStepper//IterationAdaptiveDT + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cutback_factor + required: No + default: !!str 0.5 + cpp_type: double + group_name: + description: | + Factor to apply to timestep if difficult convergence (if 'optimal_iterations' is specified) or if solution failed + - name: cutback_factor_at_failure + required: No + default: !!str 0.5 + cpp_type: double + group_name: + description: | + Factor to apply to timestep if it a time step fails to convergence. + - name: dt + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The default timestep size between solves + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_step_every_function_point + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Forces the timestepper to take a step that is consistent with points defined in the function + - name: growth_factor + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + Factor to apply to timestep if easy convergence (if 'optimal_iterations' is specified) or if recovering from failed solve + - name: iteration_window + required: No + default: !!str + cpp_type: int + group_name: + description: | + Attempt to grow/shrink timestep if the iteration count is below/above 'optimal_iterations plus/minus iteration_window' (default = optimal_iterations/5). + - name: linear_iteration_ratio + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The ratio of linear to nonlinear iterations to determine target linear iterations and window for adaptive timestepping (default = 25) + - name: max_function_change + required: No + default: !!str + cpp_type: double + group_name: + description: | + The absolute value of the maximum change in timestep_limiting_function over a timestep + - name: optimal_iterations + required: No + default: !!str + cpp_type: int + group_name: + description: | + The target number of nonlinear iterations for adaptive timestepping + - name: reject_large_step + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If 'true', time steps that are too large compared to the ideal time step will be rejected and repeated + - name: reject_large_step_threshold + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + Ratio between the the ideal time step size and the current time step size below which a time step will be rejected if 'reject_large_step' is 'true' + - name: reset_dt + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Use when restarting a calculation to force a change in dt. + - name: time_dt + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The values of dt + - name: time_t + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The values of t + - name: timestep_limiting_function + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + A 'PiecewiseBase' type function used to control the timestep by limiting the change in the function over a timestep + - name: timestep_limiting_postprocessor + required: No + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + If specified, the postprocessor value is used as an upper limit for the current time step length + - name: type + required: No + default: !!str IterationAdaptiveDT + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeStepper//LogConstantDT + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cutback_factor_at_failure + required: No + default: !!str 0.5 + cpp_type: double + group_name: + description: | + Factor to apply to timestep if it a time step fails to convergence. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: first_dt + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Initial time step (in absolute time) + - name: growth_factor + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + Maximum ratio of new to previous timestep sizes following a step that required the time step to be cut due to a failed solve. + - name: log_dt + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Time step in log10(time) + - name: reset_dt + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Use when restarting a calculation to force a change in dt. + - name: type + required: No + default: !!str LogConstantDT + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeStepper//PostprocessorDT + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cutback_factor_at_failure + required: No + default: !!str 0.5 + cpp_type: double + group_name: + description: | + Factor to apply to timestep if it a time step fails to convergence. + - name: dt + required: No + default: !!str + cpp_type: double + group_name: + description: | + Initial value of dt + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: factor + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Add a factor to the supplied postprocessor value. + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the postprocessor that computes the dt + - name: reset_dt + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Use when restarting a calculation to force a change in dt. + - name: scale + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Multiple scale and supplied postprocessor value. + - name: type + required: No + default: !!str PostprocessorDT + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeStepper//SolutionTimeAdaptiveDT + description: | + + parameters: + - name: adapt_log + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Output adaptive time step log + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cutback_factor_at_failure + required: No + default: !!str 0.5 + cpp_type: double + group_name: + description: | + Factor to apply to timestep if it a time step fails to convergence. + - name: dt + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The timestep size between solves + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: initial_direction + required: No + default: !!str 1 + cpp_type: int + group_name: + description: | + Direction for the first step. 1 for up... -1 for down. + - name: percent_change + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + Percentage to change the timestep by. Should be between 0 and 1 + - name: reset_dt + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Use when restarting a calculation to force a change in dt. + - name: type + required: No + default: !!str SolutionTimeAdaptiveDT + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Executioner/TimeStepper//TimeSequenceStepper + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cutback_factor_at_failure + required: No + default: !!str 0.5 + cpp_type: double + group_name: + description: | + Factor to apply to timestep if it a time step fails to convergence. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: reset_dt + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Use when restarting a calculation to force a change in dt. + - name: time_sequence + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The values of t + - name: type + required: No + default: !!str TimeSequenceStepper + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: +- name: /FVBCs + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + subblocks: + - name: /FVBCs/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /FVBCs/FVConstantScalarOutflowBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: type + required: No + default: !!str FVConstantScalarOutflowBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + - name: velocity + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + Constant advection velocity + subblocks: + - name: /FVBCs/FVDirichletBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: type + required: No + default: !!str FVDirichletBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + value to enforce at the boundary face + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /FVBCs/FVMatAdvectionOutflowBC + description: | + + parameters: + - name: advected_quantity + required: No + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + An optional parameter for specifying an advected quantity from a material property. If this is not specified, then the advected quantity will simply be the variable that this object is acting on + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: type + required: No + default: !!str FVMatAdvectionOutflowBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + - name: vel + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + advection velocity + subblocks: + - name: /FVBCs/FVNeumannBC + description: | + + parameters: + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: type + required: No + default: !!str FVNeumannBC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The value of the flux crossing the boundary. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: +- name: /FVKernels + description: | + + parameters: + subblocks: + - name: /FVKernels/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /FVKernels/FVAdvection + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: type + required: No + default: !!str FVAdvection + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the finite volume variable this kernel applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + - name: velocity + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + Constant advection velocity + subblocks: + - name: /FVKernels/FVBodyForce + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: No + default: !!str 1 + cpp_type: FunctionName + group_name: + description: | + A function that describes the body force + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: postprocessor + required: No + default: !!str 1 + cpp_type: PostprocessorName + group_name: + description: | + A postprocessor whose value is multiplied by the body force + - name: type + required: No + default: !!str FVBodyForce + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Coefficient to multiply by the body force term + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the finite volume variable this kernel applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /FVKernels/FVCoupledForce + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: coef + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Coefficent multiplier for the coupled force term. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: type + required: No + default: !!str FVCoupledForce + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The coupled variable which provides the force + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the finite volume variable this kernel applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /FVKernels/FVDiffusion + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: coeff + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + diffusion coefficient + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: type + required: No + default: !!str FVDiffusion + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the finite volume variable this kernel applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /FVKernels/FVMatAdvection + description: | + + parameters: + - name: advected_quantity + required: No + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + An optional parameter for specifying an advected quantity from a material property. If this is not specified, then the advected quantity will simply be the variable that this object is acting on + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: type + required: No + default: !!str FVMatAdvection + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the finite volume variable this kernel applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + - name: vel + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + advection velocity + subblocks: + - name: /FVKernels/FVReaction + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: type + required: No + default: !!str FVReaction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the finite volume variable this kernel applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /FVKernels/FVTimeKernel + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: type + required: No + default: !!str FVTimeKernel + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the finite volume variable this kernel applies to + - name: vector_tags + required: No + default: !!str time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: +- name: /Functions + description: | + + parameters: + subblocks: + - name: /Functions/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Functions/2DXY3DSolutionFunction + description: | + + parameters: + - name: 2d_axis_point1 + required: No + default: !!str 0 0 0 + cpp_type: libMesh::VectorValue + group_name: + description: | + Start point for axis of symmetry for the 2d model + - name: 2d_axis_point2 + required: No + default: !!str 0 1 0 + cpp_type: libMesh::VectorValue + group_name: + description: | + End point for axis of symmetry for the 2d model + - name: 3d_axis_point1 + required: No + default: !!str 0 0 0 + cpp_type: libMesh::VectorValue + group_name: + description: | + Start point for axis of symmetry for the 3d model + - name: 3d_axis_point2 + required: No + default: !!str 0 1 0 + cpp_type: libMesh::VectorValue + group_name: + description: | + End point for axis of symmetry for the 3d model + - name: add_factor + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Add this value (b) to the solution (x): ax+b, where a is the 'scale_factor' + - name: axial_dimension_ratio + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Ratio of the axial dimension in the 3d model to that in the 2d model. Optinally permits the 3d model to be larger than the 2d model in that dimension, and scales vector solutions in that direction by this factor. + - name: component + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + Component of the variable to be computed if it is a vector + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: from_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the variables in the file that are to be extracted, in x, y order if they are vector components + - name: scale_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Scale factor (a) to be applied to the solution (x): ax+b, where b is the 'add_factor' + - name: solution + required: Yes + default: !!str + cpp_type: UserObjectName + group_name: + description: | + The SolutionUserObject to extract data from. + - name: type + required: No + default: !!str 2DXY3DSolutionFunction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Functions/BicubicSplineFunction + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: normal_component + required: No + default: !!str z + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The component of the geometry that is normal to the spline x1/x2 values + - name: type + required: No + default: !!str BicubicSplineFunction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: x1 + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The first independent coordinate. + - name: x2 + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The second independent coordinate. + - name: y + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The dependent values + - name: yx1 + required: No + default: !!str 1e30 + cpp_type: FunctionName + group_name: + description: | + The functional form of the derivative with respect to x1. + - name: yx11 + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The values of the derivative wrt x1 on the lower interpolation grid points. + - name: yx1n + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The values of the derivative wrt x1 on the upper interpolation grid points. + - name: yx2 + required: No + default: !!str 1e30 + cpp_type: FunctionName + group_name: + description: | + The functional form of the derivative with respect to x2. + - name: yx21 + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The values of the derivative wrt x2 on the lower interpolation grid points. + - name: yx2n + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The values of the derivative wrt x2 on the upper interpolation grid points. + subblocks: + - name: /Functions/CoarsenedPiecewiseLinear + description: | + + parameters: + - name: axis + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The axis used (x, y, or z) if this is to be a function of position + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: data_file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + File holding CSV data for use with Piecewise + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: epsilon + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Significant distance in the function below which points are considered removable noise + - name: format + required: No + default: !!str rows + cpp_type: MooseEnum + group_name: + options: columns rows + description: | + Format of csv data file that is in either in columns or rows + - name: scale_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Scale factor to be applied to the ordinate values + - name: type + required: No + default: !!str CoarsenedPiecewiseLinear + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: x + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The abscissa values + - name: x_index_in_file + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The abscissa index in the data file + - name: x_scale + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Scaling factor to apply to the function nodes for the purpose of computing distances in the Douglas-Peucker point reduction algorithm. This permits shifting the weight between x and y-direction distances. + - name: xy_data + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + All function data, supplied in abscissa, ordinate pairs + - name: xy_in_file_only + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If the data file only contains abscissa and ordinate data + - name: y + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The ordinate values + - name: y_index_in_file + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + The ordinate index in the data file + - name: y_scale + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Scaling factor to apply to the function nodes for the purpose of computing distances in the Douglas-Peucker point reduction algorithm. This permits shifting the weight between x and y-direction distances. + subblocks: + - name: /Functions/CompositeFunction + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: functions + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The functions to be multiplied together. + - name: scale_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Scale factor to be applied to the ordinate values + - name: type + required: No + default: !!str CompositeFunction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Functions/ConstantFunction + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str ConstantFunction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The constant value + subblocks: + - name: /Functions/ImageFunction + description: | + + parameters: + - name: component + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The image RGB-component to return, leaving this blank will result in a greyscale value for the image to be created. The component number is zero based, i.e. 0 returns the first (RED) component of the image. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dimensions + required: No + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + x,y,z dimensions of the image (defaults to mesh dimensions) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + Name of single image file to extract mesh parameters from. If provided, a 2D mesh is created. + - name: file_base + required: No + default: !!str + cpp_type: FileNameNoExtension + group_name: + description: | + Image file base to open, use this option when a stack of images must be read (ignored if 'file' is given) + - name: file_range + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Range of images to analyze, used with 'file_base' (ignored if 'file' is given) + - name: file_suffix + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Suffix of the file to open, e.g. 'png' + - name: flip_x + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Flip' + description: | + Flip the image along the x-axis + - name: flip_y + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Flip' + description: | + Flip the image along the y-axis + - name: flip_z + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Flip' + description: | + Flip the image along the z-axis + - name: lower_value + required: No + default: !!str 0 + cpp_type: double + group_name: 'Threshold' + description: | + The value to set for data less than the threshold value + - name: origin + required: No + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + Origin of the image (defaults to mesh origin) + - name: scale + required: No + default: !!str 1 + cpp_type: double + group_name: 'Rescale' + description: | + Multiplier to apply to all pixel values; occurs after shifting + - name: shift + required: No + default: !!str 0 + cpp_type: double + group_name: 'Rescale' + description: | + Value to add to all pixels; occurs prior to scaling + - name: threshold + required: No + default: !!str + cpp_type: double + group_name: 'Threshold' + description: | + The threshold value + - name: type + required: No + default: !!str ImageFunction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: upper_value + required: No + default: !!str 1 + cpp_type: double + group_name: 'Threshold' + description: | + The value to set for data greater than the threshold value + subblocks: + - name: /Functions/LinearCombinationFunction + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: functions + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + This function will return Sum_over_i(w_i * functions_i) + - name: type + required: No + default: !!str LinearCombinationFunction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: w + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + This function will return Sum_over_i(w_i * functions_i) + subblocks: + - name: /Functions/ParsedFunction + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str ParsedFunction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: vals + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Constant numeric values, postprocessor names, or function names for vars. + - name: value + required: Yes + default: !!str + cpp_type: FunctionExpression + group_name: + description: | + The user defined function. + - name: vars + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Variables (excluding t,x,y,z) that are bound to the values provided by the corresponding items in the vals vector. + subblocks: + - name: /Functions/ParsedGradFunction + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: grad_x + required: No + default: !!str 0 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Partial with respect to x. + - name: grad_y + required: No + default: !!str 0 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Partial with respect to y. + - name: grad_z + required: No + default: !!str 0 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Partial with respect to z. + - name: type + required: No + default: !!str ParsedGradFunction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: vals + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Constant numeric values, postprocessor names, or function names for vars. + - name: value + required: No + default: !!str 0 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + User defined function. + - name: vars + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Variables (excluding t,x,y,z) that are bound to the values provided by the corresponding items in the vals vector. + subblocks: + - name: /Functions/ParsedVectorFunction + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: curl_x + required: No + default: !!str 0 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + x-component of curl of function. + - name: curl_y + required: No + default: !!str 0 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + y-component of curl of function. + - name: curl_z + required: No + default: !!str 0 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + z-component of curl of function. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str ParsedVectorFunction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: vals + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Constant numeric values, postprocessor names, or function names for vars. + - name: value_x + required: No + default: !!str 0 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + x-component of function. + - name: value_y + required: No + default: !!str 0 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + y-component of function. + - name: value_z + required: No + default: !!str 0 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + z-component of function. + - name: vars + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Variables (excluding t,x,y,z) that are bound to the values provided by the corresponding items in the vals vector. + subblocks: + - name: /Functions/PiecewiseBilinear + description: | + + parameters: + - name: axis + required: No + default: !!str -1 + cpp_type: int + group_name: + description: | + The axis used (0, 1, or 2 for x, y, or z). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: data_file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + File holding csv data for use with PiecewiseBilinear + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: radial + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true if you want to interpolate along a radius rather that along a specific axis, and note that you have to define xaxis and yaxis in the input file + - name: scale_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Scale factor to be applied to the axis, yaxis, or xaxis values + - name: type + required: No + default: !!str PiecewiseBilinear + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: x + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The x abscissa values + - name: xaxis + required: No + default: !!str -1 + cpp_type: int + group_name: + description: | + The coordinate used for x-axis data (0, 1, or 2 for x, y, or z). + - name: y + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The y abscissa values + - name: yaxis + required: No + default: !!str -1 + cpp_type: int + group_name: + description: | + The coordinate used for y-axis data (0, 1, or 2 for x, y, or z). + - name: z + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The ordinate values + subblocks: + - name: /Functions/PiecewiseConstant + description: | + + parameters: + - name: axis + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The axis used (x, y, or z) if this is to be a function of position + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: data_file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + File holding CSV data for use with Piecewise + - name: direction + required: No + default: !!str left + cpp_type: MooseEnum + group_name: + options: left right + description: | + Direction to look to find value: left right + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: format + required: No + default: !!str rows + cpp_type: MooseEnum + group_name: + options: columns rows + description: | + Format of csv data file that is in either in columns or rows + - name: scale_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Scale factor to be applied to the ordinate values + - name: type + required: No + default: !!str PiecewiseConstant + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: x + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The abscissa values + - name: x_index_in_file + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The abscissa index in the data file + - name: xy_data + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + All function data, supplied in abscissa, ordinate pairs + - name: xy_in_file_only + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If the data file only contains abscissa and ordinate data + - name: y + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The ordinate values + - name: y_index_in_file + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + The ordinate index in the data file + subblocks: + - name: /Functions/PiecewiseLinear + description: | + + parameters: + - name: axis + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The axis used (x, y, or z) if this is to be a function of position + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: data_file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + File holding CSV data for use with Piecewise + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: format + required: No + default: !!str rows + cpp_type: MooseEnum + group_name: + options: columns rows + description: | + Format of csv data file that is in either in columns or rows + - name: scale_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Scale factor to be applied to the ordinate values + - name: type + required: No + default: !!str PiecewiseLinear + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: x + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The abscissa values + - name: x_index_in_file + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The abscissa index in the data file + - name: xy_data + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + All function data, supplied in abscissa, ordinate pairs + - name: xy_in_file_only + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If the data file only contains abscissa and ordinate data + - name: y + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The ordinate values + - name: y_index_in_file + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + The ordinate index in the data file + subblocks: + - name: /Functions/PiecewiseMulticonstant + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: data_file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + File holding data for use with PiecewiseMultiInterpolation. Format: any empty line and any line beginning with # are ignored, all other lines are assumed to contain relevant information. The file must begin with specification of the grid. This is done through lines containing the keywords: AXIS X; AXIS Y; AXIS Z; or AXIS T. Immediately following the keyword line must be a space-separated line of real numbers which define the grid along the specified axis. These data must be monotonically increasing. After all the axes and their grids have been specified, there must be a line that is DATA. Following that line, function values are given in the correct order (they may be on individual lines, or be space-separated on a number of lines). When the function is evaluated, f[i,j,k,l] corresponds to the i + j*Ni + k*Ni*Nj + l*Ni*Nj*Nk data value. Here i>=0 corresponding to the index along the first AXIS, j>=0 corresponding to the index along the second AXIS, etc, and Ni = number of grid points along the first AXIS, etc. + - name: direction + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: left right + description: | + Direction to look to find value for each interpolation dimension. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str PiecewiseMulticonstant + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Functions/PiecewiseMultilinear + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: data_file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + File holding data for use with PiecewiseMultiInterpolation. Format: any empty line and any line beginning with # are ignored, all other lines are assumed to contain relevant information. The file must begin with specification of the grid. This is done through lines containing the keywords: AXIS X; AXIS Y; AXIS Z; or AXIS T. Immediately following the keyword line must be a space-separated line of real numbers which define the grid along the specified axis. These data must be monotonically increasing. After all the axes and their grids have been specified, there must be a line that is DATA. Following that line, function values are given in the correct order (they may be on individual lines, or be space-separated on a number of lines). When the function is evaluated, f[i,j,k,l] corresponds to the i + j*Ni + k*Ni*Nj + l*Ni*Nj*Nk data value. Here i>=0 corresponding to the index along the first AXIS, j>=0 corresponding to the index along the second AXIS, etc, and Ni = number of grid points along the first AXIS, etc. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str PiecewiseMultilinear + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Functions/SolutionFunction + description: | + + parameters: + - name: add_factor + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Add this value (b) to the solution (x): ax+b, where a is the 'scale_factor' + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: from_variable + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the variable in the file that is to be extracted + - name: scale_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Scale factor (a) to be applied to the solution (x): ax+b, where b is the 'add_factor' + - name: solution + required: Yes + default: !!str + cpp_type: UserObjectName + group_name: + description: | + The SolutionUserObject to extract data from. + - name: type + required: No + default: !!str SolutionFunction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Functions/SplineFunction + description: | + + parameters: + - name: component + required: No + default: !!str x + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The component of the geometry point to interpolate with + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str SplineFunction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: x + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The abscissa values + - name: y + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The ordinate values + - name: yp1 + required: No + default: !!str 1e+30 + cpp_type: double + group_name: + description: | + The value of the first derivative of the interpolating function at point 1 + - name: ypn + required: No + default: !!str 1e+30 + cpp_type: double + group_name: + description: | + The value of the first derivative of the interpolating function at point n + subblocks: + - name: /Functions/TestSetupPostprocessorDataActionFunction + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + A postprocessor to test against + - name: type + required: No + default: !!str TestSetupPostprocessorDataActionFunction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Functions/VectorPostprocessorFunction + description: | + + parameters: + - name: argument_column + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + VectorPostprocessor column tabulating the abscissa of the sampled function + - name: component + required: No + default: !!str time + cpp_type: MooseEnum + group_name: + options: x y z time 0 1 2 + description: | + Component of the function evaluation point used to sample the VectorPostprocessor + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str VectorPostprocessorFunction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: value_column + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + VectorPostprocessor column tabulating the ordinate (function values) of the sampled function + - name: vectorpostprocessor_name + required: Yes + default: !!str + cpp_type: VectorPostprocessorName + group_name: + description: | + The name of the VectorPostprocessor that you want to use + subblocks: +- name: /GlobalParams + description: | + + parameters: + subblocks: +- name: /ICs + description: | + + parameters: + subblocks: + - name: /ICs/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /ICs/ArrayConstantIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str ArrayConstantIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: value + required: Yes + default: !!str + cpp_type: Eigen::Matrix + group_name: + description: | + The values to be set in IC + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /ICs/ArrayFunctionIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: function + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The initial condition functions. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str ArrayFunctionIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /ICs/BoundingBoxIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: inside + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The value of the variable inside the box + - name: int_width + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The width of the diffuse interface. Set to 0 for sharp interface. + - name: outside + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The value of the variable outside the box + - name: type + required: No + default: !!str BoundingBoxIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + - name: x1 + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The x coordinate of the lower left-hand corner of the box + - name: x2 + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The x coordinate of the upper right-hand corner of the box + - name: y1 + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The y coordinate of the lower left-hand corner of the box + - name: y2 + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The y coordinate of the upper right-hand corner of the box + - name: z1 + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The z coordinate of the lower left-hand corner of the box + - name: z2 + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The z coordinate of the upper right-hand corner of the box + subblocks: + - name: /ICs/ConstantIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str ConstantIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The value to be set in IC + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /ICs/FunctionIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The initial condition function. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str FunctionIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /ICs/FunctionScalarIC + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: function + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The initial condition function. + - name: type + required: No + default: !!str FunctionScalarIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: No + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /ICs/RandomIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: distribution + required: No + default: !!str + cpp_type: DistributionName + group_name: + description: | + Name of distribution defining distribution of randomly generated values + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: legacy_generator + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Determines whether or not the legacy generator (deprecated) should be used. + - name: max + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper bound of uniformly distributed randomly generated values + - name: min + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower bound of uniformly distributed randomly generated values + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Seed value for the random number generator + - name: type + required: No + default: !!str RandomIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /ICs/ScalarComponentIC + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str ScalarComponentIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: values + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Initial values to initialize the scalar variable. + - name: variable + required: No + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /ICs/ScalarConstantIC + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str ScalarConstantIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + + - name: variable + required: No + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /ICs/VectorConstantIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str VectorConstantIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + - name: x_value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The x value to be set in IC + - name: y_value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The y value to be set in IC + - name: z_value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The z value to be set in IC + subblocks: + - name: /ICs/VectorFunctionIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: function + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + The initial condition vector function. This cannot be supplied with the component parameters. + - name: function_x + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + A function that describes the x-component of the initial condition + - name: function_y + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + A function that describes the y-component of the initial condition + - name: function_z + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + A function that describes the z-component of the initial condition + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str VectorFunctionIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: +- name: /InterfaceKernels + description: | + + parameters: + subblocks: + - name: /InterfaceKernels/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /InterfaceKernels/InterfaceReaction + description: | + + parameters: + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: diag_save_in_var_side + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: m s + description: | + This parameter must exist if diag_save_in variables are specified and must have the same length as diag_save_in. This vector specifies whether the corresponding aux_var should save-in jacobian contributions from the master ('m') or slave side ('s'). + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: kb + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Backward reaction rate coefficient. + - name: kf + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Forward reaction rate coefficient. + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: neighbor_var + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable on the other side of the interface. + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: save_in_var_side + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: m s + description: | + This parameter must exist if save_in variables are specified and must have the same length as save_in. This vector specifies whether the corresponding aux_var should save-in residual contributions from the master ('m') or slave side ('s'). + - name: type + required: No + default: !!str InterfaceReaction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: +- name: /Kernels + description: | + + parameters: + subblocks: + - name: /Kernels/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Kernels/ADBodyForce + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: No + default: !!str 1 + cpp_type: FunctionName + group_name: + description: | + A function that describes the body force + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: postprocessor + required: No + default: !!str 1 + cpp_type: PostprocessorName + group_name: + description: | + A postprocessor whose value is multiplied by the body force + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADBodyForce + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Coefficient to multiply by the body force term + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/ADCoupledTimeDerivative + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADCoupledTimeDerivative + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + Coupled variable + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/ADDiffusion + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADDiffusion + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/ADMatDiffusion + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: diffusivity + required: No + default: !!str D + cpp_type: MaterialPropertyName + group_name: + description: | + The diffusivity value or material property + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADMatDiffusion + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + Coupled concentration variable for kernel to operate on; if this is not specified, the kernel's nonlinear variable will be used as usual + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/ADTimeDerivative + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADTimeDerivative + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/ADVectorDiffusion + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADVectorDiffusion + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/ADVectorTimeDerivative + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADVectorTimeDerivative + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/AnisotropicDiffusion + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: tensor_coeff + required: Yes + default: !!str + cpp_type: libMesh::TensorValue + group_name: + description: | + The Tensor to multiply the Diffusion operator by + - name: type + required: No + default: !!str AnisotropicDiffusion + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/ArrayDiffusion + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: diffusion_coefficient + required: No + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the diffusivity, can be scalar, vector, or matrix. + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ArrayDiffusion + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/ArrayReaction + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: reaction_coefficient + required: No + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the reactivity, can be scalar, vector, or matrix. + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ArrayReaction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/ArrayTimeDerivative + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: time_derivative_coefficient + required: No + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the time derivative coefficient. Can be scalar, vector, or matrix + - name: type + required: No + default: !!str ArrayTimeDerivative + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/BodyForce + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: No + default: !!str 1 + cpp_type: FunctionName + group_name: + description: | + A function that describes the body force + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: postprocessor + required: No + default: !!str 1 + cpp_type: PostprocessorName + group_name: + description: | + A postprocessor whose value is multiplied by the body force + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str BodyForce + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Coefficient to multiply by the body force term + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/CoefTimeDerivative + description: | + + parameters: + - name: Coefficient + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The coefficient for the time derivative kernel + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: lumping + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True for mass matrix lumping, false otherwise + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str CoefTimeDerivative + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/ConservativeAdvection + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ConservativeAdvection + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: upwinding_type + required: No + default: !!str none + cpp_type: MooseEnum + group_name: + options: none full + description: | + Type of upwinding used. None: Typically results in overshoots and undershoots, but numerical diffusion is minimized. Full: Overshoots and undershoots are avoided, but numerical diffusion is large + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + - name: velocity + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + Velocity vector + subblocks: + - name: /Kernels/CoupledForce + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: coef + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Coefficent ($\sigma$) multiplier for the coupled force term. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str CoupledForce + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The coupled variable which provides the force + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/CoupledTimeDerivative + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str CoupledTimeDerivative + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + Coupled variable + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/MaxwellHNonlinear + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaxwellHNonlinear + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + - name: x_forcing_func + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The x forcing function. + - name: y_forcing_func + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The y forcing function. + - name: z_forcing_func + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The z forcing function. + subblocks: + - name: /Kernels/Diffusion + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str Diffusion + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/MassEigenKernel + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: eigen + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Use for eigenvalue problem (true) or source problem (false) + - name: eigen_postprocessor + required: No + default: !!str 1 + cpp_type: PostprocessorName + group_name: + description: | + The name of the postprocessor that provides the eigenvalue. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MassEigenKernel + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/MassLumpedTimeDerivative + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MassLumpedTimeDerivative + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/MatCoupledForce + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: coef + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Coefficents ($\sigma$) multiplier for the coupled force term. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: material_properties + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The coupled material properties. + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MatCoupledForce + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The coupled variables which provide the force + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/MatDiffusion + description: | + + parameters: + - name: D_name + required: No + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the diffusivity + - name: args + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + Optional vector of arguments for the diffusivity. If provided and diffusivity is a derivative parsed material, Jacobian contributions from the diffusivity will be automatically computed + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: conc + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + Deprecated! Use 'v' instead + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: diffusivity + required: No + default: !!str D + cpp_type: MaterialPropertyName + group_name: + description: | + The diffusivity value or material property + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MatDiffusion + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + Coupled concentration variable for kernel to operate on; if this is not specified, the kernel's nonlinear variable will be used as usual + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/MaterialDerivativeRankFourTestKernel + description: | + + parameters: + - name: args + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + List of variables the material property depends on + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: derivative + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Select derivative to test derivatives of (leave empty for checking derivatives of the original material property) + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: i + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + Tensor component + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: j + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + Tensor component + - name: k + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + Tensor component + - name: l + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + Tensor component + - name: material_property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + Name of material property for which derivatives are to be tested. + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialDerivativeRankFourTestKernel + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/MaterialDerivativeRankTwoTestKernel + description: | + + parameters: + - name: args + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + List of variables the material property depends on + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: derivative + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Select derivative to test derivatives of (leave empty for checking derivatives of the original material property) + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: i + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + Tensor component + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: j + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + Tensor component + - name: material_property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + Name of material property for which derivatives are to be tested. + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialDerivativeRankTwoTestKernel + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/MaterialDerivativeTestKernel + description: | + + parameters: + - name: args + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + List of variables the material property depends on + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: derivative + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Select derivative to test derivatives of (leave empty for checking derivatives of the original material property) + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: material_property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + Name of material property for which derivatives are to be tested. + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialDerivativeTestKernel + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/MaterialPropertyValue + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: positive + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If the kernel is positive, this is true, if negative, it is false + - name: prop_name + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + Name of material property to be used in the kernel + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialPropertyValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/NullKernel + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: jacobian_fill + required: No + default: !!str 1e-09 + cpp_type: double + group_name: + description: | + On diagonal Jacobian fill term to retain an invertable matrix for the preconditioner + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NullKernel + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/Reaction + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str Reaction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/TimeDerivative + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: lumping + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True for mass matrix lumping, false otherwise + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str TimeDerivative + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/UserForcingFunction + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: No + default: !!str 1 + cpp_type: FunctionName + group_name: + description: | + A function that describes the body force + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: postprocessor + required: No + default: !!str 1 + cpp_type: PostprocessorName + group_name: + description: | + A postprocessor whose value is multiplied by the body force + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str UserForcingFunction + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Coefficient to multiply by the body force term + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/VectorBodyForce + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + A function that defines a vectorValue method. This cannot be supplied with the component parameters. + - name: function_x + required: No + default: !!str 1 + cpp_type: FunctionName + group_name: + description: | + A function that describes the x-component of the body force + - name: function_y + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + A function that describes the y-component of the body force + - name: function_z + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + A function that describes the z-component of the body force + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: postprocessor + required: No + default: !!str 1 + cpp_type: PostprocessorName + group_name: + description: | + A postprocessor whose value is multiplied by the body force + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorBodyForce + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Coefficient to multiply by the body force term + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/VectorCoupledTimeDerivative + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorCoupledTimeDerivative + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + Coupled vector variable + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/VectorDiffusion + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorDiffusion + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /Kernels/VectorFEWave + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorFEWave + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + - name: x_forcing_func + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The x forcing function. + - name: y_forcing_func + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The y forcing function. + - name: z_forcing_func + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The z forcing function. + subblocks: + - name: /Kernels/VectorTimeDerivative + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: displacements + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The displacements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: lumping + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True for mass matrix lumping, false otherwise + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VectorTimeDerivative + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this Kernel operates on + - name: vector_tags + required: No + default: !!str time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: +- name: /Materials + description: | + + parameters: + subblocks: + - name: /Materials/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Materials/ADDerivativeParsedMaterial + description: | + + parameters: + - name: args + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + Arguments of F() - use vector coupling + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_expressions + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of values for the constants in constant_names (can be an FParser expression) + - name: constant_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of constants used in the parsed function (use this for kB etc.) + - name: constant_on + required: No + default: !!str NONE + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: derivative_order + required: No + default: !!str 3 + cpp_type: unsigned int + group_name: + description: | + Maximum order of derivatives taken + - name: disable_fpoptimizer + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Disable the function parser algebraic optimizer + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_ad_cache + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable cacheing of function derivatives for faster startup time + - name: enable_auto_optimize + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable automatic immediate optimization of derivatives + - name: enable_jit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable just-in-time compilation of function expressions for faster evaluation + - name: evalerror_behavior + required: No + default: !!str nan + cpp_type: MooseEnum + group_name: 'Advanced' + options: nan nan_warning error exception + description: | + What to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exception + - name: f_name + required: No + default: !!str F + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Base name of the free energy function (used to name the material properties) + - name: fail_on_evalerror + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Fail fatally if a function evaluation returns an error code (otherwise just pass on NaN) + - name: function + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + FParser function expression for the phase free energy + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: material_property_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of material properties used in the parsed function + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: tol_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of variable names to be protected from being 0 or 1 within a tolerance (needed for log(c) and log(1-c) terms) + - name: tol_values + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Vector of tolerance values for the variables in tol_names + - name: type + required: No + default: !!str ADDerivativeParsedMaterial + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Materials/ADGenericConstantMaterial + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_on + required: No + default: !!str SUBDOMAIN + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: prop_names + required: Yes + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the properties this material will have + - name: prop_values + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The values associated with the named properties + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADGenericConstantMaterial + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Materials/ADGenericFunctionMaterial + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_on + required: No + default: !!str NONE + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_stateful + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable the declaration of old and older values + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: prop_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the properties this material will have + - name: prop_values + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The corresponding names of the functions that are going to provide the values for the variables + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADGenericFunctionMaterial + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Materials/ADParsedMaterial + description: | + + parameters: + - name: args + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + Arguments of F() - use vector coupling + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_expressions + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of values for the constants in constant_names (can be an FParser expression) + - name: constant_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of constants used in the parsed function (use this for kB etc.) + - name: constant_on + required: No + default: !!str NONE + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: disable_fpoptimizer + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Disable the function parser algebraic optimizer + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_ad_cache + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable cacheing of function derivatives for faster startup time + - name: enable_auto_optimize + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable automatic immediate optimization of derivatives + - name: enable_jit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable just-in-time compilation of function expressions for faster evaluation + - name: evalerror_behavior + required: No + default: !!str nan + cpp_type: MooseEnum + group_name: 'Advanced' + options: nan nan_warning error exception + description: | + What to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exception + - name: f_name + required: No + default: !!str F + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Base name of the free energy function (used to name the material properties) + - name: fail_on_evalerror + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Fail fatally if a function evaluation returns an error code (otherwise just pass on NaN) + - name: function + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + FParser function expression for the phase free energy + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: material_property_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of material properties used in the parsed function + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: tol_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of variable names to be protected from being 0 or 1 within a tolerance (needed for log(c) and log(1-c) terms) + - name: tol_values + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Vector of tolerance values for the variables in tol_names + - name: type + required: No + default: !!str ADParsedMaterial + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Materials/ADPiecewiseLinearInterpolationMaterial + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_on + required: No + default: !!str NONE + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extrapolation + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Use linear extrapolation to evaluate points that lie outside given data set domain. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: property + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the property this material will compute + - name: scale_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Scale factor to be applied to the ordinate values + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADPiecewiseLinearInterpolationMaterial + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable whose value is used as the abscissa in the interpolation + - name: x + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The abscissa values + - name: xy_data + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + All function data, supplied in abscissa, ordinate pairs + - name: y + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The ordinate values + subblocks: + - name: /Materials/Conductor + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_on + required: No + default: !!str NONE + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: resistivity + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The resistivity ($\rho$) of the conductor. Defaults to 1 + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str Conductor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Materials/DerivativeParsedMaterial + description: | + + parameters: + - name: args + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + Arguments of F() - use vector coupling + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_expressions + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of values for the constants in constant_names (can be an FParser expression) + - name: constant_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of constants used in the parsed function (use this for kB etc.) + - name: constant_on + required: No + default: !!str NONE + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: derivative_order + required: No + default: !!str 3 + cpp_type: unsigned int + group_name: + description: | + Maximum order of derivatives taken + - name: disable_fpoptimizer + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Disable the function parser algebraic optimizer + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_ad_cache + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable cacheing of function derivatives for faster startup time + - name: enable_auto_optimize + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable automatic immediate optimization of derivatives + - name: enable_jit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable just-in-time compilation of function expressions for faster evaluation + - name: evalerror_behavior + required: No + default: !!str nan + cpp_type: MooseEnum + group_name: 'Advanced' + options: nan nan_warning error exception + description: | + What to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exception + - name: f_name + required: No + default: !!str F + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Base name of the free energy function (used to name the material properties) + - name: fail_on_evalerror + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Fail fatally if a function evaluation returns an error code (otherwise just pass on NaN) + - name: function + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + FParser function expression for the phase free energy + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: material_property_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of material properties used in the parsed function + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: tol_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of variable names to be protected from being 0 or 1 within a tolerance (needed for log(c) and log(1-c) terms) + - name: tol_values + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Vector of tolerance values for the variables in tol_names + - name: type + required: No + default: !!str DerivativeParsedMaterial + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Materials/DerivativeSumMaterial + description: | + + parameters: + - name: args + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + Arguments of the free energy functions being summed - use vector coupling + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant + required: No + default: !!str 0 + cpp_type: double + group_name: 'Advanced' + description: | + Constant to be added to the prefactor multiplied sum. + - name: constant_on + required: No + default: !!str NONE + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: derivative_order + required: No + default: !!str 3 + cpp_type: unsigned int + group_name: + description: | + Maximum order of derivatives taken (2 or 3) + - name: displacement_gradients + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + Vector of displacement gradient variables (see Modules/PhaseField/DisplacementGradients action) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: f_name + required: No + default: !!str F + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Base name of the free energy function (used to name the material properties) + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: prefactor + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Prefactor to multiply the sum term with. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: sum_materials + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Base name of the free energy function (used to name the material properties) + - name: third_derivatives + required: No + default: !!str + cpp_type: bool + group_name: + description: | + Flag to indicate if third derivatives are needed + - name: type + required: No + default: !!str DerivativeSumMaterial + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: validate_coupling + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Check if all variables the specified materials depend on are listed in the `args` parameter. + subblocks: + - name: /Materials/GenericConstant2DArray + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_on + required: No + default: !!str SUBDOMAIN + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: prop_name + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The names of the properties this material will have + - name: prop_value + required: Yes + default: !!str + cpp_type: Eigen::Matrix + group_name: + description: | + The values associated with the named properties + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str GenericConstant2DArray + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Materials/GenericConstantArray + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_on + required: No + default: !!str SUBDOMAIN + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: prop_name + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The names of the properties this material will have + - name: prop_value + required: Yes + default: !!str + cpp_type: Eigen::Matrix + group_name: + description: | + The values associated with the named properties + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str GenericConstantArray + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Materials/GenericConstantMaterial + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_on + required: No + default: !!str SUBDOMAIN + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: prop_names + required: Yes + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the properties this material will have + - name: prop_values + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The values associated with the named properties + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str GenericConstantMaterial + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Materials/GenericConstantRankTwoTensor + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_on + required: No + default: !!str SUBDOMAIN + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: tensor_name + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + Name of the tensor material property to be created + - name: tensor_values + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Vector of values defining the constant rank two tensor + - name: type + required: No + default: !!str GenericConstantRankTwoTensor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Materials/GenericFunctionMaterial + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_on + required: No + default: !!str NONE + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_stateful + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable the declaration of old and older values + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: prop_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the properties this material will have + - name: prop_values + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The corresponding names of the functions that are going to provide the values for the variables + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str GenericFunctionMaterial + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Materials/MaterialConverter + description: | + + parameters: + - name: ad_props_in + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the AD material properties to convert to regular properties + - name: ad_props_out + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the output AD properties + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_on + required: No + default: !!str NONE + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: intra_convert + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether to intra convert, e.g. regular->regular, ad->ad + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: reg_props_in + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the regular material properties to convert to AD properties + - name: reg_props_out + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the output regular properties + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialConverter + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Materials/ParsedMaterial + description: | + + parameters: + - name: args + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + Arguments of F() - use vector coupling + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_expressions + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of values for the constants in constant_names (can be an FParser expression) + - name: constant_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of constants used in the parsed function (use this for kB etc.) + - name: constant_on + required: No + default: !!str NONE + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: disable_fpoptimizer + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Disable the function parser algebraic optimizer + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_ad_cache + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable cacheing of function derivatives for faster startup time + - name: enable_auto_optimize + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable automatic immediate optimization of derivatives + - name: enable_jit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable just-in-time compilation of function expressions for faster evaluation + - name: evalerror_behavior + required: No + default: !!str nan + cpp_type: MooseEnum + group_name: 'Advanced' + options: nan nan_warning error exception + description: | + What to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exception + - name: f_name + required: No + default: !!str F + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Base name of the free energy function (used to name the material properties) + - name: fail_on_evalerror + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Fail fatally if a function evaluation returns an error code (otherwise just pass on NaN) + - name: function + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + FParser function expression for the phase free energy + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: material_property_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of material properties used in the parsed function + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: tol_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of variable names to be protected from being 0 or 1 within a tolerance (needed for log(c) and log(1-c) terms) + - name: tol_values + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Vector of tolerance values for the variables in tol_names + - name: type + required: No + default: !!str ParsedMaterial + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Materials/PiecewiseLinearInterpolationMaterial + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_on + required: No + default: !!str NONE + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extrapolation + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Use linear extrapolation to evaluate points that lie outside given data set domain. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: property + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the property this material will compute + - name: scale_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Scale factor to be applied to the ordinate values + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str PiecewiseLinearInterpolationMaterial + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable whose value is used as the abscissa in the interpolation + - name: x + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The abscissa values + - name: xy_data + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + All function data, supplied in abscissa, ordinate pairs + - name: y + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The ordinate values + subblocks: + - name: /Materials/RankFourTensorMaterialConverter + description: | + + parameters: + - name: ad_props_in + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the AD material properties to convert to regular properties + - name: ad_props_out + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the output AD properties + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_on + required: No + default: !!str NONE + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: intra_convert + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether to intra convert, e.g. regular->regular, ad->ad + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: reg_props_in + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the regular material properties to convert to AD properties + - name: reg_props_out + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the output regular properties + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str RankFourTensorMaterialConverter + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Materials/RankTwoTensorMaterialConverter + description: | + + parameters: + - name: ad_props_in + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the AD material properties to convert to regular properties + - name: ad_props_out + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the output AD properties + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: compute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies. + - name: constant_on + required: No + default: !!str NONE + cpp_type: MooseEnum + group_name: + options: NONE ELEMENT SUBDOMAIN + description: | + When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: intra_convert + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether to intra convert, e.g. regular->regular, ad->ad + - name: output_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Outputs' + description: | + List of material properties, from this material, to output (outputs must also be defined to an output type) + - name: outputs + required: No + default: !!str none + cpp_type: std::vector > + group_name: 'Outputs' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: reg_props_in + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the regular material properties to convert to AD properties + - name: reg_props_out + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the output regular properties + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str RankTwoTensorMaterialConverter + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: +- name: /Mesh + description: | + + parameters: + - name: displacements + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The variables corresponding to the x y z displacements of the mesh. If this is provided then the displacements will be taken into account during the computation. Creation of the displaced mesh can be suppressed even if this is set by setting 'use_displaced_mesh = false'. + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: use_displaced_mesh + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Create the displaced mesh if the 'displacements' parameter is set. If this is 'false', a displaced mesh will not be created, regardless of whether 'displacements' is set. + - name: include_local_in_ghosting + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Boolean used to toggle on the inclusion of local elements along with the ghost elements for a complete partition map + - name: output_ghosting + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Boolean to turn on ghosting auxiliary fields + - name: block_id + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Add Names' + description: | + IDs of the block id/name pairs + - name: block_name + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Add Names' + description: | + Names of the block id/name pairs (must correspond with "block_id" + - name: boundary_id + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Add Names' + description: | + IDs of the boundary id/name pairs + - name: boundary_name + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Add Names' + description: | + Names of the boundary id/name pairs (must correspond with "boundary_id" + - name: construct_side_list_from_node_list + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + If true, construct side lists from the nodesets in the mesh (i.e. if every node on a give side is in a nodeset then add that side to a sideset + - name: ghosted_boundaries + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Boundaries to be ghosted if using Nemesis + - name: ghosted_boundaries_inflation + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + If you are using ghosted boundaries you will want to set this value to a vector of amounts to inflate the bounding boxes by. ie if you are running a 3D problem you might set it to '0.2 0.1 0.4' + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: second_order + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Converts a first order mesh to a second order mesh. Note: This is NOT needed if you are reading an actual first order mesh. + - name: skip_partitioning + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + If true the mesh won't be partitioned. This may cause large load imbalanced but is currently required if you have a simulation containing uniform refinement, adaptivity and stateful material properties + - name: type + required: Yes + default: !!str FileMesh + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + - name: uniform_refine + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Specify the level of uniform refinement applied to the initial mesh + subblocks: + - name: /Mesh/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Mesh/ + description: | + + parameters: + subblocks: + - name: /Mesh//AnnularMesh + description: | + + parameters: + - name: allow_renumbering + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If allow_renumbering=false, node and element numbers are kept fixed until deletion + - name: centroid_partitioner_direction + required: No + default: !!str + cpp_type: MooseEnum + group_name: 'Partitioning' + options: x y z radial + description: | + Specifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial + - name: construct_node_list_from_side_list + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to generate nodesets from the sidesets (usually a good idea). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: No + default: !!str 1 + cpp_type: MooseEnum + group_name: 'Advanced' + options: 1 2 3 + description: | + This is only required for certain mesh formats where the dimension of the mesh cannot be autodetected. In particular you must supply this for GMSH meshes. Note: This is completely ignored for ExodusII meshes! + - name: dmax + required: No + default: !!str 360 + cpp_type: double + group_name: + description: | + Maximum angle, measured in degrees anticlockwise from x axis. If dmin=0 and dmax=360 an annular mesh is created. Otherwise, only a sector of an annulus is created + - name: dmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Minimum degree, measured in degrees anticlockwise from x axis + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ghosting_patch_size + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of nearest neighbors considered for ghosting purposes when 'iteration' patch update strategy is used. Default is 5 * patch_size. + - name: growth_r + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The ratio of radial sizes of successive rings of elements + - name: max_leaf_size + required: No + default: !!str 10 + cpp_type: unsigned int + group_name: + description: | + The maximum number of points in each leaf of the KDTree used in the nearest neighbor search. As the leaf size becomes larger,KDTree construction becomes faster but the nearest neighbor searchbecomes slower. + - name: nemesis + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + If nemesis=true and file=foo.e, actually reads foo.e.N.0, foo.e.N.1, ... foo.e.N.N-1, where N = # CPUs, with NemesisIO. + - name: nr + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the radial direction + - name: nt + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + Number of elements in the angular direction + - name: parallel_type + required: No + default: !!str DEFAULT + cpp_type: MooseEnum + group_name: + options: DEFAULT REPLICATED DISTRIBUTED + description: | + DEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is specified on the command line REPLICATED: Always use libMesh::ReplicatedMesh DISTRIBUTED: Always use libMesh::DistributedMesh + - name: partitioner + required: No + default: !!str default + cpp_type: MooseEnum + group_name: 'Partitioning' + options: default metis parmetis linear centroid hilbert_sfc morton_sfc + description: | + Specifies a mesh partitioner to use when splitting the mesh for a parallel computation. + - name: patch_size + required: No + default: !!str 40 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of nodes to consider in the NearestNode neighborhood. + - name: patch_update_strategy + required: No + default: !!str never + cpp_type: MooseEnum + group_name: 'Advanced' + options: never always auto iteration + description: | + How often to update the geometric search 'patch'. The default is to never update it (which is the most efficient but could be a problem with lots of relative motion). 'always' will update the patch for all slave nodes at the beginning of every timestep which might be time consuming. 'auto' will attempt to determine at the start of which timesteps the patch for all slave nodes needs to be updated automatically.'iteration' updates the patch at every nonlinear iteration for a subset of slave nodes for which penetration is not detected. If there can be substantial relative motion between the master and slave surfaces during the nonlinear iterations within a timestep, it is advisable to use 'iteration' option to ensure accurate contact detection. + - name: quad_subdomain_id + required: No + default: !!str 0 + cpp_type: unsigned short + group_name: + description: | + The subdomain ID given to the QUAD4 elements + - name: rmax + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Outer radius + - name: rmin + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Inner radius. If rmin=0 then a disc mesh (with no central hole) will be created. + - name: tmax + required: No + default: !!str 6.28319 + cpp_type: double + group_name: + description: | + Maximum angle, measured in radians anticlockwise from x axis. If tmin=0 and tmax=2Pi an annular mesh is created. Otherwise, only a sector of an annulus is created + - name: tmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Minimum angle, measured in radians anticlockwise from x axis + - name: tri_subdomain_id + required: No + default: !!str 1 + cpp_type: unsigned short + group_name: + description: | + The subdomain ID given to the TRI3 elements (these exist only if rmin=0, and they exist at the center of the disc + - name: type + required: No + default: !!str AnnularMesh + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh//ConcentricCircleMesh + description: | + + parameters: + - name: allow_renumbering + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If allow_renumbering=false, node and element numbers are kept fixed until deletion + - name: centroid_partitioner_direction + required: No + default: !!str + cpp_type: MooseEnum + group_name: 'Partitioning' + options: x y z radial + description: | + Specifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial + - name: construct_node_list_from_side_list + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to generate nodesets from the sidesets (usually a good idea). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: No + default: !!str 1 + cpp_type: MooseEnum + group_name: 'Advanced' + options: 1 2 3 + description: | + This is only required for certain mesh formats where the dimension of the mesh cannot be autodetected. In particular you must supply this for GMSH meshes. Note: This is completely ignored for ExodusII meshes! + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ghosting_patch_size + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of nearest neighbors considered for ghosting purposes when 'iteration' patch update strategy is used. Default is 5 * patch_size. + - name: has_outer_square + required: Yes + default: !!str + cpp_type: bool + group_name: + description: | + It determines if meshes for a outer square are added to concentric circle meshes. + - name: inner_mesh_fraction + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Length of inner square / radius of the innermost circle + - name: max_leaf_size + required: No + default: !!str 10 + cpp_type: unsigned int + group_name: + description: | + The maximum number of points in each leaf of the KDTree used in the nearest neighbor search. As the leaf size becomes larger,KDTree construction becomes faster but the nearest neighbor searchbecomes slower. + - name: nemesis + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + If nemesis=true and file=foo.e, actually reads foo.e.N.0, foo.e.N.1, ... foo.e.N.N-1, where N = # CPUs, with NemesisIO. + - name: num_sectors + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + num_sectors % 2 = 0, num_sectors > 0Number of azimuthal sectors in each quadrant'num_sectors' must be an even number. + - name: parallel_type + required: No + default: !!str DEFAULT + cpp_type: MooseEnum + group_name: + options: DEFAULT REPLICATED DISTRIBUTED + description: | + DEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is specified on the command line REPLICATED: Always use libMesh::ReplicatedMesh DISTRIBUTED: Always use libMesh::DistributedMesh + - name: partitioner + required: No + default: !!str default + cpp_type: MooseEnum + group_name: 'Partitioning' + options: default metis parmetis linear centroid hilbert_sfc morton_sfc + description: | + Specifies a mesh partitioner to use when splitting the mesh for a parallel computation. + - name: patch_size + required: No + default: !!str 40 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of nodes to consider in the NearestNode neighborhood. + - name: patch_update_strategy + required: No + default: !!str never + cpp_type: MooseEnum + group_name: 'Advanced' + options: never always auto iteration + description: | + How often to update the geometric search 'patch'. The default is to never update it (which is the most efficient but could be a problem with lots of relative motion). 'always' will update the patch for all slave nodes at the beginning of every timestep which might be time consuming. 'auto' will attempt to determine at the start of which timesteps the patch for all slave nodes needs to be updated automatically.'iteration' updates the patch at every nonlinear iteration for a subset of slave nodes for which penetration is not detected. If there can be substantial relative motion between the master and slave surfaces during the nonlinear iterations within a timestep, it is advisable to use 'iteration' option to ensure accurate contact detection. + - name: pitch + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The moderator can be added to complete meshes for one unit cell of fuel assembly.Elements are quad meshes. + - name: portion + required: No + default: !!str full + cpp_type: MooseEnum + group_name: + options: full top_right top_left bottom_left bottom_right right_half left_half top_half bottom_half + description: | + Control of which part of mesh is created + - name: preserve_volumes + required: Yes + default: !!str + cpp_type: bool + group_name: + description: | + Volume of concentric circles can be preserved using this function. + - name: radii + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Radii of major concentric circles + - name: rings + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Number of rings in each circle or in the moderator + - name: type + required: No + default: !!str ConcentricCircleMesh + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh//FileMesh + description: | + + parameters: + - name: allow_renumbering + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If allow_renumbering=false, node and element numbers are kept fixed until deletion + - name: centroid_partitioner_direction + required: No + default: !!str + cpp_type: MooseEnum + group_name: 'Partitioning' + options: x y z radial + description: | + Specifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial + - name: construct_node_list_from_side_list + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to generate nodesets from the sidesets (usually a good idea). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: No + default: !!str 1 + cpp_type: MooseEnum + group_name: 'Advanced' + options: 1 2 3 + description: | + This is only required for certain mesh formats where the dimension of the mesh cannot be autodetected. In particular you must supply this for GMSH meshes. Note: This is completely ignored for ExodusII meshes! + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: file + required: Yes + default: !!str + cpp_type: MeshFileName + group_name: + description: | + The name of the mesh file to read + - name: ghosting_patch_size + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of nearest neighbors considered for ghosting purposes when 'iteration' patch update strategy is used. Default is 5 * patch_size. + - name: max_leaf_size + required: No + default: !!str 10 + cpp_type: unsigned int + group_name: + description: | + The maximum number of points in each leaf of the KDTree used in the nearest neighbor search. As the leaf size becomes larger,KDTree construction becomes faster but the nearest neighbor searchbecomes slower. + - name: nemesis + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + If nemesis=true and file=foo.e, actually reads foo.e.N.0, foo.e.N.1, ... foo.e.N.N-1, where N = # CPUs, with NemesisIO. + - name: parallel_type + required: No + default: !!str DEFAULT + cpp_type: MooseEnum + group_name: + options: DEFAULT REPLICATED DISTRIBUTED + description: | + DEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is specified on the command line REPLICATED: Always use libMesh::ReplicatedMesh DISTRIBUTED: Always use libMesh::DistributedMesh + - name: partitioner + required: No + default: !!str default + cpp_type: MooseEnum + group_name: 'Partitioning' + options: default metis parmetis linear centroid hilbert_sfc morton_sfc + description: | + Specifies a mesh partitioner to use when splitting the mesh for a parallel computation. + - name: patch_size + required: No + default: !!str 40 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of nodes to consider in the NearestNode neighborhood. + - name: patch_update_strategy + required: No + default: !!str never + cpp_type: MooseEnum + group_name: 'Advanced' + options: never always auto iteration + description: | + How often to update the geometric search 'patch'. The default is to never update it (which is the most efficient but could be a problem with lots of relative motion). 'always' will update the patch for all slave nodes at the beginning of every timestep which might be time consuming. 'auto' will attempt to determine at the start of which timesteps the patch for all slave nodes needs to be updated automatically.'iteration' updates the patch at every nonlinear iteration for a subset of slave nodes for which penetration is not detected. If there can be substantial relative motion between the master and slave surfaces during the nonlinear iterations within a timestep, it is advisable to use 'iteration' option to ensure accurate contact detection. + - name: type + required: No + default: !!str FileMesh + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh//GeneratedMesh + description: | + + parameters: + - name: allow_renumbering + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If allow_renumbering=false, node and element numbers are kept fixed until deletion + - name: bias_x + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the x-direction. + - name: bias_y + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the y-direction. + - name: bias_z + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the z-direction. + - name: centroid_partitioner_direction + required: No + default: !!str + cpp_type: MooseEnum + group_name: 'Partitioning' + options: x y z radial + description: | + Specifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial + - name: construct_node_list_from_side_list + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to generate nodesets from the sidesets (usually a good idea). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: 'Main' + options: 1 2 3 + description: | + The dimension of the mesh to be generated + - name: elem_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: EDGE EDGE2 EDGE3 EDGE4 QUAD QUAD4 QUAD8 QUAD9 TRI3 TRI6 HEX HEX8 HEX20 HEX27 TET4 TET10 PRISM6 PRISM15 PRISM18 PYRAMID5 PYRAMID13 PYRAMID14 + description: | + The type of element from libMesh to generate (default: linear element for requested dimension) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: gauss_lobatto_grid + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Grade mesh into boundaries according to Gauss-Lobatto quadrature spacing. + - name: ghosting_patch_size + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of nearest neighbors considered for ghosting purposes when 'iteration' patch update strategy is used. Default is 5 * patch_size. + - name: max_leaf_size + required: No + default: !!str 10 + cpp_type: unsigned int + group_name: + description: | + The maximum number of points in each leaf of the KDTree used in the nearest neighbor search. As the leaf size becomes larger,KDTree construction becomes faster but the nearest neighbor searchbecomes slower. + - name: nemesis + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + If nemesis=true and file=foo.e, actually reads foo.e.N.0, foo.e.N.1, ... foo.e.N.N-1, where N = # CPUs, with NemesisIO. + - name: nx + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the X direction + - name: ny + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Y direction + - name: nz + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Z direction + - name: parallel_type + required: No + default: !!str DEFAULT + cpp_type: MooseEnum + group_name: + options: DEFAULT REPLICATED DISTRIBUTED + description: | + DEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is specified on the command line REPLICATED: Always use libMesh::ReplicatedMesh DISTRIBUTED: Always use libMesh::DistributedMesh + - name: partitioner + required: No + default: !!str default + cpp_type: MooseEnum + group_name: 'Partitioning' + options: default metis parmetis linear centroid hilbert_sfc morton_sfc + description: | + Specifies a mesh partitioner to use when splitting the mesh for a parallel computation. + - name: patch_size + required: No + default: !!str 40 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of nodes to consider in the NearestNode neighborhood. + - name: patch_update_strategy + required: No + default: !!str never + cpp_type: MooseEnum + group_name: 'Advanced' + options: never always auto iteration + description: | + How often to update the geometric search 'patch'. The default is to never update it (which is the most efficient but could be a problem with lots of relative motion). 'always' will update the patch for all slave nodes at the beginning of every timestep which might be time consuming. 'auto' will attempt to determine at the start of which timesteps the patch for all slave nodes needs to be updated automatically.'iteration' updates the patch at every nonlinear iteration for a subset of slave nodes for which penetration is not detected. If there can be substantial relative motion between the master and slave surfaces during the nonlinear iterations within a timestep, it is advisable to use 'iteration' option to ensure accurate contact detection. + - name: type + required: No + default: !!str GeneratedMesh + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: xmax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper X Coordinate of the generated mesh + - name: xmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower X Coordinate of the generated mesh + - name: ymax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper Y Coordinate of the generated mesh + - name: ymin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower Y Coordinate of the generated mesh + - name: zmax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper Z Coordinate of the generated mesh + - name: zmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower Z Coordinate of the generated mesh + subblocks: + - name: /Mesh//ImageMesh + description: | + + parameters: + - name: allow_renumbering + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If allow_renumbering=false, node and element numbers are kept fixed until deletion + - name: bias_x + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the x-direction. + - name: bias_y + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the y-direction. + - name: bias_z + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the z-direction. + - name: cells_per_pixel + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The number of mesh cells per pixel, must be <=1 + - name: centroid_partitioner_direction + required: No + default: !!str + cpp_type: MooseEnum + group_name: 'Partitioning' + options: x y z radial + description: | + Specifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial + - name: construct_node_list_from_side_list + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to generate nodesets from the sidesets (usually a good idea). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: 'Main' + options: 1 2 3 + description: | + The dimension of the mesh to be generated + - name: elem_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: EDGE EDGE2 EDGE3 EDGE4 QUAD QUAD4 QUAD8 QUAD9 TRI3 TRI6 HEX HEX8 HEX20 HEX27 TET4 TET10 PRISM6 PRISM15 PRISM18 PYRAMID5 PYRAMID13 PYRAMID14 + description: | + The type of element from libMesh to generate (default: linear element for requested dimension) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + Name of single image file to extract mesh parameters from. If provided, a 2D mesh is created. + - name: file_base + required: No + default: !!str + cpp_type: FileNameNoExtension + group_name: + description: | + Image file base to open, use this option when a stack of images must be read (ignored if 'file' is given) + - name: file_range + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Range of images to analyze, used with 'file_base' (ignored if 'file' is given) + - name: file_suffix + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Suffix of the file to open, e.g. 'png' + - name: gauss_lobatto_grid + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Grade mesh into boundaries according to Gauss-Lobatto quadrature spacing. + - name: ghosting_patch_size + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of nearest neighbors considered for ghosting purposes when 'iteration' patch update strategy is used. Default is 5 * patch_size. + - name: max_leaf_size + required: No + default: !!str 10 + cpp_type: unsigned int + group_name: + description: | + The maximum number of points in each leaf of the KDTree used in the nearest neighbor search. As the leaf size becomes larger,KDTree construction becomes faster but the nearest neighbor searchbecomes slower. + - name: nemesis + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + If nemesis=true and file=foo.e, actually reads foo.e.N.0, foo.e.N.1, ... foo.e.N.N-1, where N = # CPUs, with NemesisIO. + - name: nx + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the X direction + - name: ny + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Y direction + - name: nz + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Z direction + - name: parallel_type + required: No + default: !!str DEFAULT + cpp_type: MooseEnum + group_name: + options: DEFAULT REPLICATED DISTRIBUTED + description: | + DEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is specified on the command line REPLICATED: Always use libMesh::ReplicatedMesh DISTRIBUTED: Always use libMesh::DistributedMesh + - name: partitioner + required: No + default: !!str default + cpp_type: MooseEnum + group_name: 'Partitioning' + options: default metis parmetis linear centroid hilbert_sfc morton_sfc + description: | + Specifies a mesh partitioner to use when splitting the mesh for a parallel computation. + - name: patch_size + required: No + default: !!str 40 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of nodes to consider in the NearestNode neighborhood. + - name: patch_update_strategy + required: No + default: !!str never + cpp_type: MooseEnum + group_name: 'Advanced' + options: never always auto iteration + description: | + How often to update the geometric search 'patch'. The default is to never update it (which is the most efficient but could be a problem with lots of relative motion). 'always' will update the patch for all slave nodes at the beginning of every timestep which might be time consuming. 'auto' will attempt to determine at the start of which timesteps the patch for all slave nodes needs to be updated automatically.'iteration' updates the patch at every nonlinear iteration for a subset of slave nodes for which penetration is not detected. If there can be substantial relative motion between the master and slave surfaces during the nonlinear iterations within a timestep, it is advisable to use 'iteration' option to ensure accurate contact detection. + - name: scale_to_one + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to scale the image so its max dimension is 1 + - name: type + required: No + default: !!str ImageMesh + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: xmax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper X Coordinate of the generated mesh + - name: xmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower X Coordinate of the generated mesh + - name: ymax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper Y Coordinate of the generated mesh + - name: ymin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower Y Coordinate of the generated mesh + - name: zmax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper Z Coordinate of the generated mesh + - name: zmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower Z Coordinate of the generated mesh + subblocks: + - name: /Mesh//MeshGeneratorMesh + description: | + + parameters: + - name: allow_renumbering + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If allow_renumbering=false, node and element numbers are kept fixed until deletion + - name: centroid_partitioner_direction + required: No + default: !!str + cpp_type: MooseEnum + group_name: 'Partitioning' + options: x y z radial + description: | + Specifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial + - name: construct_node_list_from_side_list + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to generate nodesets from the sidesets (usually a good idea). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: No + default: !!str 1 + cpp_type: MooseEnum + group_name: 'Advanced' + options: 1 2 3 + description: | + This is only required for certain mesh formats where the dimension of the mesh cannot be autodetected. In particular you must supply this for GMSH meshes. Note: This is completely ignored for ExodusII meshes! + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: final_generator + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the mesh generator output to use for the final Mesh + - name: ghosting_patch_size + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of nearest neighbors considered for ghosting purposes when 'iteration' patch update strategy is used. Default is 5 * patch_size. + - name: max_leaf_size + required: No + default: !!str 10 + cpp_type: unsigned int + group_name: + description: | + The maximum number of points in each leaf of the KDTree used in the nearest neighbor search. As the leaf size becomes larger,KDTree construction becomes faster but the nearest neighbor searchbecomes slower. + - name: nemesis + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + If nemesis=true and file=foo.e, actually reads foo.e.N.0, foo.e.N.1, ... foo.e.N.N-1, where N = # CPUs, with NemesisIO. + - name: parallel_type + required: No + default: !!str DEFAULT + cpp_type: MooseEnum + group_name: + options: DEFAULT REPLICATED DISTRIBUTED + description: | + DEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is specified on the command line REPLICATED: Always use libMesh::ReplicatedMesh DISTRIBUTED: Always use libMesh::DistributedMesh + - name: partitioner + required: No + default: !!str default + cpp_type: MooseEnum + group_name: 'Partitioning' + options: default metis parmetis linear centroid hilbert_sfc morton_sfc + description: | + Specifies a mesh partitioner to use when splitting the mesh for a parallel computation. + - name: patch_size + required: No + default: !!str 40 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of nodes to consider in the NearestNode neighborhood. + - name: patch_update_strategy + required: No + default: !!str never + cpp_type: MooseEnum + group_name: 'Advanced' + options: never always auto iteration + description: | + How often to update the geometric search 'patch'. The default is to never update it (which is the most efficient but could be a problem with lots of relative motion). 'always' will update the patch for all slave nodes at the beginning of every timestep which might be time consuming. 'auto' will attempt to determine at the start of which timesteps the patch for all slave nodes needs to be updated automatically.'iteration' updates the patch at every nonlinear iteration for a subset of slave nodes for which penetration is not detected. If there can be substantial relative motion between the master and slave surfaces during the nonlinear iterations within a timestep, it is advisable to use 'iteration' option to ensure accurate contact detection. + - name: type + required: No + default: !!str MeshGeneratorMesh + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh//PatternedMesh + description: | + + parameters: + - name: allow_renumbering + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If allow_renumbering=false, node and element numbers are kept fixed until deletion + - name: bottom_boundary + required: No + default: !!str bottom_boundary + cpp_type: BoundaryName + group_name: + description: | + name of the bottom (y) boundary + - name: centroid_partitioner_direction + required: No + default: !!str + cpp_type: MooseEnum + group_name: 'Partitioning' + options: x y z radial + description: | + Specifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial + - name: construct_node_list_from_side_list + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to generate nodesets from the sidesets (usually a good idea). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: No + default: !!str 1 + cpp_type: MooseEnum + group_name: 'Advanced' + options: 1 2 3 + description: | + This is only required for certain mesh formats where the dimension of the mesh cannot be autodetected. In particular you must supply this for GMSH meshes. Note: This is completely ignored for ExodusII meshes! + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: files + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the mesh files to read. They are automatically assigned ids starting with zero. + - name: ghosting_patch_size + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of nearest neighbors considered for ghosting purposes when 'iteration' patch update strategy is used. Default is 5 * patch_size. + - name: left_boundary + required: No + default: !!str left_boundary + cpp_type: BoundaryName + group_name: + description: | + name of the left (x) boundary + - name: max_leaf_size + required: No + default: !!str 10 + cpp_type: unsigned int + group_name: + description: | + The maximum number of points in each leaf of the KDTree used in the nearest neighbor search. As the leaf size becomes larger,KDTree construction becomes faster but the nearest neighbor searchbecomes slower. + - name: nemesis + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + If nemesis=true and file=foo.e, actually reads foo.e.N.0, foo.e.N.1, ... foo.e.N.N-1, where N = # CPUs, with NemesisIO. + - name: parallel_type + required: No + default: !!str DEFAULT + cpp_type: MooseEnum + group_name: + options: DEFAULT REPLICATED DISTRIBUTED + description: | + DEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is specified on the command line REPLICATED: Always use libMesh::ReplicatedMesh DISTRIBUTED: Always use libMesh::DistributedMesh + - name: partitioner + required: No + default: !!str default + cpp_type: MooseEnum + group_name: 'Partitioning' + options: default metis parmetis linear centroid hilbert_sfc morton_sfc + description: | + Specifies a mesh partitioner to use when splitting the mesh for a parallel computation. + - name: patch_size + required: No + default: !!str 40 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of nodes to consider in the NearestNode neighborhood. + - name: patch_update_strategy + required: No + default: !!str never + cpp_type: MooseEnum + group_name: 'Advanced' + options: never always auto iteration + description: | + How often to update the geometric search 'patch'. The default is to never update it (which is the most efficient but could be a problem with lots of relative motion). 'always' will update the patch for all slave nodes at the beginning of every timestep which might be time consuming. 'auto' will attempt to determine at the start of which timesteps the patch for all slave nodes needs to be updated automatically.'iteration' updates the patch at every nonlinear iteration for a subset of slave nodes for which penetration is not detected. If there can be substantial relative motion between the master and slave surfaces during the nonlinear iterations within a timestep, it is advisable to use 'iteration' option to ensure accurate contact detection. + - name: pattern + required: Yes + default: !!str + cpp_type: std::vector >, std::allocator > > > + group_name: + description: | + A double-indexed array starting with the upper-left corner + - name: right_boundary + required: No + default: !!str right_boundary + cpp_type: BoundaryName + group_name: + description: | + name of the right (x) boundary + - name: top_boundary + required: No + default: !!str top_boundary + cpp_type: BoundaryName + group_name: + description: | + name of the top (y) boundary + - name: type + required: No + default: !!str PatternedMesh + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: x_width + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The tile width in the x direction + - name: y_width + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The tile width in the y direction + - name: z_width + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The tile width in the z direction + subblocks: + - name: /Mesh//RinglebMesh + description: | + + parameters: + - name: allow_renumbering + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If allow_renumbering=false, node and element numbers are kept fixed until deletion + - name: centroid_partitioner_direction + required: No + default: !!str + cpp_type: MooseEnum + group_name: 'Partitioning' + options: x y z radial + description: | + Specifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial + - name: construct_node_list_from_side_list + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to generate nodesets from the sidesets (usually a good idea). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: No + default: !!str 1 + cpp_type: MooseEnum + group_name: 'Advanced' + options: 1 2 3 + description: | + This is only required for certain mesh formats where the dimension of the mesh cannot be autodetected. In particular you must supply this for GMSH meshes. Note: This is completely ignored for ExodusII meshes! + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: gamma + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Gamma parameter + - name: ghosting_patch_size + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of nearest neighbors considered for ghosting purposes when 'iteration' patch update strategy is used. Default is 5 * patch_size. + - name: inflow_bid + required: No + default: !!str 1 + cpp_type: short + group_name: + description: | + The boundary id to use for the inflow + - name: inner_wall_bid + required: No + default: !!str 2 + cpp_type: short + group_name: + description: | + The boundary id to use for the inner wall + - name: kmax + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Value of k on the inner wall. + - name: kmin + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Value of k on the outer wall. + - name: max_leaf_size + required: No + default: !!str 10 + cpp_type: unsigned int + group_name: + description: | + The maximum number of points in each leaf of the KDTree used in the nearest neighbor search. As the leaf size becomes larger,KDTree construction becomes faster but the nearest neighbor searchbecomes slower. + - name: n_extra_q_pts + required: Yes + default: !!str + cpp_type: int + group_name: + description: | + How many 'extra' points should be inserted in the final element *in addition to* the equispaced q points. + - name: nemesis + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + If nemesis=true and file=foo.e, actually reads foo.e.N.0, foo.e.N.1, ... foo.e.N.N-1, where N = # CPUs, with NemesisIO. + - name: num_k_pts + required: Yes + default: !!str + cpp_type: int + group_name: + description: | + How many points in the range k=(kmin, kmax). + - name: num_q_pts + required: Yes + default: !!str + cpp_type: int + group_name: + description: | + How many points to discretize the range q = (0.5, k) into. + - name: outer_wall_bid + required: No + default: !!str 4 + cpp_type: short + group_name: + description: | + The boundary id to use for the outer wall + - name: outflow_bid + required: No + default: !!str 3 + cpp_type: short + group_name: + description: | + The boundary id to use for the outflow + - name: parallel_type + required: No + default: !!str DEFAULT + cpp_type: MooseEnum + group_name: + options: DEFAULT REPLICATED DISTRIBUTED + description: | + DEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is specified on the command line REPLICATED: Always use libMesh::ReplicatedMesh DISTRIBUTED: Always use libMesh::DistributedMesh + - name: partitioner + required: No + default: !!str default + cpp_type: MooseEnum + group_name: 'Partitioning' + options: default metis parmetis linear centroid hilbert_sfc morton_sfc + description: | + Specifies a mesh partitioner to use when splitting the mesh for a parallel computation. + - name: patch_size + required: No + default: !!str 40 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of nodes to consider in the NearestNode neighborhood. + - name: patch_update_strategy + required: No + default: !!str never + cpp_type: MooseEnum + group_name: 'Advanced' + options: never always auto iteration + description: | + How often to update the geometric search 'patch'. The default is to never update it (which is the most efficient but could be a problem with lots of relative motion). 'always' will update the patch for all slave nodes at the beginning of every timestep which might be time consuming. 'auto' will attempt to determine at the start of which timesteps the patch for all slave nodes needs to be updated automatically.'iteration' updates the patch at every nonlinear iteration for a subset of slave nodes for which penetration is not detected. If there can be substantial relative motion between the master and slave surfaces during the nonlinear iterations within a timestep, it is advisable to use 'iteration' option to ensure accurate contact detection. + - name: triangles + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, all the quadrilateral elements will be split into triangles + - name: type + required: No + default: !!str RinglebMesh + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh//SpiralAnnularMesh + description: | + + parameters: + - name: allow_renumbering + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If allow_renumbering=false, node and element numbers are kept fixed until deletion + - name: centroid_partitioner_direction + required: No + default: !!str + cpp_type: MooseEnum + group_name: 'Partitioning' + options: x y z radial + description: | + Specifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial + - name: construct_node_list_from_side_list + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to generate nodesets from the sidesets (usually a good idea). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cylinder_bid + required: No + default: !!str 1 + cpp_type: short + group_name: + description: | + The boundary id to use for the cylinder (inner circle) + - name: dim + required: No + default: !!str 1 + cpp_type: MooseEnum + group_name: 'Advanced' + options: 1 2 3 + description: | + This is only required for certain mesh formats where the dimension of the mesh cannot be autodetected. In particular you must supply this for GMSH meshes. Note: This is completely ignored for ExodusII meshes! + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: exterior_bid + required: No + default: !!str 2 + cpp_type: short + group_name: + description: | + The boundary id to use for the exterior (outer circle) + - name: ghosting_patch_size + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of nearest neighbors considered for ghosting purposes when 'iteration' patch update strategy is used. Default is 5 * patch_size. + - name: initial_delta_r + required: No + default: !!str + cpp_type: double + group_name: + description: | + Width of the initial layer of elements around the cylinder.This number should be approximately 2 * pi * inner_radius / nodes_per_ring to ensure that the initial layer of elements is almost equilateral + - name: inner_radius + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The size of the inner circle. + - name: max_leaf_size + required: No + default: !!str 10 + cpp_type: unsigned int + group_name: + description: | + The maximum number of points in each leaf of the KDTree used in the nearest neighbor search. As the leaf size becomes larger,KDTree construction becomes faster but the nearest neighbor searchbecomes slower. + - name: nemesis + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + If nemesis=true and file=foo.e, actually reads foo.e.N.0, foo.e.N.1, ... foo.e.N.N-1, where N = # CPUs, with NemesisIO. + - name: nodes_per_ring + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + Number of nodes on each ring. + - name: num_rings + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of rings. + - name: outer_radius + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The size of the outer circle. Logically, it has to be greater than inner_radius + - name: parallel_type + required: No + default: !!str DEFAULT + cpp_type: MooseEnum + group_name: + options: DEFAULT REPLICATED DISTRIBUTED + description: | + DEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is specified on the command line REPLICATED: Always use libMesh::ReplicatedMesh DISTRIBUTED: Always use libMesh::DistributedMesh + - name: partitioner + required: No + default: !!str default + cpp_type: MooseEnum + group_name: 'Partitioning' + options: default metis parmetis linear centroid hilbert_sfc morton_sfc + description: | + Specifies a mesh partitioner to use when splitting the mesh for a parallel computation. + - name: patch_size + required: No + default: !!str 40 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of nodes to consider in the NearestNode neighborhood. + - name: patch_update_strategy + required: No + default: !!str never + cpp_type: MooseEnum + group_name: 'Advanced' + options: never always auto iteration + description: | + How often to update the geometric search 'patch'. The default is to never update it (which is the most efficient but could be a problem with lots of relative motion). 'always' will update the patch for all slave nodes at the beginning of every timestep which might be time consuming. 'auto' will attempt to determine at the start of which timesteps the patch for all slave nodes needs to be updated automatically.'iteration' updates the patch at every nonlinear iteration for a subset of slave nodes for which penetration is not detected. If there can be substantial relative motion between the master and slave surfaces during the nonlinear iterations within a timestep, it is advisable to use 'iteration' option to ensure accurate contact detection. + - name: type + required: No + default: !!str SpiralAnnularMesh + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_tri6 + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Generate mesh of TRI6 elements instead of TRI3 elements. + subblocks: + - name: /Mesh//StitchedMesh + description: | + + parameters: + - name: allow_renumbering + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If allow_renumbering=false, node and element numbers are kept fixed until deletion + - name: centroid_partitioner_direction + required: No + default: !!str + cpp_type: MooseEnum + group_name: 'Partitioning' + options: x y z radial + description: | + Specifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial + - name: clear_stitched_boundary_ids + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to erase the boundary IDs after they've been used for stitching. + - name: construct_node_list_from_side_list + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to generate nodesets from the sidesets (usually a good idea). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: No + default: !!str 1 + cpp_type: MooseEnum + group_name: 'Advanced' + options: 1 2 3 + description: | + This is only required for certain mesh formats where the dimension of the mesh cannot be autodetected. In particular you must supply this for GMSH meshes. Note: This is completely ignored for ExodusII meshes! + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: files + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the mesh files to read. These mesh files will be 'stitched' into the current mesh in this order. + - name: ghosting_patch_size + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of nearest neighbors considered for ghosting purposes when 'iteration' patch update strategy is used. Default is 5 * patch_size. + - name: max_leaf_size + required: No + default: !!str 10 + cpp_type: unsigned int + group_name: + description: | + The maximum number of points in each leaf of the KDTree used in the nearest neighbor search. As the leaf size becomes larger,KDTree construction becomes faster but the nearest neighbor searchbecomes slower. + - name: nemesis + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + If nemesis=true and file=foo.e, actually reads foo.e.N.0, foo.e.N.1, ... foo.e.N.N-1, where N = # CPUs, with NemesisIO. + - name: parallel_type + required: No + default: !!str DEFAULT + cpp_type: MooseEnum + group_name: + options: DEFAULT REPLICATED DISTRIBUTED + description: | + DEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is specified on the command line REPLICATED: Always use libMesh::ReplicatedMesh DISTRIBUTED: Always use libMesh::DistributedMesh + - name: partitioner + required: No + default: !!str default + cpp_type: MooseEnum + group_name: 'Partitioning' + options: default metis parmetis linear centroid hilbert_sfc morton_sfc + description: | + Specifies a mesh partitioner to use when splitting the mesh for a parallel computation. + - name: patch_size + required: No + default: !!str 40 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of nodes to consider in the NearestNode neighborhood. + - name: patch_update_strategy + required: No + default: !!str never + cpp_type: MooseEnum + group_name: 'Advanced' + options: never always auto iteration + description: | + How often to update the geometric search 'patch'. The default is to never update it (which is the most efficient but could be a problem with lots of relative motion). 'always' will update the patch for all slave nodes at the beginning of every timestep which might be time consuming. 'auto' will attempt to determine at the start of which timesteps the patch for all slave nodes needs to be updated automatically.'iteration' updates the patch at every nonlinear iteration for a subset of slave nodes for which penetration is not detected. If there can be substantial relative motion between the master and slave surfaces during the nonlinear iterations within a timestep, it is advisable to use 'iteration' option to ensure accurate contact detection. + - name: stitch_boundaries + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Pairs of boundary names (one after the other) to stitch together for each step. + - name: type + required: No + default: !!str StitchedMesh + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh//TiledMesh + description: | + + parameters: + - name: allow_renumbering + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If allow_renumbering=false, node and element numbers are kept fixed until deletion + - name: back_boundary + required: No + default: !!str back_boundary + cpp_type: BoundaryName + group_name: + description: | + name of the back (z) boundary + - name: bottom_boundary + required: No + default: !!str bottom_boundary + cpp_type: BoundaryName + group_name: + description: | + name of the bottom (y) boundary + - name: centroid_partitioner_direction + required: No + default: !!str + cpp_type: MooseEnum + group_name: 'Partitioning' + options: x y z radial + description: | + Specifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial + - name: construct_node_list_from_side_list + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to generate nodesets from the sidesets (usually a good idea). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: No + default: !!str 1 + cpp_type: MooseEnum + group_name: 'Advanced' + options: 1 2 3 + description: | + This is only required for certain mesh formats where the dimension of the mesh cannot be autodetected. In particular you must supply this for GMSH meshes. Note: This is completely ignored for ExodusII meshes! + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: file + required: Yes + default: !!str + cpp_type: MeshFileName + group_name: + description: | + The name of the mesh file to read + - name: front_boundary + required: No + default: !!str front_boundary + cpp_type: BoundaryName + group_name: + description: | + name of the front (z) boundary + - name: ghosting_patch_size + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of nearest neighbors considered for ghosting purposes when 'iteration' patch update strategy is used. Default is 5 * patch_size. + - name: left_boundary + required: No + default: !!str left_boundary + cpp_type: BoundaryName + group_name: + description: | + name of the left (x) boundary + - name: max_leaf_size + required: No + default: !!str 10 + cpp_type: unsigned int + group_name: + description: | + The maximum number of points in each leaf of the KDTree used in the nearest neighbor search. As the leaf size becomes larger,KDTree construction becomes faster but the nearest neighbor searchbecomes slower. + - name: nemesis + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + If nemesis=true and file=foo.e, actually reads foo.e.N.0, foo.e.N.1, ... foo.e.N.N-1, where N = # CPUs, with NemesisIO. + - name: parallel_type + required: No + default: !!str DEFAULT + cpp_type: MooseEnum + group_name: + options: DEFAULT REPLICATED DISTRIBUTED + description: | + DEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is specified on the command line REPLICATED: Always use libMesh::ReplicatedMesh DISTRIBUTED: Always use libMesh::DistributedMesh + - name: partitioner + required: No + default: !!str default + cpp_type: MooseEnum + group_name: 'Partitioning' + options: default metis parmetis linear centroid hilbert_sfc morton_sfc + description: | + Specifies a mesh partitioner to use when splitting the mesh for a parallel computation. + - name: patch_size + required: No + default: !!str 40 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of nodes to consider in the NearestNode neighborhood. + - name: patch_update_strategy + required: No + default: !!str never + cpp_type: MooseEnum + group_name: 'Advanced' + options: never always auto iteration + description: | + How often to update the geometric search 'patch'. The default is to never update it (which is the most efficient but could be a problem with lots of relative motion). 'always' will update the patch for all slave nodes at the beginning of every timestep which might be time consuming. 'auto' will attempt to determine at the start of which timesteps the patch for all slave nodes needs to be updated automatically.'iteration' updates the patch at every nonlinear iteration for a subset of slave nodes for which penetration is not detected. If there can be substantial relative motion between the master and slave surfaces during the nonlinear iterations within a timestep, it is advisable to use 'iteration' option to ensure accurate contact detection. + - name: right_boundary + required: No + default: !!str right_boundary + cpp_type: BoundaryName + group_name: + description: | + name of the right (x) boundary + - name: top_boundary + required: No + default: !!str top_boundary + cpp_type: BoundaryName + group_name: + description: | + name of the top (y) boundary + - name: type + required: No + default: !!str TiledMesh + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: x_tiles + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of tiles to stitch together (left to right) in the x-direction + - name: x_width + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The tile width in the x direction + - name: y_tiles + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of tiles to stitch together (top to bottom) in the y-direction + - name: y_width + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The tile width in the y direction + - name: z_tiles + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of tiles to stitch together (front to back) in the z-direction + - name: z_width + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The tile width in the z direction + subblocks: + - name: /Mesh/AllSideSetsByNormalsGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: fixed_normal + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This Boolean determines whether we fix our normal or allow it to vary to "paint" around curves + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: replace + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, replace the old sidesets. If false, the current sidesets (if any) will be preserved. + - name: type + required: No + default: !!str AllSideSetsByNormalsGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variance + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + The variance [0.0 - 1.0] allowed when comparing normals + subblocks: + - name: /Mesh/AnnularMeshGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dmax + required: No + default: !!str 360 + cpp_type: double + group_name: + description: | + Maximum angle, measured in degrees anticlockwise from x axis. If dmin=0 and dmax=360 an annular mesh is created. Otherwise, only a sector of an annulus is created + - name: dmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Minimum degree, measured in degrees anticlockwise from x axis + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: growth_r + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The ratio of radial sizes of successive rings of elements + - name: nr + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the radial direction + - name: nt + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + Number of elements in the angular direction + - name: quad_subdomain_id + required: No + default: !!str 0 + cpp_type: unsigned short + group_name: + description: | + The subdomain ID given to the QUAD4 elements + - name: rmax + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Outer radius + - name: rmin + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Inner radius. If rmin=0 then a disc mesh (with no central hole) will be created. + - name: tmax + required: No + default: !!str 6.28319 + cpp_type: double + group_name: + description: | + Maximum angle, measured in radians anticlockwise from x axis. If tmin=0 and tmax=2Pi an annular mesh is created. Otherwise, only a sector of an annulus is created + - name: tmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Minimum angle, measured in radians anticlockwise from x axis + - name: tri_subdomain_id + required: No + default: !!str 1 + cpp_type: unsigned short + group_name: + description: | + The subdomain ID given to the TRI3 elements (these exist only if rmin=0, and they exist at the center of the disc + - name: type + required: No + default: !!str AnnularMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/BlockDeletionGenerator + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + The block to be deleted + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_boundary + required: No + default: !!str + cpp_type: BoundaryName + group_name: + description: | + optional boundary name to assign to the cut surface + - name: type + required: No + default: !!str BlockDeletionGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/BoundingBoxNodeSetGenerator + description: | + + parameters: + - name: bottom_left + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between) of the box to select the nodes. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: location + required: No + default: !!str INSIDE + cpp_type: MooseEnum + group_name: + options: INSIDE OUTSIDE + description: | + Control of where the nodeset is to be set + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the nodeset to create + - name: top_right + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between) of the box to select the nodes. + - name: type + required: No + default: !!str BoundingBoxNodeSetGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/BreakBoundaryOnSubdomainGenerator + description: | + + parameters: + - name: boundaries + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Boundaries to be broken. Default means to break all boundaries + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: type + required: No + default: !!str BreakBoundaryOnSubdomainGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/BreakMeshByBlockGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: interface_name + required: No + default: !!str interface + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + the name of the new interface. Cannot be used whit `split_interface=true` + - name: split_interface + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, it create a different interface for each block pair. + - name: type + required: No + default: !!str BreakMeshByBlockGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/CartesianMeshGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: 'Main' + options: 1 2 3 + description: | + The dimension of the mesh to be generated + - name: dx + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Intervals in the X direction + - name: dy + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Intervals in the Y direction (required when dim>1 otherwise ignored) + - name: dz + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Intervals in the Z direction (required when dim>2 otherwise ignored) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ix + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Number of grids in all intervals in the X direction (default to all one) + - name: iy + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Number of grids in all intervals in the Y direction (default to all one) + - name: iz + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Number of grids in all intervals in the Z direction (default to all one) + - name: subdomain_id + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Block IDs (default to all zero) + - name: type + required: No + default: !!str CartesianMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/CombinerGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: inputs + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The input MeshGenerators. This can either be N generators or 1 generator. If only 1 is given then 'positions' must also be given. + - name: positions + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The (optional) position of each given mesh. If N 'inputs' were given then this must either be left blank or N positions must be given. If 1 input was given then this MUST be provided. + - name: type + required: No + default: !!str CombinerGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/ConcentricCircleMeshGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: has_outer_square + required: Yes + default: !!str + cpp_type: bool + group_name: + description: | + It determines if meshes for a outer square are added to concentric circle meshes. + - name: num_sectors + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + num_sectors % 2 = 0, num_sectors > 0Number of azimuthal sectors in each quadrant'num_sectors' must be an even number. + - name: pitch + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The enclosing square can be added to the completed concentric circle mesh.Elements are quad meshes. + - name: portion + required: No + default: !!str full + cpp_type: MooseEnum + group_name: + options: full top_right top_left bottom_left bottom_right right_half left_half top_half bottom_half + description: | + Control of which part of mesh is created + - name: preserve_volumes + required: Yes + default: !!str + cpp_type: bool + group_name: + description: | + Volume of concentric circles can be preserved using this function. + - name: radii + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Radii of major concentric circles + - name: rings + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Number of rings in each circle or in the enclosing square + - name: smoothing_max_it + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of Laplacian smoothing iterations + - name: type + required: No + default: !!str ConcentricCircleMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/DistributedRectilinearMeshGenerator + description: | + + parameters: + - name: apply_element_weight + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Indicate if we are going to apply element weights to partitioners + - name: apply_side_weight + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Indicate if we are going to apply side weights to partitioners + - name: bias_x + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the x-direction. + - name: bias_y + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the y-direction. + - name: bias_z + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the z-direction. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: 'Main' + options: 1 2 3 + description: | + The dimension of the mesh to be generated + - name: elem_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: EDGE EDGE2 EDGE3 EDGE4 QUAD QUAD4 QUAD8 QUAD9 TRI3 TRI6 HEX HEX8 HEX20 HEX27 TET4 TET10 PRISM6 PRISM15 PRISM18 PYRAMID5 PYRAMID13 PYRAMID14 + description: | + The type of element from libMesh to generate (default: linear element for requested dimension) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: num_cores_for_partition + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Number of cores for partitioning the graph + - name: num_cores_per_compute_node + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of cores per compute node for hierarchical partitioning + - name: nx + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the X direction + - name: ny + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Y direction + - name: nz + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Z direction + - name: part_package + required: No + default: !!str parmetis + cpp_type: MooseEnum + group_name: + options: parmetis ptscotch chaco party hierarch + description: | + The external package is used for partitioning the mesh via PETSc + - name: type + required: No + default: !!str DistributedRectilinearMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: xmax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper X Coordinate of the generated mesh + - name: xmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower X Coordinate of the generated mesh + - name: ymax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper Y Coordinate of the generated mesh + - name: ymin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower Y Coordinate of the generated mesh + - name: zmax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper Z Coordinate of the generated mesh + - name: zmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower Z Coordinate of the generated mesh + subblocks: + - name: /Mesh/ElementGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: elem_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: EDGE2 EDGE3 EDGE4 QUAD4 QUAD8 QUAD9 TRI3 TRI6 HEX8 HEX20 HEX27 TET4 TET10 PRISM6 PRISM15 PRISM18 PYRAMID5 PYRAMID13 PYRAMID14 + description: | + The type of element from libMesh to generate + - name: element_connectivity + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + List of nodes to use for each element + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: No + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + Optional input mesh to add the elements to + - name: nodal_positions + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The x,y,z positions of the nodes + - name: type + required: No + default: !!str ElementGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/ElementSubdomainIDGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: element_ids + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + New element IDs of all elements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: subdomain_ids + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + New subdomain IDs of all elements + - name: type + required: No + default: !!str ElementSubdomainIDGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/ExtraNodesetGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: coord + required: No + default: !!str + cpp_type: std::vector >, std::allocator > > > + group_name: + description: | + The nodes with coordinates you want to be in the nodeset. Separate multple coords with ';' (Either this parameter or "nodes" must be supplied). + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the boundary to create + - name: nodes + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The nodes you want to be in the nodeset (Either this parameter or "coord" must be supplied). + - name: tolerance + required: No + default: !!str 1e-06 + cpp_type: double + group_name: + description: | + The tolerance in which two nodes are considered identical + - name: type + required: No + default: !!str ExtraNodesetGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/FancyExtruderGenerator + description: | + + parameters: + - name: bottom_boundary + required: No + default: !!str + cpp_type: short + group_name: + description: | + The boundary ID to set on the bottom boundary. If omitted one will be generated. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direction + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + A vector that points in the direction to extrude (note, this will be normalized internally - so don't worry about it here) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: heights + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The height of each elevation + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh to extrude + - name: num_layers + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The number of layers for each elevation - must be num_elevations in length! + - name: subdomain_swaps + required: No + default: !!str + cpp_type: std::vector >, std::allocator > > > + group_name: + description: | + For each row, every two entries are interpreted as a pair of 'from' and 'to' to remap the subdomains for that elevation + - name: top_boundary + required: No + default: !!str + cpp_type: short + group_name: + description: | + The boundary ID to set on the top boundary. If ommitted one will be generated. + - name: type + required: No + default: !!str FancyExtruderGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/FileMeshGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: exodus_extra_element_integers + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The variable names in the mesh file for loading extra element integers + - name: file + required: Yes + default: !!str + cpp_type: MeshFileName + group_name: + description: | + The filename to read. + - name: type + required: No + default: !!str FileMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/GeneratedMeshGenerator + description: | + + parameters: + - name: bias_x + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the x-direction. + - name: bias_y + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the y-direction. + - name: bias_z + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the z-direction. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: 'Main' + options: 1 2 3 + description: | + The dimension of the mesh to be generated + - name: elem_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: EDGE EDGE2 EDGE3 EDGE4 QUAD QUAD4 QUAD8 QUAD9 TRI3 TRI6 HEX HEX8 HEX20 HEX27 TET4 TET10 PRISM6 PRISM15 PRISM18 PYRAMID5 PYRAMID13 PYRAMID14 + description: | + The type of element from libMesh to generate (default: linear element for requested dimension) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_element_integers + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Names of extra element integers + - name: gauss_lobatto_grid + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Grade mesh into boundaries according to Gauss-Lobatto quadrature spacing. + - name: nx + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the X direction + - name: ny + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Y direction + - name: nz + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Z direction + - name: type + required: No + default: !!str GeneratedMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: xmax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper X Coordinate of the generated mesh + - name: xmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower X Coordinate of the generated mesh + - name: ymax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper Y Coordinate of the generated mesh + - name: ymin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower Y Coordinate of the generated mesh + - name: zmax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper Z Coordinate of the generated mesh + - name: zmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower Z Coordinate of the generated mesh + subblocks: + - name: /Mesh/ImageMeshGenerator + description: | + + parameters: + - name: bias_x + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the x-direction. + - name: bias_y + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the y-direction. + - name: bias_z + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the z-direction. + - name: cells_per_pixel + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The number of mesh cells per pixel, must be <=1 + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: 'Main' + options: 1 2 3 + description: | + The dimension of the mesh to be generated + - name: elem_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: EDGE EDGE2 EDGE3 EDGE4 QUAD QUAD4 QUAD8 QUAD9 TRI3 TRI6 HEX HEX8 HEX20 HEX27 TET4 TET10 PRISM6 PRISM15 PRISM18 PYRAMID5 PYRAMID13 PYRAMID14 + description: | + The type of element from libMesh to generate (default: linear element for requested dimension) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_element_integers + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Names of extra element integers + - name: file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + Name of single image file to extract mesh parameters from. If provided, a 2D mesh is created. + - name: file_base + required: No + default: !!str + cpp_type: FileNameNoExtension + group_name: + description: | + Image file base to open, use this option when a stack of images must be read (ignored if 'file' is given) + - name: file_range + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Range of images to analyze, used with 'file_base' (ignored if 'file' is given) + - name: file_suffix + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Suffix of the file to open, e.g. 'png' + - name: gauss_lobatto_grid + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Grade mesh into boundaries according to Gauss-Lobatto quadrature spacing. + - name: nx + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the X direction + - name: ny + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Y direction + - name: nz + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Z direction + - name: scale_to_one + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to scale the image so its max dimension is 1 + - name: type + required: No + default: !!str ImageMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: xmax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper X Coordinate of the generated mesh + - name: xmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower X Coordinate of the generated mesh + - name: ymax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper Y Coordinate of the generated mesh + - name: ymin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower Y Coordinate of the generated mesh + - name: zmax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper Z Coordinate of the generated mesh + - name: zmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower Z Coordinate of the generated mesh + subblocks: + - name: /Mesh/ImageSubdomainGenerator + description: | + + parameters: + - name: component + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The image RGB-component to return, leaving this blank will result in a greyscale value for the image to be created. The component number is zero based, i.e. 0 returns the first (RED) component of the image. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dimensions + required: No + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + x,y,z dimensions of the image (defaults to mesh dimensions) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + Name of single image file to extract mesh parameters from. If provided, a 2D mesh is created. + - name: file_base + required: No + default: !!str + cpp_type: FileNameNoExtension + group_name: + description: | + Image file base to open, use this option when a stack of images must be read (ignored if 'file' is given) + - name: file_range + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Range of images to analyze, used with 'file_base' (ignored if 'file' is given) + - name: file_suffix + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Suffix of the file to open, e.g. 'png' + - name: flip_x + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Flip' + description: | + Flip the image along the x-axis + - name: flip_y + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Flip' + description: | + Flip the image along the y-axis + - name: flip_z + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Flip' + description: | + Flip the image along the z-axis + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: lower_value + required: No + default: !!str 0 + cpp_type: double + group_name: 'Threshold' + description: | + The value to set for data less than the threshold value + - name: origin + required: No + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + Origin of the image (defaults to mesh origin) + - name: scale + required: No + default: !!str 1 + cpp_type: double + group_name: 'Rescale' + description: | + Multiplier to apply to all pixel values; occurs after shifting + - name: shift + required: No + default: !!str 0 + cpp_type: double + group_name: 'Rescale' + description: | + Value to add to all pixels; occurs prior to scaling + - name: threshold + required: No + default: !!str + cpp_type: double + group_name: 'Threshold' + description: | + The threshold value + - name: type + required: No + default: !!str ImageSubdomainGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: upper_value + required: No + default: !!str 1 + cpp_type: double + group_name: 'Threshold' + description: | + The value to set for data greater than the threshold value + subblocks: + - name: /Mesh/LowerDBlockFromSidesetGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_block_id + required: No + default: !!str + cpp_type: unsigned short + group_name: + description: | + The lower dimensional block id to create + - name: new_block_name + required: No + default: !!str + cpp_type: SubdomainName + group_name: + description: | + The lower dimensional block name to create (optional) + - name: sidesets + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The sidesets from which to create the new block + - name: type + required: No + default: !!str LowerDBlockFromSidesetGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/MeshCollectionGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: inputs + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The input MeshGenerators. + - name: type + required: No + default: !!str MeshCollectionGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/MeshExtruderGenerator + description: | + + parameters: + - name: bottom_sideset + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The boundary that will be applied to the bottom of the extruded mesh + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: existing_subdomains + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The subdomains that will be remapped for specific layers + - name: extrusion_vector + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The direction and length of the extrusion + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + the mesh we want to extrude + - name: layers + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The layers where the "existing_subdomain" will be remapped to new ids + - name: new_ids + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of new ids, This list should be either length "existing_subdomains" or "existing_subdomains" * layers + - name: num_layers + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + The number of layers in the extruded mesh + - name: top_sideset + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The boundary that will be to the top of the extruded mesh + - name: type + required: No + default: !!str MeshExtruderGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/MeshSideSetGenerator + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + Subdomain id to set for the new elements along the boundary + - name: block_name + required: No + default: !!str + cpp_type: SubdomainName + group_name: + description: | + Subdomain name to set for the new elements along the boundary (optional) + - name: boundaries + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the boundary to mesh + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: type + required: No + default: !!str MeshSideSetGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/OrientedSubdomainBoundingBoxGenerator + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + Subdomain id to set for inside/outside the bounding box + - name: center + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The center (many people spell this 'center') of the box. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: height + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The height of the box + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: length + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The length of the box + - name: length_direction + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The direction along which the length is oriented (must be perpendicular to width_direction). + - name: location + required: No + default: !!str INSIDE + cpp_type: MooseEnum + group_name: + options: INSIDE OUTSIDE + description: | + Control of where the subdomain id is to be set + - name: type + required: No + default: !!str OrientedSubdomainBoundingBoxGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: width + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The width of the box + - name: width_direction + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The direction along which the width is oriented. + subblocks: + - name: /Mesh/ParsedGenerateSideset + description: | + + parameters: + - name: combinatorial_geometry + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Function expression encoding a combinatorial geometry + - name: constant_expressions + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of values for the constants in constant_names (can be an FParser expression) + - name: constant_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of constants used in the parsed function (use this for kB etc.) + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: disable_fpoptimizer + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Disable the function parser algebraic optimizer + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_ad_cache + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable cacheing of function derivatives for faster startup time + - name: enable_auto_optimize + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable automatic immediate optimization of derivatives + - name: enable_jit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable just-in-time compilation of function expressions for faster evaluation + - name: evalerror_behavior + required: No + default: !!str nan + cpp_type: MooseEnum + group_name: 'Advanced' + options: nan nan_warning error exception + description: | + What to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exception + - name: fail_on_evalerror + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Fail fatally if a function evaluation returns an error code (otherwise just pass on NaN) + - name: fixed_normal + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This Boolean determines whether we fix our normal or allow it to vary to "paint" around curves + - name: included_subdomain_ids + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + A set of subdomain ids whose sides will be included in the new sidesets + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_sideset_name + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The name of the new sideset + - name: normal + required: No + default: !!str 0 0 0 + cpp_type: libMesh::Point + group_name: + description: | + If provided specifies the normal vector on sides that are added to the new + - name: replace + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, replace the old sidesets. If false, the current sidesets (if any) will be preserved. + - name: type + required: No + default: !!str ParsedGenerateSideset + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variance + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + The variance [0.0 - 1.0] allowed when comparing normals + subblocks: + - name: /Mesh/ParsedSubdomainMeshGenerator + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + Subdomain id to set for inside of the combinatorial + - name: block_name + required: No + default: !!str + cpp_type: SubdomainName + group_name: + description: | + Subdomain name to set for inside of the combinatorial + - name: combinatorial_geometry + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Function expression encoding a combinatorial geometry + - name: constant_expressions + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of values for the constants in constant_names (can be an FParser expression) + - name: constant_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of constants used in the parsed function (use this for kB etc.) + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: disable_fpoptimizer + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Disable the function parser algebraic optimizer + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_ad_cache + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable cacheing of function derivatives for faster startup time + - name: enable_auto_optimize + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable automatic immediate optimization of derivatives + - name: enable_jit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable just-in-time compilation of function expressions for faster evaluation + - name: evalerror_behavior + required: No + default: !!str nan + cpp_type: MooseEnum + group_name: 'Advanced' + options: nan nan_warning error exception + description: | + What to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exception + - name: excluded_subdomain_ids + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + A set of subdomain ids that will not changed even if they are inside/outside the combinatorial geometry + - name: fail_on_evalerror + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Fail fatally if a function evaluation returns an error code (otherwise just pass on NaN) + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: type + required: No + default: !!str ParsedSubdomainMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/Partitioner + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Mesh/Partitioner/ + description: | + + parameters: + subblocks: + - name: /Mesh/Partitioner//BlockWeightedPartitioner + description: | + + parameters: + - name: apply_element_weight + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicate if we are going to apply element weights to partitioners + - name: apply_side_weight + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Indicate if we are going to apply side weights to partitioners + - name: block + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: num_cores_per_compute_node + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of cores per compute node for hierarchical partitioning + - name: part_package + required: No + default: !!str parmetis + cpp_type: MooseEnum + group_name: + options: parmetis ptscotch chaco party hierarch + description: | + The external package is used for partitioning the mesh via PETSc + - name: type + required: No + default: !!str BlockWeightedPartitioner + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: weight + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of weights (integer) that specify how heavy each block is + subblocks: + - name: /Mesh/Partitioner//GridPartitioner + description: | + + parameters: + - name: allow_renumbering + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If allow_renumbering=false, node and element numbers are kept fixed until deletion + - name: bias_x + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the x-direction. + - name: bias_y + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the y-direction. + - name: bias_z + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the z-direction. + - name: centroid_partitioner_direction + required: No + default: !!str + cpp_type: MooseEnum + group_name: 'Partitioning' + options: x y z radial + description: | + Specifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial + - name: construct_node_list_from_side_list + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to generate nodesets from the sidesets (usually a good idea). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: gauss_lobatto_grid + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Grade mesh into boundaries according to Gauss-Lobatto quadrature spacing. + - name: ghosting_patch_size + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of nearest neighbors considered for ghosting purposes when 'iteration' patch update strategy is used. Default is 5 * patch_size. + - name: max_leaf_size + required: No + default: !!str 10 + cpp_type: unsigned int + group_name: + description: | + The maximum number of points in each leaf of the KDTree used in the nearest neighbor search. As the leaf size becomes larger,KDTree construction becomes faster but the nearest neighbor searchbecomes slower. + - name: nemesis + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + If nemesis=true and file=foo.e, actually reads foo.e.N.0, foo.e.N.1, ... foo.e.N.N-1, where N = # CPUs, with NemesisIO. + - name: nx + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the X direction + - name: ny + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Y direction + - name: nz + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Z direction + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DEFAULT REPLICATED DISTRIBUTED + description: | + DEFAULT: Use libMesh::ReplicatedMesh unless --distributed-mesh is specified on the command line REPLICATED: Always use libMesh::ReplicatedMesh DISTRIBUTED: Always use libMesh::DistributedMesh + - name: partitioner + required: No + default: !!str linear + cpp_type: MooseEnum + group_name: 'Partitioning' + options: default metis parmetis linear centroid hilbert_sfc morton_sfc + description: | + Specifies a mesh partitioner to use when splitting the mesh for a parallel computation. + - name: patch_size + required: No + default: !!str 40 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of nodes to consider in the NearestNode neighborhood. + - name: patch_update_strategy + required: No + default: !!str never + cpp_type: MooseEnum + group_name: 'Advanced' + options: never always auto iteration + description: | + How often to update the geometric search 'patch'. The default is to never update it (which is the most efficient but could be a problem with lots of relative motion). 'always' will update the patch for all slave nodes at the beginning of every timestep which might be time consuming. 'auto' will attempt to determine at the start of which timesteps the patch for all slave nodes needs to be updated automatically.'iteration' updates the patch at every nonlinear iteration for a subset of slave nodes for which penetration is not detected. If there can be substantial relative motion between the master and slave surfaces during the nonlinear iterations within a timestep, it is advisable to use 'iteration' option to ensure accurate contact detection. + - name: type + required: No + default: !!str GridPartitioner + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/Partitioner//LibmeshPartitioner + description: | + + parameters: + - name: blocks + required: No + default: !!str + cpp_type: std::vector >, std::allocator > > > + group_name: + description: | + Block is seperated by ;, and partition mesh block by block. + - name: centroid_partitioner_direction + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z radial + description: | + Specifies the sort direction if using the centroid partitioner. Available options: x, y, z, radial + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: partitioner + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: metis parmetis linear centroid hilbert_sfc morton_sfc subdomain_partitioner + description: | + Specifies a mesh partitioner to use when splitting the mesh for a parallel computation. + - name: type + required: No + default: !!str LibmeshPartitioner + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/Partitioner//PetscExternalPartitioner + description: | + + parameters: + - name: apply_element_weight + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Indicate if we are going to apply element weights to partitioners + - name: apply_side_weight + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Indicate if we are going to apply side weights to partitioners + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: num_cores_per_compute_node + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of cores per compute node for hierarchical partitioning + - name: part_package + required: No + default: !!str parmetis + cpp_type: MooseEnum + group_name: + options: parmetis ptscotch chaco party hierarch + description: | + The external package is used for partitioning the mesh via PETSc + - name: type + required: No + default: !!str PetscExternalPartitioner + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/Partitioner//RandomPartitioner + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Seed for the random generator + - name: type + required: No + default: !!str RandomPartitioner + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/PatchMeshGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: No + default: !!str 2 + cpp_type: MooseEnum + group_name: + options: 2 3 + description: | + The dimension of the mesh to be generated. Patch meshes are only valid in 2 or 3 dimensions. + - name: elem_type + required: No + default: !!str QUAD4 + cpp_type: MooseEnum + group_name: + options: QUAD4 QUAD8 HEX8 HEX20 + description: | + The type of element from libMesh to generate (default: linear element for requested dimension) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str PatchMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: x_length + required: No + default: !!str 0.24 + cpp_type: double + group_name: + description: | + Length of the domain in the x direction. + - name: x_offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Offset of the Cartesian origin in the x direction. + - name: y_length + required: No + default: !!str 0.12 + cpp_type: double + group_name: + description: | + Length of the domain in the y direction. + - name: y_offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Offset of the Cartesian origin in the y direction. + - name: z_length + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Length of the domain in the z direction. + - name: z_offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Offset of the Cartesian origin in the z direction. + subblocks: + - name: /Mesh/PatternedMeshGenerator + description: | + + parameters: + - name: bottom_boundary + required: No + default: !!str bottom + cpp_type: BoundaryName + group_name: + description: | + name of the bottom (y) boundary + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: inputs + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The input MeshGenerators. + - name: left_boundary + required: No + default: !!str left + cpp_type: BoundaryName + group_name: + description: | + name of the left (x) boundary + - name: pattern + required: Yes + default: !!str + cpp_type: std::vector >, std::allocator > > > + group_name: + description: | + A double-indexed array starting with the upper-left corner + - name: right_boundary + required: No + default: !!str right + cpp_type: BoundaryName + group_name: + description: | + name of the right (x) boundary + - name: top_boundary + required: No + default: !!str top + cpp_type: BoundaryName + group_name: + description: | + name of the top (y) boundary + - name: type + required: No + default: !!str PatternedMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: x_width + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The tile width in the x direction + - name: y_width + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The tile width in the y direction + - name: z_width + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The tile width in the z direction + subblocks: + - name: /Mesh/PlaneDeletionGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_boundary + required: No + default: !!str + cpp_type: BoundaryName + group_name: + description: | + optional boundary name to assign to the cut surface + - name: normal + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The normal that defines the plane + - name: point + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The point that defines the plane + - name: type + required: No + default: !!str PlaneDeletionGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/RenameBlockGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_block_id + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with the old block number (or name) will be given this block number. If the old blocks are named, their names will be passed onto the newly numbered blocks. + - name: new_block_name + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with the old block number (or name) will be given this block name. No change of block ID is performed, unless multiple old blocks are given the same name, in which case they are all given the first old block number. + - name: old_block_id + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with this block number will be given the new_block_number or new_block_name. You must supply either old_block_id or old_block_name. You may supply a vector of old_block_id, in which case the new_block information must also be a vector. + - name: old_block_name + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with this block name will be given the new_block_number or new_block_name. You must supply either old_block_id or old_block_name. You may supply a vector of old_block_name, in which case the new_block information must also be a vector. + - name: type + required: No + default: !!str RenameBlockGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/RenameBoundaryGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_boundary_id + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with the old boundary number (or name) will be given this boundary number. If the old boundaries are named, their names will be passed onto the newly numbered boundarys. + - name: new_boundary_name + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with the old boundary number (or name) will be given this boundary name. No change of boundary ID is performed, unless multiple old boundaries are given the same name, in which case they are all given the first old boundary number. + - name: old_boundary_id + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with this boundary number will be given the new_boundary_number or new_boundary_name. You must supply either old_boundary_id or old_boundary_name. You may supply a vector of old_boundary_id, in which case the new_boundary information must also be a vector. + - name: old_boundary_name + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with this boundary name will be given the new_boundary_number or new_boundary_name. You must supply either old_boundary_id or old_boundary_name. You may supply a vector of old_boundary_name, in which case the new_boundary information must also be a vector. + - name: type + required: No + default: !!str RenameBoundaryGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/RinglebMeshGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: gamma + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Gamma parameter + - name: inflow_bid + required: No + default: !!str 1 + cpp_type: short + group_name: + description: | + The boundary id to use for the inflow + - name: inner_wall_bid + required: No + default: !!str 2 + cpp_type: short + group_name: + description: | + The boundary id to use for the inner wall + - name: kmax + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Value of k on the inner wall. + - name: kmin + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Value of k on the outer wall. + - name: n_extra_q_pts + required: Yes + default: !!str + cpp_type: int + group_name: + description: | + How many 'extra' points should be inserted in the final element *in addition to* the equispaced q points. + - name: num_k_pts + required: Yes + default: !!str + cpp_type: int + group_name: + description: | + How many points in the range k=(kmin, kmax). + - name: num_q_pts + required: Yes + default: !!str + cpp_type: int + group_name: + description: | + How many points to discretize the range q = (0.5, k) into. + - name: outer_wall_bid + required: No + default: !!str 4 + cpp_type: short + group_name: + description: | + The boundary id to use for the outer wall + - name: outflow_bid + required: No + default: !!str 3 + cpp_type: short + group_name: + description: | + The boundary id to use for the outflow + - name: triangles + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, all the quadrilateral elements will be split into triangles + - name: type + required: No + default: !!str RinglebMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/SideSetsAroundSubdomainGenerator + description: | + + parameters: + - name: block + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The blocks around which to create sidesets + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: fixed_normal + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This Boolean determines whether we fix our normal or allow it to vary to "paint" around curves + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs to create on the supplied subdomain + - name: normal + required: No + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + If supplied, only faces with normal equal to this, up to normal_tol, will be added to the sidesets specified + - name: normal_tol + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + If normal is supplied then faces are only added if face_normal.normal_hat >= 1 - normal_tol, where normal_hat = normal/|normal| + - name: replace + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, replace the old sidesets. If false, the current sidesets (if any) will be preserved. + - name: type + required: No + default: !!str SideSetsAroundSubdomainGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variance + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + The variance [0.0 - 1.0] allowed when comparing normals + subblocks: + - name: /Mesh/SideSetsBetweenSubdomainsGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: master_block + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The master set of blocks for which to draw a sideset between + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the boundary to create + - name: paired_block + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The paired set of blocks for which to draw a sideset between + - name: type + required: No + default: !!str SideSetsBetweenSubdomainsGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/SideSetsFromBoundingBoxGenerator + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + Subdomain id to set for inside/outside the bounding box + - name: bottom_left + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between). + - name: boundary_id_new + required: Yes + default: !!str + cpp_type: short + group_name: + description: | + Boundary id on specified block within the bounding box to assign + - name: boundary_id_old + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Boundary id on specified block within the bounding box to select + - name: boundary_id_overlap + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true if boundaries need to overlap on sideset to be detected. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: location + required: No + default: !!str INSIDE + cpp_type: MooseEnum + group_name: + options: INSIDE OUTSIDE + description: | + Control of where the subdomain id is to be set + - name: top_right + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between). + - name: type + required: No + default: !!str SideSetsFromBoundingBoxGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/SideSetsFromNormalsGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: fixed_normal + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This Boolean determines whether we fix our normal or allow it to vary to "paint" around curves + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the boundary to create + - name: normals + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + A list of normals for which to start painting sidesets + - name: replace + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, replace the old sidesets. If false, the current sidesets (if any) will be preserved. + - name: type + required: No + default: !!str SideSetsFromNormalsGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variance + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + The variance [0.0 - 1.0] allowed when comparing normals + subblocks: + - name: /Mesh/SideSetsFromPointsGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: fixed_normal + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This Boolean determines whether we fix our normal or allow it to vary to "paint" around curves + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the boundary to create + - name: points + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + A list of points from which to start painting sidesets + - name: replace + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, replace the old sidesets. If false, the current sidesets (if any) will be preserved. + - name: type + required: No + default: !!str SideSetsFromPointsGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variance + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + The variance [0.0 - 1.0] allowed when comparing normals + subblocks: + - name: /Mesh/SmoothMeshGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to smooth. + - name: iterations + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + The number of smoothing iterations to do. + - name: type + required: No + default: !!str SmoothMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/SpiralAnnularMeshGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cylinder_bid + required: No + default: !!str 1 + cpp_type: short + group_name: + description: | + The boundary id to use for the cylinder (inner circle) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: exterior_bid + required: No + default: !!str 2 + cpp_type: short + group_name: + description: | + The boundary id to use for the exterior (outer circle) + - name: initial_delta_r + required: No + default: !!str + cpp_type: double + group_name: + description: | + Width of the initial layer of elements around the cylinder.This number should be approximately 2 * pi * inner_radius / nodes_per_ring to ensure that the initial layer of elements is almost equilateral + - name: inner_radius + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The size of the inner circle. + - name: nodes_per_ring + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + Number of nodes on each ring. + - name: num_rings + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of rings. + - name: outer_radius + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The size of the outer circle. Logically, it has to be greater than inner_radius + - name: type + required: No + default: !!str SpiralAnnularMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_tri6 + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Generate mesh of TRI6 elements instead of TRI3 elements. + subblocks: + - name: /Mesh/StackGenerator + description: | + + parameters: + - name: back_boundary + required: No + default: !!str back + cpp_type: BoundaryName + group_name: + description: | + name of the back (z) boundary + - name: bottom_boundary + required: No + default: !!str bottom + cpp_type: BoundaryName + group_name: + description: | + name of the bottom (y) boundary + - name: bottom_height + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The height of the bottom of the final mesh + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: 2 3 + description: | + The dimension of the mesh to be generated + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: front_boundary + required: No + default: !!str front + cpp_type: BoundaryName + group_name: + description: | + name of the front (z) boundary + - name: inputs + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The meshes we want to stitch together + - name: top_boundary + required: No + default: !!str top + cpp_type: BoundaryName + group_name: + description: | + name of the top (y) boundary + - name: type + required: No + default: !!str StackGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/StitchedMeshGenerator + description: | + + parameters: + - name: algorithm + required: No + default: !!str BINARY + cpp_type: MooseEnum + group_name: + options: BINARY EXHAUSTIVE + description: | + Control the use of binary search for the nodes of the stitched surfaces. + - name: clear_stitched_boundary_ids + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to clear the stitched boundary IDs + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: inputs + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The input MeshGenerators. + - name: stitch_boundaries_pairs + required: Yes + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > >, std::allocator, std::allocator >, std::allocator, std::allocator > > > > > + group_name: + description: | + Pairs of boundaries to be stitched together between the 1st mesh in inputs and each consecutive mesh + - name: type + required: No + default: !!str StitchedMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/SubdomainBoundingBoxGenerator + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + Subdomain id to set for inside/outside the bounding box + - name: block_name + required: No + default: !!str + cpp_type: SubdomainName + group_name: + description: | + Subdomain name to set for inside/outside the bounding box (optional) + - name: bottom_left + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: integer_name + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Element integer to be assigned (default to subdomain ID) + - name: location + required: No + default: !!str INSIDE + cpp_type: MooseEnum + group_name: + options: INSIDE OUTSIDE + description: | + Control of where the subdomain id is to be set + - name: restricted_subdomains + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Only reset subdomain ID for given subdomains within the bounding box + - name: top_right + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between). + - name: type + required: No + default: !!str SubdomainBoundingBoxGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/SubdomainIDGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: subdomain_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + New subdomain IDs of all elements + - name: type + required: No + default: !!str SubdomainIDGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Mesh/TiledMeshGenerator + description: | + + parameters: + - name: back_boundary + required: No + default: !!str back + cpp_type: BoundaryName + group_name: + description: | + name of the back (z) boundary + - name: bottom_boundary + required: No + default: !!str bottom + cpp_type: BoundaryName + group_name: + description: | + name of the bottom (y) boundary + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: front_boundary + required: No + default: !!str front + cpp_type: BoundaryName + group_name: + description: | + name of the front (z) boundary + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to repeat + - name: left_boundary + required: No + default: !!str left + cpp_type: BoundaryName + group_name: + description: | + name of the left (x) boundary + - name: right_boundary + required: No + default: !!str right + cpp_type: BoundaryName + group_name: + description: | + name of the right (x) boundary + - name: top_boundary + required: No + default: !!str top + cpp_type: BoundaryName + group_name: + description: | + name of the top (y) boundary + - name: type + required: No + default: !!str TiledMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: x_tiles + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of tiles to stitch together (left to right) in the x-direction + - name: y_tiles + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of tiles to stitch together (top to bottom) in the y-direction + - name: z_tiles + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of tiles to stitch together (front to back) in the z-direction + subblocks: + - name: /Mesh/TransformGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: transform + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: TRANSLATE ROTATE SCALE + description: | + The type of transformation to perform (TRANSLATE, ROTATE, SCALE) + - name: type + required: No + default: !!str TransformGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: vector_value + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The value to use for the transformation. When using TRANSLATE or SCALE, the xyz coordinates are applied in each direction respectively. When using ROTATE, the values are interpreted as the Euler angles phi, theta and psi given in degrees. + subblocks: +- name: /MeshGenerators + description: | + + parameters: + subblocks: + - name: /MeshGenerators/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /MeshGenerators/AllSideSetsByNormalsGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: fixed_normal + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This Boolean determines whether we fix our normal or allow it to vary to "paint" around curves + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: replace + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, replace the old sidesets. If false, the current sidesets (if any) will be preserved. + - name: type + required: No + default: !!str AllSideSetsByNormalsGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variance + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + The variance [0.0 - 1.0] allowed when comparing normals + subblocks: + - name: /MeshGenerators/AnnularMeshGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dmax + required: No + default: !!str 360 + cpp_type: double + group_name: + description: | + Maximum angle, measured in degrees anticlockwise from x axis. If dmin=0 and dmax=360 an annular mesh is created. Otherwise, only a sector of an annulus is created + - name: dmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Minimum degree, measured in degrees anticlockwise from x axis + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: growth_r + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The ratio of radial sizes of successive rings of elements + - name: nr + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the radial direction + - name: nt + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + Number of elements in the angular direction + - name: quad_subdomain_id + required: No + default: !!str 0 + cpp_type: unsigned short + group_name: + description: | + The subdomain ID given to the QUAD4 elements + - name: rmax + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Outer radius + - name: rmin + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Inner radius. If rmin=0 then a disc mesh (with no central hole) will be created. + - name: tmax + required: No + default: !!str 6.28319 + cpp_type: double + group_name: + description: | + Maximum angle, measured in radians anticlockwise from x axis. If tmin=0 and tmax=2Pi an annular mesh is created. Otherwise, only a sector of an annulus is created + - name: tmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Minimum angle, measured in radians anticlockwise from x axis + - name: tri_subdomain_id + required: No + default: !!str 1 + cpp_type: unsigned short + group_name: + description: | + The subdomain ID given to the TRI3 elements (these exist only if rmin=0, and they exist at the center of the disc + - name: type + required: No + default: !!str AnnularMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/BlockDeletionGenerator + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + The block to be deleted + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_boundary + required: No + default: !!str + cpp_type: BoundaryName + group_name: + description: | + optional boundary name to assign to the cut surface + - name: type + required: No + default: !!str BlockDeletionGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/BoundingBoxNodeSetGenerator + description: | + + parameters: + - name: bottom_left + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between) of the box to select the nodes. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: location + required: No + default: !!str INSIDE + cpp_type: MooseEnum + group_name: + options: INSIDE OUTSIDE + description: | + Control of where the nodeset is to be set + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the nodeset to create + - name: top_right + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between) of the box to select the nodes. + - name: type + required: No + default: !!str BoundingBoxNodeSetGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/BreakBoundaryOnSubdomainGenerator + description: | + + parameters: + - name: boundaries + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Boundaries to be broken. Default means to break all boundaries + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: type + required: No + default: !!str BreakBoundaryOnSubdomainGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/BreakMeshByBlockGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: interface_name + required: No + default: !!str interface + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + the name of the new interface. Cannot be used whit `split_interface=true` + - name: split_interface + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, it create a different interface for each block pair. + - name: type + required: No + default: !!str BreakMeshByBlockGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/CartesianMeshGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: 'Main' + options: 1 2 3 + description: | + The dimension of the mesh to be generated + - name: dx + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Intervals in the X direction + - name: dy + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Intervals in the Y direction (required when dim>1 otherwise ignored) + - name: dz + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Intervals in the Z direction (required when dim>2 otherwise ignored) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ix + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Number of grids in all intervals in the X direction (default to all one) + - name: iy + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Number of grids in all intervals in the Y direction (default to all one) + - name: iz + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Number of grids in all intervals in the Z direction (default to all one) + - name: subdomain_id + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Block IDs (default to all zero) + - name: type + required: No + default: !!str CartesianMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/CombinerGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: inputs + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The input MeshGenerators. This can either be N generators or 1 generator. If only 1 is given then 'positions' must also be given. + - name: positions + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The (optional) position of each given mesh. If N 'inputs' were given then this must either be left blank or N positions must be given. If 1 input was given then this MUST be provided. + - name: type + required: No + default: !!str CombinerGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/ConcentricCircleMeshGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: has_outer_square + required: Yes + default: !!str + cpp_type: bool + group_name: + description: | + It determines if meshes for a outer square are added to concentric circle meshes. + - name: num_sectors + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + num_sectors % 2 = 0, num_sectors > 0Number of azimuthal sectors in each quadrant'num_sectors' must be an even number. + - name: pitch + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The enclosing square can be added to the completed concentric circle mesh.Elements are quad meshes. + - name: portion + required: No + default: !!str full + cpp_type: MooseEnum + group_name: + options: full top_right top_left bottom_left bottom_right right_half left_half top_half bottom_half + description: | + Control of which part of mesh is created + - name: preserve_volumes + required: Yes + default: !!str + cpp_type: bool + group_name: + description: | + Volume of concentric circles can be preserved using this function. + - name: radii + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Radii of major concentric circles + - name: rings + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Number of rings in each circle or in the enclosing square + - name: smoothing_max_it + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of Laplacian smoothing iterations + - name: type + required: No + default: !!str ConcentricCircleMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/DistributedRectilinearMeshGenerator + description: | + + parameters: + - name: apply_element_weight + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Indicate if we are going to apply element weights to partitioners + - name: apply_side_weight + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Indicate if we are going to apply side weights to partitioners + - name: bias_x + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the x-direction. + - name: bias_y + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the y-direction. + - name: bias_z + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the z-direction. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: 'Main' + options: 1 2 3 + description: | + The dimension of the mesh to be generated + - name: elem_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: EDGE EDGE2 EDGE3 EDGE4 QUAD QUAD4 QUAD8 QUAD9 TRI3 TRI6 HEX HEX8 HEX20 HEX27 TET4 TET10 PRISM6 PRISM15 PRISM18 PYRAMID5 PYRAMID13 PYRAMID14 + description: | + The type of element from libMesh to generate (default: linear element for requested dimension) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: num_cores_for_partition + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Number of cores for partitioning the graph + - name: num_cores_per_compute_node + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of cores per compute node for hierarchical partitioning + - name: nx + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the X direction + - name: ny + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Y direction + - name: nz + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Z direction + - name: part_package + required: No + default: !!str parmetis + cpp_type: MooseEnum + group_name: + options: parmetis ptscotch chaco party hierarch + description: | + The external package is used for partitioning the mesh via PETSc + - name: type + required: No + default: !!str DistributedRectilinearMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: xmax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper X Coordinate of the generated mesh + - name: xmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower X Coordinate of the generated mesh + - name: ymax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper Y Coordinate of the generated mesh + - name: ymin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower Y Coordinate of the generated mesh + - name: zmax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper Z Coordinate of the generated mesh + - name: zmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower Z Coordinate of the generated mesh + subblocks: + - name: /MeshGenerators/ElementGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: elem_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: EDGE2 EDGE3 EDGE4 QUAD4 QUAD8 QUAD9 TRI3 TRI6 HEX8 HEX20 HEX27 TET4 TET10 PRISM6 PRISM15 PRISM18 PYRAMID5 PYRAMID13 PYRAMID14 + description: | + The type of element from libMesh to generate + - name: element_connectivity + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + List of nodes to use for each element + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: No + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + Optional input mesh to add the elements to + - name: nodal_positions + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The x,y,z positions of the nodes + - name: type + required: No + default: !!str ElementGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/ElementSubdomainIDGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: element_ids + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + New element IDs of all elements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: subdomain_ids + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + New subdomain IDs of all elements + - name: type + required: No + default: !!str ElementSubdomainIDGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/ExtraNodesetGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: coord + required: No + default: !!str + cpp_type: std::vector >, std::allocator > > > + group_name: + description: | + The nodes with coordinates you want to be in the nodeset. Separate multple coords with ';' (Either this parameter or "nodes" must be supplied). + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the boundary to create + - name: nodes + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The nodes you want to be in the nodeset (Either this parameter or "coord" must be supplied). + - name: tolerance + required: No + default: !!str 1e-06 + cpp_type: double + group_name: + description: | + The tolerance in which two nodes are considered identical + - name: type + required: No + default: !!str ExtraNodesetGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/FancyExtruderGenerator + description: | + + parameters: + - name: bottom_boundary + required: No + default: !!str + cpp_type: short + group_name: + description: | + The boundary ID to set on the bottom boundary. If omitted one will be generated. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direction + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + A vector that points in the direction to extrude (note, this will be normalized internally - so don't worry about it here) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: heights + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The height of each elevation + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh to extrude + - name: num_layers + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The number of layers for each elevation - must be num_elevations in length! + - name: subdomain_swaps + required: No + default: !!str + cpp_type: std::vector >, std::allocator > > > + group_name: + description: | + For each row, every two entries are interpreted as a pair of 'from' and 'to' to remap the subdomains for that elevation + - name: top_boundary + required: No + default: !!str + cpp_type: short + group_name: + description: | + The boundary ID to set on the top boundary. If ommitted one will be generated. + - name: type + required: No + default: !!str FancyExtruderGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/FileMeshGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: exodus_extra_element_integers + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The variable names in the mesh file for loading extra element integers + - name: file + required: Yes + default: !!str + cpp_type: MeshFileName + group_name: + description: | + The filename to read. + - name: type + required: No + default: !!str FileMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/GeneratedMeshGenerator + description: | + + parameters: + - name: bias_x + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the x-direction. + - name: bias_y + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the y-direction. + - name: bias_z + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the z-direction. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: 'Main' + options: 1 2 3 + description: | + The dimension of the mesh to be generated + - name: elem_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: EDGE EDGE2 EDGE3 EDGE4 QUAD QUAD4 QUAD8 QUAD9 TRI3 TRI6 HEX HEX8 HEX20 HEX27 TET4 TET10 PRISM6 PRISM15 PRISM18 PYRAMID5 PYRAMID13 PYRAMID14 + description: | + The type of element from libMesh to generate (default: linear element for requested dimension) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_element_integers + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Names of extra element integers + - name: gauss_lobatto_grid + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Grade mesh into boundaries according to Gauss-Lobatto quadrature spacing. + - name: nx + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the X direction + - name: ny + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Y direction + - name: nz + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Z direction + - name: type + required: No + default: !!str GeneratedMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: xmax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper X Coordinate of the generated mesh + - name: xmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower X Coordinate of the generated mesh + - name: ymax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper Y Coordinate of the generated mesh + - name: ymin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower Y Coordinate of the generated mesh + - name: zmax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper Z Coordinate of the generated mesh + - name: zmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower Z Coordinate of the generated mesh + subblocks: + - name: /MeshGenerators/ImageMeshGenerator + description: | + + parameters: + - name: bias_x + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the x-direction. + - name: bias_y + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the y-direction. + - name: bias_z + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The amount by which to grow (or shrink) the cells in the z-direction. + - name: cells_per_pixel + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The number of mesh cells per pixel, must be <=1 + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: 'Main' + options: 1 2 3 + description: | + The dimension of the mesh to be generated + - name: elem_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: EDGE EDGE2 EDGE3 EDGE4 QUAD QUAD4 QUAD8 QUAD9 TRI3 TRI6 HEX HEX8 HEX20 HEX27 TET4 TET10 PRISM6 PRISM15 PRISM18 PYRAMID5 PYRAMID13 PYRAMID14 + description: | + The type of element from libMesh to generate (default: linear element for requested dimension) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_element_integers + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Names of extra element integers + - name: file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + Name of single image file to extract mesh parameters from. If provided, a 2D mesh is created. + - name: file_base + required: No + default: !!str + cpp_type: FileNameNoExtension + group_name: + description: | + Image file base to open, use this option when a stack of images must be read (ignored if 'file' is given) + - name: file_range + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Range of images to analyze, used with 'file_base' (ignored if 'file' is given) + - name: file_suffix + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Suffix of the file to open, e.g. 'png' + - name: gauss_lobatto_grid + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Grade mesh into boundaries according to Gauss-Lobatto quadrature spacing. + - name: nx + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the X direction + - name: ny + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Y direction + - name: nz + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of elements in the Z direction + - name: scale_to_one + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to scale the image so its max dimension is 1 + - name: type + required: No + default: !!str ImageMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: xmax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper X Coordinate of the generated mesh + - name: xmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower X Coordinate of the generated mesh + - name: ymax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper Y Coordinate of the generated mesh + - name: ymin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower Y Coordinate of the generated mesh + - name: zmax + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper Z Coordinate of the generated mesh + - name: zmin + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower Z Coordinate of the generated mesh + subblocks: + - name: /MeshGenerators/ImageSubdomainGenerator + description: | + + parameters: + - name: component + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The image RGB-component to return, leaving this blank will result in a greyscale value for the image to be created. The component number is zero based, i.e. 0 returns the first (RED) component of the image. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dimensions + required: No + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + x,y,z dimensions of the image (defaults to mesh dimensions) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + Name of single image file to extract mesh parameters from. If provided, a 2D mesh is created. + - name: file_base + required: No + default: !!str + cpp_type: FileNameNoExtension + group_name: + description: | + Image file base to open, use this option when a stack of images must be read (ignored if 'file' is given) + - name: file_range + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Range of images to analyze, used with 'file_base' (ignored if 'file' is given) + - name: file_suffix + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Suffix of the file to open, e.g. 'png' + - name: flip_x + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Flip' + description: | + Flip the image along the x-axis + - name: flip_y + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Flip' + description: | + Flip the image along the y-axis + - name: flip_z + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Flip' + description: | + Flip the image along the z-axis + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: lower_value + required: No + default: !!str 0 + cpp_type: double + group_name: 'Threshold' + description: | + The value to set for data less than the threshold value + - name: origin + required: No + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + Origin of the image (defaults to mesh origin) + - name: scale + required: No + default: !!str 1 + cpp_type: double + group_name: 'Rescale' + description: | + Multiplier to apply to all pixel values; occurs after shifting + - name: shift + required: No + default: !!str 0 + cpp_type: double + group_name: 'Rescale' + description: | + Value to add to all pixels; occurs prior to scaling + - name: threshold + required: No + default: !!str + cpp_type: double + group_name: 'Threshold' + description: | + The threshold value + - name: type + required: No + default: !!str ImageSubdomainGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: upper_value + required: No + default: !!str 1 + cpp_type: double + group_name: 'Threshold' + description: | + The value to set for data greater than the threshold value + subblocks: + - name: /MeshGenerators/LowerDBlockFromSidesetGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_block_id + required: No + default: !!str + cpp_type: unsigned short + group_name: + description: | + The lower dimensional block id to create + - name: new_block_name + required: No + default: !!str + cpp_type: SubdomainName + group_name: + description: | + The lower dimensional block name to create (optional) + - name: sidesets + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The sidesets from which to create the new block + - name: type + required: No + default: !!str LowerDBlockFromSidesetGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/MeshCollectionGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: inputs + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The input MeshGenerators. + - name: type + required: No + default: !!str MeshCollectionGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/MeshExtruderGenerator + description: | + + parameters: + - name: bottom_sideset + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The boundary that will be applied to the bottom of the extruded mesh + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: existing_subdomains + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The subdomains that will be remapped for specific layers + - name: extrusion_vector + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The direction and length of the extrusion + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + the mesh we want to extrude + - name: layers + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The layers where the "existing_subdomain" will be remapped to new ids + - name: new_ids + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of new ids, This list should be either length "existing_subdomains" or "existing_subdomains" * layers + - name: num_layers + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + The number of layers in the extruded mesh + - name: top_sideset + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The boundary that will be to the top of the extruded mesh + - name: type + required: No + default: !!str MeshExtruderGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/MeshSideSetGenerator + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + Subdomain id to set for the new elements along the boundary + - name: block_name + required: No + default: !!str + cpp_type: SubdomainName + group_name: + description: | + Subdomain name to set for the new elements along the boundary (optional) + - name: boundaries + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the boundary to mesh + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: type + required: No + default: !!str MeshSideSetGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/OrientedSubdomainBoundingBoxGenerator + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + Subdomain id to set for inside/outside the bounding box + - name: center + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The center (many people spell this 'center') of the box. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: height + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The height of the box + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: length + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The length of the box + - name: length_direction + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The direction along which the length is oriented (must be perpendicular to width_direction). + - name: location + required: No + default: !!str INSIDE + cpp_type: MooseEnum + group_name: + options: INSIDE OUTSIDE + description: | + Control of where the subdomain id is to be set + - name: type + required: No + default: !!str OrientedSubdomainBoundingBoxGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: width + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The width of the box + - name: width_direction + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The direction along which the width is oriented. + subblocks: + - name: /MeshGenerators/ParsedGenerateSideset + description: | + + parameters: + - name: combinatorial_geometry + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Function expression encoding a combinatorial geometry + - name: constant_expressions + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of values for the constants in constant_names (can be an FParser expression) + - name: constant_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of constants used in the parsed function (use this for kB etc.) + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: disable_fpoptimizer + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Disable the function parser algebraic optimizer + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_ad_cache + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable cacheing of function derivatives for faster startup time + - name: enable_auto_optimize + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable automatic immediate optimization of derivatives + - name: enable_jit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable just-in-time compilation of function expressions for faster evaluation + - name: evalerror_behavior + required: No + default: !!str nan + cpp_type: MooseEnum + group_name: 'Advanced' + options: nan nan_warning error exception + description: | + What to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exception + - name: fail_on_evalerror + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Fail fatally if a function evaluation returns an error code (otherwise just pass on NaN) + - name: fixed_normal + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This Boolean determines whether we fix our normal or allow it to vary to "paint" around curves + - name: included_subdomain_ids + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + A set of subdomain ids whose sides will be included in the new sidesets + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_sideset_name + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The name of the new sideset + - name: normal + required: No + default: !!str 0 0 0 + cpp_type: libMesh::Point + group_name: + description: | + If provided specifies the normal vector on sides that are added to the new + - name: replace + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, replace the old sidesets. If false, the current sidesets (if any) will be preserved. + - name: type + required: No + default: !!str ParsedGenerateSideset + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variance + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + The variance [0.0 - 1.0] allowed when comparing normals + subblocks: + - name: /MeshGenerators/ParsedSubdomainMeshGenerator + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + Subdomain id to set for inside of the combinatorial + - name: block_name + required: No + default: !!str + cpp_type: SubdomainName + group_name: + description: | + Subdomain name to set for inside of the combinatorial + - name: combinatorial_geometry + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Function expression encoding a combinatorial geometry + - name: constant_expressions + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of values for the constants in constant_names (can be an FParser expression) + - name: constant_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of constants used in the parsed function (use this for kB etc.) + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: disable_fpoptimizer + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Disable the function parser algebraic optimizer + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_ad_cache + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable cacheing of function derivatives for faster startup time + - name: enable_auto_optimize + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable automatic immediate optimization of derivatives + - name: enable_jit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable just-in-time compilation of function expressions for faster evaluation + - name: evalerror_behavior + required: No + default: !!str nan + cpp_type: MooseEnum + group_name: 'Advanced' + options: nan nan_warning error exception + description: | + What to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exception + - name: excluded_subdomain_ids + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + A set of subdomain ids that will not changed even if they are inside/outside the combinatorial geometry + - name: fail_on_evalerror + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Fail fatally if a function evaluation returns an error code (otherwise just pass on NaN) + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: type + required: No + default: !!str ParsedSubdomainMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/PatchMeshGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: No + default: !!str 2 + cpp_type: MooseEnum + group_name: + options: 2 3 + description: | + The dimension of the mesh to be generated. Patch meshes are only valid in 2 or 3 dimensions. + - name: elem_type + required: No + default: !!str QUAD4 + cpp_type: MooseEnum + group_name: + options: QUAD4 QUAD8 HEX8 HEX20 + description: | + The type of element from libMesh to generate (default: linear element for requested dimension) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str PatchMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: x_length + required: No + default: !!str 0.24 + cpp_type: double + group_name: + description: | + Length of the domain in the x direction. + - name: x_offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Offset of the Cartesian origin in the x direction. + - name: y_length + required: No + default: !!str 0.12 + cpp_type: double + group_name: + description: | + Length of the domain in the y direction. + - name: y_offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Offset of the Cartesian origin in the y direction. + - name: z_length + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Length of the domain in the z direction. + - name: z_offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Offset of the Cartesian origin in the z direction. + subblocks: + - name: /MeshGenerators/PatternedMeshGenerator + description: | + + parameters: + - name: bottom_boundary + required: No + default: !!str bottom + cpp_type: BoundaryName + group_name: + description: | + name of the bottom (y) boundary + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: inputs + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The input MeshGenerators. + - name: left_boundary + required: No + default: !!str left + cpp_type: BoundaryName + group_name: + description: | + name of the left (x) boundary + - name: pattern + required: Yes + default: !!str + cpp_type: std::vector >, std::allocator > > > + group_name: + description: | + A double-indexed array starting with the upper-left corner + - name: right_boundary + required: No + default: !!str right + cpp_type: BoundaryName + group_name: + description: | + name of the right (x) boundary + - name: top_boundary + required: No + default: !!str top + cpp_type: BoundaryName + group_name: + description: | + name of the top (y) boundary + - name: type + required: No + default: !!str PatternedMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: x_width + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The tile width in the x direction + - name: y_width + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The tile width in the y direction + - name: z_width + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The tile width in the z direction + subblocks: + - name: /MeshGenerators/PlaneDeletionGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_boundary + required: No + default: !!str + cpp_type: BoundaryName + group_name: + description: | + optional boundary name to assign to the cut surface + - name: normal + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The normal that defines the plane + - name: point + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The point that defines the plane + - name: type + required: No + default: !!str PlaneDeletionGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/RenameBlockGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_block_id + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with the old block number (or name) will be given this block number. If the old blocks are named, their names will be passed onto the newly numbered blocks. + - name: new_block_name + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with the old block number (or name) will be given this block name. No change of block ID is performed, unless multiple old blocks are given the same name, in which case they are all given the first old block number. + - name: old_block_id + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with this block number will be given the new_block_number or new_block_name. You must supply either old_block_id or old_block_name. You may supply a vector of old_block_id, in which case the new_block information must also be a vector. + - name: old_block_name + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with this block name will be given the new_block_number or new_block_name. You must supply either old_block_id or old_block_name. You may supply a vector of old_block_name, in which case the new_block information must also be a vector. + - name: type + required: No + default: !!str RenameBlockGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/RenameBoundaryGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_boundary_id + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with the old boundary number (or name) will be given this boundary number. If the old boundaries are named, their names will be passed onto the newly numbered boundarys. + - name: new_boundary_name + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with the old boundary number (or name) will be given this boundary name. No change of boundary ID is performed, unless multiple old boundaries are given the same name, in which case they are all given the first old boundary number. + - name: old_boundary_id + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with this boundary number will be given the new_boundary_number or new_boundary_name. You must supply either old_boundary_id or old_boundary_name. You may supply a vector of old_boundary_id, in which case the new_boundary information must also be a vector. + - name: old_boundary_name + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with this boundary name will be given the new_boundary_number or new_boundary_name. You must supply either old_boundary_id or old_boundary_name. You may supply a vector of old_boundary_name, in which case the new_boundary information must also be a vector. + - name: type + required: No + default: !!str RenameBoundaryGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/RinglebMeshGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: gamma + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Gamma parameter + - name: inflow_bid + required: No + default: !!str 1 + cpp_type: short + group_name: + description: | + The boundary id to use for the inflow + - name: inner_wall_bid + required: No + default: !!str 2 + cpp_type: short + group_name: + description: | + The boundary id to use for the inner wall + - name: kmax + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Value of k on the inner wall. + - name: kmin + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Value of k on the outer wall. + - name: n_extra_q_pts + required: Yes + default: !!str + cpp_type: int + group_name: + description: | + How many 'extra' points should be inserted in the final element *in addition to* the equispaced q points. + - name: num_k_pts + required: Yes + default: !!str + cpp_type: int + group_name: + description: | + How many points in the range k=(kmin, kmax). + - name: num_q_pts + required: Yes + default: !!str + cpp_type: int + group_name: + description: | + How many points to discretize the range q = (0.5, k) into. + - name: outer_wall_bid + required: No + default: !!str 4 + cpp_type: short + group_name: + description: | + The boundary id to use for the outer wall + - name: outflow_bid + required: No + default: !!str 3 + cpp_type: short + group_name: + description: | + The boundary id to use for the outflow + - name: triangles + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, all the quadrilateral elements will be split into triangles + - name: type + required: No + default: !!str RinglebMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/SideSetsAroundSubdomainGenerator + description: | + + parameters: + - name: block + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The blocks around which to create sidesets + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: fixed_normal + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This Boolean determines whether we fix our normal or allow it to vary to "paint" around curves + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs to create on the supplied subdomain + - name: normal + required: No + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + If supplied, only faces with normal equal to this, up to normal_tol, will be added to the sidesets specified + - name: normal_tol + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + If normal is supplied then faces are only added if face_normal.normal_hat >= 1 - normal_tol, where normal_hat = normal/|normal| + - name: replace + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, replace the old sidesets. If false, the current sidesets (if any) will be preserved. + - name: type + required: No + default: !!str SideSetsAroundSubdomainGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variance + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + The variance [0.0 - 1.0] allowed when comparing normals + subblocks: + - name: /MeshGenerators/SideSetsBetweenSubdomainsGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: master_block + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The master set of blocks for which to draw a sideset between + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the boundary to create + - name: paired_block + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The paired set of blocks for which to draw a sideset between + - name: type + required: No + default: !!str SideSetsBetweenSubdomainsGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/SideSetsFromBoundingBoxGenerator + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + Subdomain id to set for inside/outside the bounding box + - name: bottom_left + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between). + - name: boundary_id_new + required: Yes + default: !!str + cpp_type: short + group_name: + description: | + Boundary id on specified block within the bounding box to assign + - name: boundary_id_old + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Boundary id on specified block within the bounding box to select + - name: boundary_id_overlap + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true if boundaries need to overlap on sideset to be detected. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: location + required: No + default: !!str INSIDE + cpp_type: MooseEnum + group_name: + options: INSIDE OUTSIDE + description: | + Control of where the subdomain id is to be set + - name: top_right + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between). + - name: type + required: No + default: !!str SideSetsFromBoundingBoxGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/SideSetsFromNormalsGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: fixed_normal + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This Boolean determines whether we fix our normal or allow it to vary to "paint" around curves + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the boundary to create + - name: normals + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + A list of normals for which to start painting sidesets + - name: replace + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, replace the old sidesets. If false, the current sidesets (if any) will be preserved. + - name: type + required: No + default: !!str SideSetsFromNormalsGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variance + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + The variance [0.0 - 1.0] allowed when comparing normals + subblocks: + - name: /MeshGenerators/SideSetsFromPointsGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: fixed_normal + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This Boolean determines whether we fix our normal or allow it to vary to "paint" around curves + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the boundary to create + - name: points + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + A list of points from which to start painting sidesets + - name: replace + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, replace the old sidesets. If false, the current sidesets (if any) will be preserved. + - name: type + required: No + default: !!str SideSetsFromPointsGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variance + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + The variance [0.0 - 1.0] allowed when comparing normals + subblocks: + - name: /MeshGenerators/SmoothMeshGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to smooth. + - name: iterations + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + The number of smoothing iterations to do. + - name: type + required: No + default: !!str SmoothMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/SpiralAnnularMeshGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cylinder_bid + required: No + default: !!str 1 + cpp_type: short + group_name: + description: | + The boundary id to use for the cylinder (inner circle) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: exterior_bid + required: No + default: !!str 2 + cpp_type: short + group_name: + description: | + The boundary id to use for the exterior (outer circle) + - name: initial_delta_r + required: No + default: !!str + cpp_type: double + group_name: + description: | + Width of the initial layer of elements around the cylinder.This number should be approximately 2 * pi * inner_radius / nodes_per_ring to ensure that the initial layer of elements is almost equilateral + - name: inner_radius + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The size of the inner circle. + - name: nodes_per_ring + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + Number of nodes on each ring. + - name: num_rings + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of rings. + - name: outer_radius + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The size of the outer circle. Logically, it has to be greater than inner_radius + - name: type + required: No + default: !!str SpiralAnnularMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_tri6 + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Generate mesh of TRI6 elements instead of TRI3 elements. + subblocks: + - name: /MeshGenerators/StackGenerator + description: | + + parameters: + - name: back_boundary + required: No + default: !!str back + cpp_type: BoundaryName + group_name: + description: | + name of the back (z) boundary + - name: bottom_boundary + required: No + default: !!str bottom + cpp_type: BoundaryName + group_name: + description: | + name of the bottom (y) boundary + - name: bottom_height + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The height of the bottom of the final mesh + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: dim + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: 2 3 + description: | + The dimension of the mesh to be generated + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: front_boundary + required: No + default: !!str front + cpp_type: BoundaryName + group_name: + description: | + name of the front (z) boundary + - name: inputs + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The meshes we want to stitch together + - name: top_boundary + required: No + default: !!str top + cpp_type: BoundaryName + group_name: + description: | + name of the top (y) boundary + - name: type + required: No + default: !!str StackGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/StitchedMeshGenerator + description: | + + parameters: + - name: algorithm + required: No + default: !!str BINARY + cpp_type: MooseEnum + group_name: + options: BINARY EXHAUSTIVE + description: | + Control the use of binary search for the nodes of the stitched surfaces. + - name: clear_stitched_boundary_ids + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to clear the stitched boundary IDs + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: inputs + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The input MeshGenerators. + - name: stitch_boundaries_pairs + required: Yes + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > >, std::allocator, std::allocator >, std::allocator, std::allocator > > > > > + group_name: + description: | + Pairs of boundaries to be stitched together between the 1st mesh in inputs and each consecutive mesh + - name: type + required: No + default: !!str StitchedMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/SubdomainBoundingBoxGenerator + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + Subdomain id to set for inside/outside the bounding box + - name: block_name + required: No + default: !!str + cpp_type: SubdomainName + group_name: + description: | + Subdomain name to set for inside/outside the bounding box (optional) + - name: bottom_left + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: integer_name + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Element integer to be assigned (default to subdomain ID) + - name: location + required: No + default: !!str INSIDE + cpp_type: MooseEnum + group_name: + options: INSIDE OUTSIDE + description: | + Control of where the subdomain id is to be set + - name: restricted_subdomains + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Only reset subdomain ID for given subdomains within the bounding box + - name: top_right + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between). + - name: type + required: No + default: !!str SubdomainBoundingBoxGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/SubdomainIDGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: subdomain_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + New subdomain IDs of all elements + - name: type + required: No + default: !!str SubdomainIDGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshGenerators/TiledMeshGenerator + description: | + + parameters: + - name: back_boundary + required: No + default: !!str back + cpp_type: BoundaryName + group_name: + description: | + name of the back (z) boundary + - name: bottom_boundary + required: No + default: !!str bottom + cpp_type: BoundaryName + group_name: + description: | + name of the bottom (y) boundary + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: front_boundary + required: No + default: !!str front + cpp_type: BoundaryName + group_name: + description: | + name of the front (z) boundary + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to repeat + - name: left_boundary + required: No + default: !!str left + cpp_type: BoundaryName + group_name: + description: | + name of the left (x) boundary + - name: right_boundary + required: No + default: !!str right + cpp_type: BoundaryName + group_name: + description: | + name of the right (x) boundary + - name: top_boundary + required: No + default: !!str top + cpp_type: BoundaryName + group_name: + description: | + name of the top (y) boundary + - name: type + required: No + default: !!str TiledMeshGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: x_tiles + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of tiles to stitch together (left to right) in the x-direction + - name: y_tiles + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of tiles to stitch together (top to bottom) in the y-direction + - name: z_tiles + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of tiles to stitch together (front to back) in the z-direction + subblocks: + - name: /MeshGenerators/TransformGenerator + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: input + required: Yes + default: !!str + cpp_type: MeshGeneratorName + group_name: + description: | + The mesh we want to modify + - name: transform + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: TRANSLATE ROTATE SCALE + description: | + The type of transformation to perform (TRANSLATE, ROTATE, SCALE) + - name: type + required: No + default: !!str TransformGenerator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: vector_value + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The value to use for the transformation. When using TRANSLATE or SCALE, the xyz coordinates are applied in each direction respectively. When using ROTATE, the values are interpreted as the Euler angles phi, theta and psi given in degrees. + subblocks: +- name: /MeshModifiers + description: | + + parameters: + subblocks: + - name: /MeshModifiers/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /MeshModifiers/AddAllSideSetsByNormals + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: fixed_normal + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This Boolean determines whether we fix our normal or allow it to vary to "paint" around curves + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: type + required: No + default: !!str AddAllSideSetsByNormals + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variance + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + The variance [0.0 - 1.0] allowed when comparing normals + subblocks: + - name: /MeshModifiers/AddExtraNodeset + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: coord + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The nodes with coordinates you want to be in the nodeset (Either this parameter or "nodes" must be supplied). + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the boundary to create + - name: nodes + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The nodes you want to be in the nodeset (Either this parameter or "coord" must be supplied). + - name: tolerance + required: No + default: !!str 1e-06 + cpp_type: double + group_name: + description: | + The tolerance in which two nodes are considered identical + - name: type + required: No + default: !!str AddExtraNodeset + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshModifiers/AddSideSetsFromBoundingBox + description: | + + parameters: + - name: bottom_left + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between). + - name: boundary_id_new + required: Yes + default: !!str + cpp_type: short + group_name: + description: | + Boundary id on specified block within the bounding box to assign + - name: boundary_id_old + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Boundary id on specified block within the bounding box to select + - name: boundary_id_overlap + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true if boundaries need to overlap on sideset to be detected. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: location + required: No + default: !!str INSIDE + cpp_type: MooseEnum + group_name: + options: INSIDE OUTSIDE + description: | + Control of where the subdomain id is to be set + - name: top_right + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between). + - name: type + required: No + default: !!str AddSideSetsFromBoundingBox + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshModifiers/AssignElementSubdomainID + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: element_ids + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + New subdomain IDs of all elements + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: subdomain_ids + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + New subdomain IDs of all elements + - name: type + required: No + default: !!str AssignElementSubdomainID + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshModifiers/AssignSubdomainID + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: subdomain_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + New subdomain IDs of all elements + - name: type + required: No + default: !!str AssignSubdomainID + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshModifiers/BlockDeleter + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + The block to be deleted + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: new_boundary + required: No + default: !!str + cpp_type: BoundaryName + group_name: + description: | + optional boundary name to assign to the cut surface + - name: type + required: No + default: !!str BlockDeleter + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshModifiers/BoundingBoxNodeSet + description: | + + parameters: + - name: bottom_left + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between) of the box to select the nodes. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: location + required: No + default: !!str INSIDE + cpp_type: MooseEnum + group_name: + options: INSIDE OUTSIDE + description: | + Control of where the nodeset is to be set + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the nodeset to create + - name: top_right + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between) of the box to select the nodes. + - name: type + required: No + default: !!str BoundingBoxNodeSet + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshModifiers/BreakBoundaryOnSubdomain + description: | + + parameters: + - name: boundaries + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Boundaries to be broken. Default means to break all boundaries + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: type + required: No + default: !!str BreakBoundaryOnSubdomain + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshModifiers/BreakMeshByBlock + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: interface_name + required: No + default: !!str interface + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + the name of the new interface. Cannot be used whit `split_interface=true` + - name: split_interface + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, it create a different interface for each block pair. + - name: type + required: No + default: !!str BreakMeshByBlock + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshModifiers/ImageSubdomain + description: | + + parameters: + - name: component + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The image RGB-component to return, leaving this blank will result in a greyscale value for the image to be created. The component number is zero based, i.e. 0 returns the first (RED) component of the image. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: dimensions + required: No + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + x,y,z dimensions of the image (defaults to mesh dimensions) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + Name of single image file to extract mesh parameters from. If provided, a 2D mesh is created. + - name: file_base + required: No + default: !!str + cpp_type: FileNameNoExtension + group_name: + description: | + Image file base to open, use this option when a stack of images must be read (ignored if 'file' is given) + - name: file_range + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Range of images to analyze, used with 'file_base' (ignored if 'file' is given) + - name: file_suffix + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Suffix of the file to open, e.g. 'png' + - name: flip_x + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Flip' + description: | + Flip the image along the x-axis + - name: flip_y + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Flip' + description: | + Flip the image along the y-axis + - name: flip_z + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Flip' + description: | + Flip the image along the z-axis + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: lower_value + required: No + default: !!str 0 + cpp_type: double + group_name: 'Threshold' + description: | + The value to set for data less than the threshold value + - name: origin + required: No + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + Origin of the image (defaults to mesh origin) + - name: scale + required: No + default: !!str 1 + cpp_type: double + group_name: 'Rescale' + description: | + Multiplier to apply to all pixel values; occurs after shifting + - name: shift + required: No + default: !!str 0 + cpp_type: double + group_name: 'Rescale' + description: | + Value to add to all pixels; occurs prior to scaling + - name: threshold + required: No + default: !!str + cpp_type: double + group_name: 'Threshold' + description: | + The threshold value + - name: type + required: No + default: !!str ImageSubdomain + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: upper_value + required: No + default: !!str 1 + cpp_type: double + group_name: 'Threshold' + description: | + The value to set for data greater than the threshold value + subblocks: + - name: /MeshModifiers/LowerDBlockFromSideset + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: new_block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + The lower dimensional block id to create + - name: new_block_name + required: No + default: !!str + cpp_type: SubdomainName + group_name: + description: | + The lower dimensional block name to create (optional) + - name: sidesets + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The sidesets from which to create the new block + - name: type + required: No + default: !!str LowerDBlockFromSideset + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshModifiers/MeshExtruder + description: | + + parameters: + - name: bottom_sideset + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The boundary that will be applied to the bottom of the extruded mesh + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: existing_subdomains + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The subdomains that will be remapped for specific layers + - name: extrusion_vector + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The direction and length of the extrusion + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: layers + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The layers where the "existing_subdomain" will be remapped to new ids + - name: new_ids + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of new ids, This list should be either length "existing_subdomains" or "existing_subdomains" * layers + - name: num_layers + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + The number of layers in the extruded mesh + - name: top_sideset + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The boundary that will be to the top of the extruded mesh + - name: type + required: No + default: !!str MeshExtruder + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshModifiers/MeshSideSet + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + Subdomain id to set for the new elements along the boundary + - name: block_name + required: No + default: !!str + cpp_type: SubdomainName + group_name: + description: | + Subdomain name to set for the new elements along the boundary (optional) + - name: boundaries + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the boundary to mesh + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: type + required: No + default: !!str MeshSideSet + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshModifiers/OrientedSubdomainBoundingBox + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + Subdomain id to set for inside/outside the bounding box + - name: center + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The center (many people spell this 'center') of the box. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: height + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The height of the box + - name: length + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The length of the box + - name: length_direction + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The direction along which the length is oriented (must be perpendicular to width_direction). + - name: location + required: No + default: !!str INSIDE + cpp_type: MooseEnum + group_name: + options: INSIDE OUTSIDE + description: | + Control of where the subdomain id is to be set + - name: type + required: No + default: !!str OrientedSubdomainBoundingBox + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: width + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The width of the box + - name: width_direction + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The direction along which the width is oriented. + subblocks: + - name: /MeshModifiers/ParsedAddSideset + description: | + + parameters: + - name: combinatorial_geometry + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Function expression encoding a combinatorial geometry + - name: constant_expressions + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of values for the constants in constant_names (can be an FParser expression) + - name: constant_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of constants used in the parsed function (use this for kB etc.) + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: disable_fpoptimizer + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Disable the function parser algebraic optimizer + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_ad_cache + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable cacheing of function derivatives for faster startup time + - name: enable_auto_optimize + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable automatic immediate optimization of derivatives + - name: enable_jit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable just-in-time compilation of function expressions for faster evaluation + - name: evalerror_behavior + required: No + default: !!str nan + cpp_type: MooseEnum + group_name: 'Advanced' + options: nan nan_warning error exception + description: | + What to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exception + - name: fail_on_evalerror + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Fail fatally if a function evaluation returns an error code (otherwise just pass on NaN) + - name: fixed_normal + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This Boolean determines whether we fix our normal or allow it to vary to "paint" around curves + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: included_subdomain_ids + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + A set of subdomain ids whose sides will be included in the new sidesets + - name: new_sideset_name + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The name of the new sideset + - name: normal + required: No + default: !!str 0 0 0 + cpp_type: libMesh::Point + group_name: + description: | + If provided specifies the normal vector on sides that are added to the new + - name: type + required: No + default: !!str ParsedAddSideset + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variance + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + The variance [0.0 - 1.0] allowed when comparing normals + subblocks: + - name: /MeshModifiers/ParsedSubdomainMeshModifier + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + Subdomain id to set for inside of the combinatorial + - name: block_name + required: No + default: !!str + cpp_type: SubdomainName + group_name: + description: | + Subdomain name to set for inside of the combinatorial + - name: combinatorial_geometry + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Function expression encoding a combinatorial geometry + - name: constant_expressions + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of values for the constants in constant_names (can be an FParser expression) + - name: constant_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of constants used in the parsed function (use this for kB etc.) + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: disable_fpoptimizer + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Disable the function parser algebraic optimizer + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_ad_cache + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable cacheing of function derivatives for faster startup time + - name: enable_auto_optimize + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable automatic immediate optimization of derivatives + - name: enable_jit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable just-in-time compilation of function expressions for faster evaluation + - name: evalerror_behavior + required: No + default: !!str nan + cpp_type: MooseEnum + group_name: 'Advanced' + options: nan nan_warning error exception + description: | + What to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exception + - name: excluded_subdomain_ids + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + A set of subdomain ids that will not changed even if they are inside/outside the combinatorial geometry + - name: fail_on_evalerror + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Fail fatally if a function evaluation returns an error code (otherwise just pass on NaN) + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: type + required: No + default: !!str ParsedSubdomainMeshModifier + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshModifiers/RenameBlock + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: new_block_id + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with the old block number (or name) will be given this block number. If the old blocks are named, their names will be passed onto the newly numbered blocks. + - name: new_block_name + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with the old block number (or name) will be given this block name. No change of block ID is performed, unless multiple old blocks are given the same name, in which case they are all given the first old block number. + - name: old_block_id + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with this block number will be given the new_block_number or new_block_name. You must supply either old_block_id or old_block_name. You may supply a vector of old_block_id, in which case the new_block information must also be a vector. + - name: old_block_name + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Elements with this block name will be given the new_block_number or new_block_name. You must supply either old_block_id or old_block_name. You may supply a vector of old_block_name, in which case the new_block information must also be a vector. + - name: type + required: No + default: !!str RenameBlock + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshModifiers/SideSetsAroundSubdomain + description: | + + parameters: + - name: block + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The blocks around which to create sidesets + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: fixed_normal + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This Boolean determines whether we fix our normal or allow it to vary to "paint" around curves + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs to create on the supplied subdomain + - name: normal + required: No + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + If supplied, only faces with normal equal to this, up to normal_tol, will be added to the sidesets specified + - name: normal_tol + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + If normal is supplied then faces are only added if face_normal.normal_hat >= 1 - normal_tol, where normal_hat = normal/|normal| + - name: type + required: No + default: !!str SideSetsAroundSubdomain + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variance + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + The variance [0.0 - 1.0] allowed when comparing normals + subblocks: + - name: /MeshModifiers/SideSetsBetweenSubdomains + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: master_block + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The master set of blocks for which to draw a sideset between + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the boundary to create + - name: paired_block + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The paired set of blocks for which to draw a sideset between + - name: type + required: No + default: !!str SideSetsBetweenSubdomains + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshModifiers/SideSetsFromNormals + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: fixed_normal + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This Boolean determines whether we fix our normal or allow it to vary to "paint" around curves + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the boundary to create + - name: normals + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + A list of normals for which to start painting sidesets + - name: type + required: No + default: !!str SideSetsFromNormals + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variance + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + The variance [0.0 - 1.0] allowed when comparing normals + subblocks: + - name: /MeshModifiers/SideSetsFromPoints + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: fixed_normal + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This Boolean determines whether we fix our normal or allow it to vary to "paint" around curves + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: new_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the boundary to create + - name: points + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + A list of points from which to start painting sidesets + - name: type + required: No + default: !!str SideSetsFromPoints + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variance + required: No + default: !!str 0.1 + cpp_type: double + group_name: + description: | + The variance [0.0 - 1.0] allowed when comparing normals + subblocks: + - name: /MeshModifiers/SmoothMesh + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: iterations + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + The number of smoothing iterations to do. + - name: type + required: No + default: !!str SmoothMesh + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshModifiers/SubdomainBoundingBox + description: | + + parameters: + - name: block_id + required: Yes + default: !!str + cpp_type: unsigned short + group_name: + description: | + Subdomain id to set for inside/outside the bounding box + - name: block_name + required: No + default: !!str + cpp_type: SubdomainName + group_name: + description: | + Subdomain name to set for inside/outside the bounding box (optional) + - name: bottom_left + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: location + required: No + default: !!str INSIDE + cpp_type: MooseEnum + group_name: + options: INSIDE OUTSIDE + description: | + Control of where the subdomain id is to be set + - name: top_right + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The bottom left point (in x,y,z with spaces in-between). + - name: type + required: No + default: !!str SubdomainBoundingBox + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /MeshModifiers/Transform + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: depends_on + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The MeshModifiers that this modifier relies upon (i.e. must execute before this one) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: force_prepare + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Normally all MeshModifiers run before the mesh is prepared for use. This flag can be set on an individual modifier to force preparation between modifiers where they might be needed. + - name: transform + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: TRANSLATE ROTATE SCALE + description: | + The type of transformation to perform (TRANSLATE, ROTATE, SCALE) + - name: type + required: No + default: !!str Transform + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: vector_value + required: Yes + default: !!str + cpp_type: libMesh::VectorValue + group_name: + description: | + The value to use for the transformation. When using TRANSLATE or SCALE, the xyz coordinates are applied in each direction respectively. When using ROTATE, the values are interpreted as the Euler angles phi, theta and psi given in degrees. + subblocks: +- name: /MultiApps + description: | + + parameters: + subblocks: + - name: /MultiApps/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /MultiApps/CentroidMultiApp + description: | + + parameters: + - name: app_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: PlatypusApp PlatypusTestApp + description: | + The type of application to build (applications not registered can be loaded with dynamic libraries. Master application type will be used if not provided. + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: bounding_box_inflation + required: No + default: !!str 0.01 + cpp_type: double + group_name: + description: | + Relative amount to 'inflate' the bounding box of this MultiApp. + - name: bounding_box_padding + required: No + default: !!str 0 0 0 + cpp_type: libMesh::Point + group_name: + description: | + Additional padding added to the dimensions of the bounding box. The values are added to the x, y and z dimension respectively. + - name: catch_up + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true this will allow failed solves to attempt to 'catch up' using smaller timesteps. + - name: cli_args + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Additional command line arguments to pass to the sub apps. If one set is provided the arguments are applied to all, otherwise there must be a set for each sub app. + - name: clone_master_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to clone master mesh and use it for this MultiApp. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: detect_steady_state + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true then while sub_cycling a steady state check will be done. In this mode output will only be done once the MultiApp reaches the target time or steady state is reached + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_BEGIN + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: global_time_offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The time offset relative to the master application for the purpose of starting a subapp at different time from the master application. The global time will be ahead by the offset specified here. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: input_files + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The input file for each App. If this parameter only contains one input file it will be used for all of the Apps. When using 'positions_from_file' it is also admissable to provide one input_file per file. + - name: interpolate_transfers + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Only valid when sub_cycling. This allows transferred values to be interpolated over the time frame the MultiApp is executing over when sub_cycling + - name: keep_solution_during_restore + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This is useful when doing Picard. It takes the final solution from the previous Picard iterationand re-uses it as the initial guess for the next picard iteration + - name: library_name + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The file name of the library (*.la file) that will be dynamically loaded. + - name: library_path + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Path to search for dynamic libraries (please avoid committing absolute paths in addition to MOOSE_LIBRARY_PATH) + - name: max_catch_up_steps + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + Maximum number of steps to allow an app to take when trying to catch back up after a failed solve. + - name: max_failures + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Maximum number of solve failures tolerated while sub_cycling. + - name: max_procs_per_app + required: No + default: !!str 4294967295 + cpp_type: unsigned int + group_name: + description: | + Maximum number of processors to give to each App in this MultiApp. Useful for restricting small solves to just a few procs so they don't get spread out + - name: move_apps + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Apps, designated by their 'numbers' starting with 0 corresponding to the order of the App positions, to be moved at move_time to move_positions + - name: move_positions + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The positions corresponding to each move_app. + - name: move_time + required: No + default: !!str 1.79769e+308 + cpp_type: double + group_name: + description: | + The time at which Apps designated by move_apps are moved to move_positions. + - name: output_in_position + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true this will cause the output from the MultiApp to be 'moved' by its position vector + - name: output_sub_cycles + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true then every sub-cycle will be output. + - name: print_sub_cycles + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Toggle the display of sub-cycles on the screen. + - name: relaxation_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Fraction of newly computed value to keep.Set between 0 and 2. + - name: relaxed_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + List of variables to relax during Picard Iteration + - name: reset_apps + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The Apps that will be reset when 'reset_time' is hit. These are the App 'numbers' starting with 0 corresponding to the order of the App positions. Resetting an App means that it is destroyed and recreated, possibly modeling the insertion of 'new' material for that app. + - name: reset_time + required: No + default: !!str 1.79769e+308 + cpp_type: double + group_name: + description: | + The time at which to reset Apps given by the 'reset_apps' parameter. Resetting an App means that it is destroyed and recreated, possibly modeling the insertion of 'new' material for that app. + - name: steady_state_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: + description: | + The relative difference between the new solution and the old solution that will be considered to be at steady state + - name: sub_cycling + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true to allow this MultiApp to take smaller timesteps than the rest of the simulation. More than one timestep will be performed for each 'master' timestep + - name: tolerate_failure + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true this MultiApp won't participate in dt decisions and will always be fast-forwarded to the current time. + - name: type + required: No + default: !!str CentroidMultiApp + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /MultiApps/FullSolveMultiApp + description: | + + parameters: + - name: app_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: PlatypusApp PlatypusTestApp + description: | + The type of application to build (applications not registered can be loaded with dynamic libraries. Master application type will be used if not provided. + - name: bounding_box_inflation + required: No + default: !!str 0.01 + cpp_type: double + group_name: + description: | + Relative amount to 'inflate' the bounding box of this MultiApp. + - name: bounding_box_padding + required: No + default: !!str 0 0 0 + cpp_type: libMesh::Point + group_name: + description: | + Additional padding added to the dimensions of the bounding box. The values are added to the x, y and z dimension respectively. + - name: cli_args + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Additional command line arguments to pass to the sub apps. If one set is provided the arguments are applied to all, otherwise there must be a set for each sub app. + - name: clone_master_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to clone master mesh and use it for this MultiApp. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_BEGIN + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: global_time_offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The time offset relative to the master application for the purpose of starting a subapp at different time from the master application. The global time will be ahead by the offset specified here. + - name: input_files + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The input file for each App. If this parameter only contains one input file it will be used for all of the Apps. When using 'positions_from_file' it is also admissable to provide one input_file per file. + - name: keep_full_output_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to keep the full output history when this multiapp has multiple entries + - name: keep_solution_during_restore + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This is useful when doing Picard. It takes the final solution from the previous Picard iterationand re-uses it as the initial guess for the next picard iteration + - name: library_name + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The file name of the library (*.la file) that will be dynamically loaded. + - name: library_path + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Path to search for dynamic libraries (please avoid committing absolute paths in addition to MOOSE_LIBRARY_PATH) + - name: max_procs_per_app + required: No + default: !!str 4294967295 + cpp_type: unsigned int + group_name: + description: | + Maximum number of processors to give to each App in this MultiApp. Useful for restricting small solves to just a few procs so they don't get spread out + - name: move_apps + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Apps, designated by their 'numbers' starting with 0 corresponding to the order of the App positions, to be moved at move_time to move_positions + - name: move_positions + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The positions corresponding to each move_app. + - name: move_time + required: No + default: !!str 1.79769e+308 + cpp_type: double + group_name: + description: | + The time at which Apps designated by move_apps are moved to move_positions. + - name: no_backup_and_restore + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to turn off backup/restore for this multiapp. This is useful when doing steady-state Picard iterations where we want to use the solution of previous Picard iteration as the initial guess of the current Picard iteration + - name: output_in_position + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true this will cause the output from the MultiApp to be 'moved' by its position vector + - name: positions + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The positions of the App locations. Each set of 3 values will represent a Point. This and 'positions_file' cannot be both supplied. If this and 'positions_file' are not supplied, a single position (0,0,0) will be used + - name: positions_file + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + A filename that should be looked in for positions. Each set of 3 values in that file will represent a Point. This and 'positions' cannot be both supplied + - name: relaxation_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Fraction of newly computed value to keep.Set between 0 and 2. + - name: relaxed_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + List of variables to relax during Picard Iteration + - name: reset_apps + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The Apps that will be reset when 'reset_time' is hit. These are the App 'numbers' starting with 0 corresponding to the order of the App positions. Resetting an App means that it is destroyed and recreated, possibly modeling the insertion of 'new' material for that app. + - name: reset_time + required: No + default: !!str 1.79769e+308 + cpp_type: double + group_name: + description: | + The time at which to reset Apps given by the 'reset_apps' parameter. Resetting an App means that it is destroyed and recreated, possibly modeling the insertion of 'new' material for that app. + - name: type + required: No + default: !!str FullSolveMultiApp + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /MultiApps/TransientMultiApp + description: | + + parameters: + - name: app_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: PlatypusApp PlatypusTestApp + description: | + The type of application to build (applications not registered can be loaded with dynamic libraries. Master application type will be used if not provided. + - name: bounding_box_inflation + required: No + default: !!str 0.01 + cpp_type: double + group_name: + description: | + Relative amount to 'inflate' the bounding box of this MultiApp. + - name: bounding_box_padding + required: No + default: !!str 0 0 0 + cpp_type: libMesh::Point + group_name: + description: | + Additional padding added to the dimensions of the bounding box. The values are added to the x, y and z dimension respectively. + - name: catch_up + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true this will allow failed solves to attempt to 'catch up' using smaller timesteps. + - name: cli_args + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Additional command line arguments to pass to the sub apps. If one set is provided the arguments are applied to all, otherwise there must be a set for each sub app. + - name: clone_master_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to clone master mesh and use it for this MultiApp. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: detect_steady_state + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true then while sub_cycling a steady state check will be done. In this mode output will only be done once the MultiApp reaches the target time or steady state is reached + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_BEGIN + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: global_time_offset + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The time offset relative to the master application for the purpose of starting a subapp at different time from the master application. The global time will be ahead by the offset specified here. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: input_files + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The input file for each App. If this parameter only contains one input file it will be used for all of the Apps. When using 'positions_from_file' it is also admissable to provide one input_file per file. + - name: interpolate_transfers + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Only valid when sub_cycling. This allows transferred values to be interpolated over the time frame the MultiApp is executing over when sub_cycling + - name: keep_solution_during_restore + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This is useful when doing Picard. It takes the final solution from the previous Picard iterationand re-uses it as the initial guess for the next picard iteration + - name: library_name + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The file name of the library (*.la file) that will be dynamically loaded. + - name: library_path + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Path to search for dynamic libraries (please avoid committing absolute paths in addition to MOOSE_LIBRARY_PATH) + - name: max_catch_up_steps + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + Maximum number of steps to allow an app to take when trying to catch back up after a failed solve. + - name: max_failures + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Maximum number of solve failures tolerated while sub_cycling. + - name: max_procs_per_app + required: No + default: !!str 4294967295 + cpp_type: unsigned int + group_name: + description: | + Maximum number of processors to give to each App in this MultiApp. Useful for restricting small solves to just a few procs so they don't get spread out + - name: move_apps + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Apps, designated by their 'numbers' starting with 0 corresponding to the order of the App positions, to be moved at move_time to move_positions + - name: move_positions + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The positions corresponding to each move_app. + - name: move_time + required: No + default: !!str 1.79769e+308 + cpp_type: double + group_name: + description: | + The time at which Apps designated by move_apps are moved to move_positions. + - name: output_in_position + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true this will cause the output from the MultiApp to be 'moved' by its position vector + - name: output_sub_cycles + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true then every sub-cycle will be output. + - name: positions + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The positions of the App locations. Each set of 3 values will represent a Point. This and 'positions_file' cannot be both supplied. If this and 'positions_file' are not supplied, a single position (0,0,0) will be used + - name: positions_file + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + A filename that should be looked in for positions. Each set of 3 values in that file will represent a Point. This and 'positions' cannot be both supplied + - name: print_sub_cycles + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Toggle the display of sub-cycles on the screen. + - name: relaxation_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Fraction of newly computed value to keep.Set between 0 and 2. + - name: relaxed_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + List of variables to relax during Picard Iteration + - name: reset_apps + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The Apps that will be reset when 'reset_time' is hit. These are the App 'numbers' starting with 0 corresponding to the order of the App positions. Resetting an App means that it is destroyed and recreated, possibly modeling the insertion of 'new' material for that app. + - name: reset_time + required: No + default: !!str 1.79769e+308 + cpp_type: double + group_name: + description: | + The time at which to reset Apps given by the 'reset_apps' parameter. Resetting an App means that it is destroyed and recreated, possibly modeling the insertion of 'new' material for that app. + - name: steady_state_tol + required: No + default: !!str 1e-08 + cpp_type: double + group_name: + description: | + The relative difference between the new solution and the old solution that will be considered to be at steady state + - name: sub_cycling + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true to allow this MultiApp to take smaller timesteps than the rest of the simulation. More than one timestep will be performed for each 'master' timestep + - name: tolerate_failure + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true this MultiApp won't participate in dt decisions and will always be fast-forwarded to the current time. + - name: type + required: No + default: !!str TransientMultiApp + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: +- name: /NodalKernels + description: | + + parameters: + subblocks: + - name: /NodalKernels/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /NodalKernels/ConstantRate + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: rate + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The constant rate in 'du/dt = rate' + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ConstantRate + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /NodalKernels/CoupledForceNodalKernel + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: coef + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Coefficent ($\sigma$) multiplier for the coupled force term. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str CoupledForceNodalKernel + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The coupled variable which provides the force + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /NodalKernels/LowerBoundNodalKernel + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: exclude_boundaries + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Boundaries on which not to execute the NodalKernel. This can be useful for avoiding singuarility in the matrix in case a constraint is active in the same place that a DirichletBC is set + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: lower_bound + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The lower bound on the coupled variable + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str LowerBoundNodalKernel + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The coupled variable we require to be greater than the lower bound + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /NodalKernels/PenaltyDirichletNodalKernel + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: penalty + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Penalty scalar + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str PenaltyDirichletNodalKernel + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Boundary value of the variable + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /NodalKernels/ReactionNodalKernel + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: coeff + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + A coefficient for multiplying the reaction term + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ReactionNodalKernel + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /NodalKernels/TimeDerivativeNodalKernel + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str TimeDerivativeNodalKernel + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /NodalKernels/UpperBoundNodalKernel + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: exclude_boundaries + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Boundaries on which not to execute the NodalKernel. This can be useful for avoiding singuarility in the matrix in case a constraint is active in the same place that a DirichletBC is set + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str UpperBoundNodalKernel + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: upper_bound + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The upper bound on the coupled variable + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The coupled variable we require to be greater than the upper bound + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /NodalKernels/UserForcingFunctionNodalKernel + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diag_save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The forcing function + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: save_in + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str UserForcingFunctionNodalKernel + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this boundary condition applies to + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: +- name: /NodalNormals + description: | + + parameters: + - name: boundary + required: No + default: !!str ANY_BOUNDARY_ID + cpp_type: std::vector > + group_name: + description: | + The boundary ID or name where the normals will be computed + - name: corner_boundary + required: No + default: !!str + cpp_type: BoundaryName + group_name: + description: | + boundary ID or name with nodes at 'corners' + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: FIRST SECOND + description: | + Specifies the order of variables that hold the nodal normals. Needs to match the order of the mesh + subblocks: +- name: /Outputs + description: | + + parameters: + - name: append_date + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the date and time are appended to the output filename. + - name: append_date_format + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The format of the date/time to append (see http://www.cplusplus.com/reference/ctime/strftime). + - name: checkpoint + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Create checkpoint files using the default options. + - name: color + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Set to false to turn off all coloring in all outputs + - name: console + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Output the results using the default settings for Console output + - name: controls + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable the screen output of Control systems. + - name: csv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Output the scalar variable and postprocessors to a *.csv file using the default CSV output. + - name: dofmap + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Create the dof map .json output file + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: exodus + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Output the results using the default settings for Exodus output. + - name: file_base + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Common file base name to be utilized with all output objects + - name: gmv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Output the results using the default settings for GMV output + - name: gnuplot + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Output the scalar and postprocessor results using the default settings for GNUPlot output + - name: hide + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + The interval at which timesteps are output to the solution file. + - name: nemesis + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Output the results using the default settings for Nemesis output + - name: output_if_base_contains + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps. + - name: perf_graph + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable printing of the performance graph to the screen (Console) + - name: print_linear_residuals + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable printing of linear residuals to the screen (Console) + - name: print_mesh_changed_info + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true, each time the mesh is changed the mesh information is printed + - name: print_perf_log + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Use perf_graph instead! + - name: show + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + A list of the variables and postprocessors that should be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: solution_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Print a solution history file (.slh) using the default settings + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Times at which the output and solution is forced to occur + - name: tecplot + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Output the results using the default settings for Tecplot output + - name: vtk + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Output the results using the default settings for VTKOutput output + - name: xda + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Output the results using the default settings for XDA/XDR output (ascii) + - name: xdr + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Output the results using the default settings for XDA/XDR output (binary) + - name: xml + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Output the vector postprocessors to a *.xml file using the default XML output. + subblocks: + - name: /Outputs/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Outputs/CSV + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: align + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Align the outputted csv data by padding the numbers with trailing whitespace + - name: append_date + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the date and time are appended to the output filename. + - name: append_date_format + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The format of the date/time to append, if not given UTC format is used (see http://www.cplusplus.com/reference/ctime/strftime). + - name: append_restart + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Append existing file on restart + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: create_final_symlink + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the creation of a _FINAL symlink for vector postprocessor data with 'execute_on' includes 'FINAL'. + - name: create_latest_symlink + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the creation of a _LATEST symlink for vector postprocessor data. + - name: delimiter + required: No + default: !!str "," + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Assign the delimiter (default is ',' + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_elemental_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of elemental variables + - name: execute_input + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of input file information + - name: execute_nodal_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of nodal variables + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: execute_postprocessors_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Control of when postprocessors are output + - name: execute_scalar_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of aux scalar variables + - name: execute_scalars_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Control the output of scalar variables + - name: execute_system_information + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of the simulation information + - name: execute_vector_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of vector postprocessors + - name: execute_vector_postprocessors_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Enable/disable the output of VectorPostprocessors + - name: file_base + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it. + - name: hide + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: linear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting linear residuals + - name: linear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each linear residual evaluation + - name: linear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each linear residual evaluation + - name: linear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each linear residual evaluation + - name: new_row_tolerance + required: No + default: !!str 1e-12 + cpp_type: double + group_name: + description: | + The independent variable tolerance for determining when a new row should be added to the table (Note: This value must be set independently for Postprocessor output to type=Console and type=CSV file separately. + - name: nonlinear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting non-linear residuals + - name: nonlinear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each nonlinear residual evaluation + - name: nonlinear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each nonlinear residual evaluation + - name: nonlinear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_if_base_contains + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + If this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps. + - name: output_linear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each linear residual evaluation + - name: output_nonlinear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of postprocessors + - name: precision + required: No + default: !!str 14 + cpp_type: unsigned int + group_name: + description: | + Set the output precision + - name: show + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: sort_columns + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Toggle the sorting of columns alphabetically. + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_column + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not the 'time' column should be written for Postprocessor CSV files + - name: time_data + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true and VecptorPostprocessor data exists, write a csv file containing the timestep and time information. + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str CSV + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: + - name: /Outputs/Checkpoint + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: append_date + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the date and time are appended to the output filename. + - name: append_date_format + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The format of the date/time to append, if not given UTC format is used (see http://www.cplusplus.com/reference/ctime/strftime). + - name: binary + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Toggle the output of binary files + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: file_base + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it. + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: linear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting linear residuals + - name: linear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each linear residual evaluation + - name: linear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each linear residual evaluation + - name: linear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each linear residual evaluation + - name: nonlinear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting non-linear residuals + - name: nonlinear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each nonlinear residual evaluation + - name: nonlinear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each nonlinear residual evaluation + - name: nonlinear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: num_files + required: No + default: !!str 2 + cpp_type: unsigned int + group_name: + description: | + Number of the restart files to save + - name: output_if_base_contains + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + If this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps. + - name: output_linear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each linear residual evaluation + - name: output_nonlinear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: padding + required: No + default: !!str 4 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of for extension suffix (e.g., out.e-s002) + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: suffix + required: No + default: !!str cp + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + This will be appended to the file_base to create the directory name for checkpoint files. + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str Checkpoint + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: + - name: /Outputs/Console + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: all_variable_norms + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Norms' + description: | + If true, all variable norms will be printed after each solve + - name: append_date + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the date and time are appended to the output filename. + - name: append_date_format + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The format of the date/time to append, if not given UTC format is used (see http://www.cplusplus.com/reference/ctime/strftime). + - name: append_restart + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Append existing file on restart + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_elemental_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of elemental variables + - name: execute_input + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of input file information + - name: execute_input_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Enable/disable the output of the input file + - name: execute_nodal_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of nodal variables + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_BEGIN LINEAR NONLINEAR FAILED + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: execute_postprocessors_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Control of when postprocessors are output + - name: execute_scalar_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of aux scalar variables + - name: execute_scalars_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Control the output of scalar variables + - name: execute_system_information + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of the simulation information + - name: execute_system_information_on + required: No + default: !!str INITIAL + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Control when the output of the simulation information occurs + - name: execute_vector_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of vector postprocessors + - name: execute_vector_postprocessors_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Enable/disable the output of VectorPostprocessors + - name: file_base + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it. + - name: fit_mode + required: No + default: !!str ENVIRONMENT + cpp_type: MooseEnum + group_name: + options: ENVIRONMENT AUTO 80 120 160 + description: | + Specifies the wrapping mode for post-processor tables that are printed to the screen (ENVIRONMENT: Read "MOOSE_PPS_WIDTH" for desired width, AUTO: Attempt to determine width automatically (serial only), : Desired width + - name: hide + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: libmesh_log + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Performance Log' + description: | + Print the libMesh performance log, requires libMesh to be configured with --enable-perflog + - name: linear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting linear residuals + - name: linear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each linear residual evaluation + - name: linear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each linear residual evaluation + - name: linear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each linear residual evaluation + - name: max_rows + required: No + default: !!str 15 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The maximum number of postprocessor/scalar values displayed on screen during a timestep (set to 0 for unlimited) + - name: new_row_tolerance + required: No + default: !!str 1e-12 + cpp_type: double + group_name: + description: | + The independent variable tolerance for determining when a new row should be added to the table (Note: This value must be set independently for Postprocessor output to type=Console and type=CSV file separately. + - name: nonlinear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting non-linear residuals + - name: nonlinear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each nonlinear residual evaluation + - name: nonlinear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each nonlinear residual evaluation + - name: nonlinear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: outlier_multiplier + required: No + default: !!str 0.8 2 + cpp_type: std::vector > + group_name: 'Norms' + description: | + Multiplier utilized to determine if a residual norm is an outlier. If the variable residual is less than multiplier[0] times the total residual it is colored red. If the variable residual is less than multiplier[1] times the average residual it is colored yellow. + - name: outlier_variable_norms + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Norms' + description: | + If true, outlier variable norms will be printed after each solve + - name: output_file + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Output to the file + - name: output_if_base_contains + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + If this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps. + - name: output_linear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each linear residual evaluation + - name: output_nonlinear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of postprocessors + - name: output_screen + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Output to the screen + - name: padding + required: No + default: !!str 4 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of for extension suffix (e.g., out.e-s002) + - name: perf_header + required: No + default: !!str + cpp_type: bool + group_name: 'Perf Log' + description: | + Print the libMesh performance log header (requires that 'perf_log = true') + - name: perf_log + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Perf Log' + description: | + If true, all performance logs will be printed. The individual log settings will override this option. + - name: perf_log_interval + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + If set, the performance log will be printed every n time steps + - name: print_mesh_changed_info + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true, each time the mesh is changed the mesh information is printed + - name: scientific_time + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Control the printing of time and dt in scientific notation + - name: show + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: show_multiapp_name + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Indent multiapp output using the multiapp name + - name: solve_log + required: No + default: !!str + cpp_type: bool + group_name: 'Perf Log' + description: | + Toggles the printing of the 'Moose Test Performance' log + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: system_info + required: No + default: !!str framework mesh aux nonlinear execution + cpp_type: MultiMooseEnum + group_name: 'Advanced' + options: framework mesh aux nonlinear relationship execution output + description: | + List of information types to display ('framework', 'mesh', 'aux', 'nonlinear', 'relationship', 'execution', 'output') + - name: time_column + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not the 'time' column should be written for Postprocessor CSV files + - name: time_data + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true and VecptorPostprocessor data exists, write a csv file containing the timestep and time information. + - name: time_precision + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of significant digits that are printed on time related outputs + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str Console + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + - name: verbose + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Print detailed diagnostics on timestep calculation + subblocks: + - name: /Outputs/ControlOutput + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: clear_after_output + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Clear the active control display after each output. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_BEGIN + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: show_active_objects + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + List active MooseObjects. + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str ControlOutput + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: + - name: /Outputs/DOFMap + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: append_date + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the date and time are appended to the output filename. + - name: append_date_format + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The format of the date/time to append, if not given UTC format is used (see http://www.cplusplus.com/reference/ctime/strftime). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_on + required: No + default: !!str INITIAL + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: file_base + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it. + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: linear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting linear residuals + - name: linear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each linear residual evaluation + - name: linear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each linear residual evaluation + - name: linear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each linear residual evaluation + - name: nonlinear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting non-linear residuals + - name: nonlinear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each nonlinear residual evaluation + - name: nonlinear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each nonlinear residual evaluation + - name: nonlinear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_file + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Output to the file + - name: output_if_base_contains + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + If this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps. + - name: output_linear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each linear residual evaluation + - name: output_nonlinear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_screen + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Output to the screen + - name: padding + required: No + default: !!str 4 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of for extension suffix (e.g., out.e-s002) + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: system_name + required: No + default: !!str nl0 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + System to output + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str DOFMap + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: + - name: /Outputs/Exodus + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: append_date + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the date and time are appended to the output filename. + - name: append_date_format + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The format of the date/time to append, if not given UTC format is used (see http://www.cplusplus.com/reference/ctime/strftime). + - name: append_oversample + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Append '_oversample' to the output file base + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: discontinuous + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enables discontinuous output format for Exodus files. + - name: elemental_as_nodal + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Variables' + description: | + Output elemental nonlinear variables as nodal + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_elemental_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Control the output of elemental variables + - name: execute_elemental_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of elemental variables + - name: execute_input + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of input file information + - name: execute_input_on + required: No + default: !!str INITIAL + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Enable/disable the output of the input file + - name: execute_nodal_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Control the output of nodal variables + - name: execute_nodal_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of nodal variables + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: execute_postprocessors_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Control of when postprocessors are output + - name: execute_scalar_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of aux scalar variables + - name: execute_scalars_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Control the output of scalar variables + - name: execute_system_information + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of the simulation information + - name: execute_vector_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of vector postprocessors + - name: file + required: No + default: !!str + cpp_type: MeshFileName + group_name: 'Oversampling' + description: | + The name of the mesh file to read, for oversampling + - name: file_base + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it. + - name: hide + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: linear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting linear residuals + - name: linear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each linear residual evaluation + - name: linear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each linear residual evaluation + - name: linear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each linear residual evaluation + - name: nonlinear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting non-linear residuals + - name: nonlinear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each nonlinear residual evaluation + - name: nonlinear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each nonlinear residual evaluation + - name: nonlinear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_dimension + required: No + default: !!str default + cpp_type: MooseEnum + group_name: 'Advanced' + options: default 1 2 3 problem_dimension + description: | + The dimension of the output file + - name: output_if_base_contains + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + If this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps. + - name: output_linear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each linear residual evaluation + - name: output_material_properties + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Materials' + description: | + Flag indicating if material properties should be output + - name: output_nonlinear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of postprocessors + - name: oversample + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true to enable oversampling + - name: overwrite + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the latest timestep will overwrite the existing file, so only a single timestep exists. + - name: padding + required: No + default: !!str 3 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of for extension suffix (e.g., out.e-s002) + - name: position + required: No + default: !!str + cpp_type: libMesh::Point + group_name: 'Oversampling' + description: | + Set a positional offset, this vector will get added to the nodal coordinates to move the domain. + - name: refinements + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Oversampling' + description: | + Number of uniform refinements for oversampling (refinement levels beyond any uniform refinements) + - name: scalar_as_nodal + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Variables' + description: | + Output scalar variables as nodal + - name: sequence + required: No + default: !!str + cpp_type: bool + group_name: + description: | + Enable/disable sequential file output (enabled by default when 'use_displace = true', otherwise defaults to false + - name: show + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: show_material_properties + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Materials' + description: | + List of materialproperties that should be written to the output + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str Exodus + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + - name: use_problem_dimension + required: No + default: !!str + cpp_type: bool + group_name: + description: | + Use the problem dimension to the mesh output. Set to false when outputting lower dimensional meshes embedded in a higher dimensional space. + subblocks: + - name: /Outputs/GMV + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: append_date + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the date and time are appended to the output filename. + - name: append_date_format + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The format of the date/time to append, if not given UTC format is used (see http://www.cplusplus.com/reference/ctime/strftime). + - name: append_oversample + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Append '_oversample' to the output file base + - name: binary + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Output the file in binary format + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_elemental_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of elemental variables + - name: execute_input + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of input file information + - name: execute_nodal_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of nodal variables + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: execute_scalar_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of aux scalar variables + - name: execute_system_information + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of the simulation information + - name: execute_vector_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of vector postprocessors + - name: file + required: No + default: !!str + cpp_type: MeshFileName + group_name: 'Oversampling' + description: | + The name of the mesh file to read, for oversampling + - name: file_base + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it. + - name: hide + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: linear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting linear residuals + - name: linear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each linear residual evaluation + - name: linear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each linear residual evaluation + - name: linear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each linear residual evaluation + - name: nonlinear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting non-linear residuals + - name: nonlinear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each nonlinear residual evaluation + - name: nonlinear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each nonlinear residual evaluation + - name: nonlinear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_if_base_contains + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + If this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps. + - name: output_linear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each linear residual evaluation + - name: output_nonlinear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of postprocessors + - name: oversample + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true to enable oversampling + - name: padding + required: No + default: !!str 4 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of for extension suffix (e.g., out.e-s002) + - name: position + required: No + default: !!str + cpp_type: libMesh::Point + group_name: 'Oversampling' + description: | + Set a positional offset, this vector will get added to the nodal coordinates to move the domain. + - name: refinements + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Oversampling' + description: | + Number of uniform refinements for oversampling (refinement levels beyond any uniform refinements) + - name: show + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str GMV + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: + - name: /Outputs/Gnuplot + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: append_date + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the date and time are appended to the output filename. + - name: append_date_format + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The format of the date/time to append, if not given UTC format is used (see http://www.cplusplus.com/reference/ctime/strftime). + - name: append_restart + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Append existing file on restart + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_elemental_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of elemental variables + - name: execute_input + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of input file information + - name: execute_nodal_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of nodal variables + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: execute_postprocessors_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Control of when postprocessors are output + - name: execute_scalar_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of aux scalar variables + - name: execute_scalars_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Control the output of scalar variables + - name: execute_system_information + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of the simulation information + - name: execute_vector_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of vector postprocessors + - name: execute_vector_postprocessors_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Enable/disable the output of VectorPostprocessors + - name: extension + required: No + default: !!str png + cpp_type: MooseEnum + group_name: + options: png ps gif + description: | + GNU plot file extension + - name: file_base + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it. + - name: hide + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: linear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting linear residuals + - name: linear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each linear residual evaluation + - name: linear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each linear residual evaluation + - name: linear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each linear residual evaluation + - name: new_row_tolerance + required: No + default: !!str 1e-12 + cpp_type: double + group_name: + description: | + The independent variable tolerance for determining when a new row should be added to the table (Note: This value must be set independently for Postprocessor output to type=Console and type=CSV file separately. + - name: nonlinear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting non-linear residuals + - name: nonlinear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each nonlinear residual evaluation + - name: nonlinear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each nonlinear residual evaluation + - name: nonlinear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_if_base_contains + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + If this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps. + - name: output_linear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each linear residual evaluation + - name: output_nonlinear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of postprocessors + - name: padding + required: No + default: !!str 4 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of for extension suffix (e.g., out.e-s002) + - name: show + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_column + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not the 'time' column should be written for Postprocessor CSV files + - name: time_data + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true and VecptorPostprocessor data exists, write a csv file containing the timestep and time information. + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str Gnuplot + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: + - name: /Outputs/MaterialPropertyDebugOutput + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str MaterialPropertyDebugOutput + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: + - name: /Outputs/Nemesis + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: append_date + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the date and time are appended to the output filename. + - name: append_date_format + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The format of the date/time to append, if not given UTC format is used (see http://www.cplusplus.com/reference/ctime/strftime). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_elemental_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of elemental variables + - name: execute_input + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of input file information + - name: execute_input_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Enable/disable the output of the input file + - name: execute_nodal_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of nodal variables + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: execute_postprocessors_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Control of when postprocessors are output + - name: execute_scalar_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of aux scalar variables + - name: execute_scalars_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Control the output of scalar variables + - name: execute_system_information + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of the simulation information + - name: execute_vector_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of vector postprocessors + - name: file_base + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it. + - name: hide + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: linear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting linear residuals + - name: linear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each linear residual evaluation + - name: linear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each linear residual evaluation + - name: linear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each linear residual evaluation + - name: nonlinear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting non-linear residuals + - name: nonlinear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each nonlinear residual evaluation + - name: nonlinear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each nonlinear residual evaluation + - name: nonlinear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_if_base_contains + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + If this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps. + - name: output_linear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each linear residual evaluation + - name: output_nonlinear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of postprocessors + - name: padding + required: No + default: !!str 4 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of for extension suffix (e.g., out.e-s002) + - name: show + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str Nemesis + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: + - name: /Outputs/PerfGraphOutput + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_on + required: No + default: !!str FINAL + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: heaviest_branch + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to print out the trace through the code that took the longest amount of time + - name: heaviest_sections + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The number of sections to print out showing the parts of the code that take the most time. When '0' it won't print at all. + - name: hide + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + A list of the variables and postprocessors that should NOT be output to thefile (may include Variables, ScalarVariables, and Postprocessor names). + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: level + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + The level of detail to output. Higher levels will yield more detail. + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str PerfGraphOutput + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: + - name: /Outputs/SolutionHistory + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: append_date + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the date and time are appended to the output filename. + - name: append_date_format + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The format of the date/time to append, if not given UTC format is used (see http://www.cplusplus.com/reference/ctime/strftime). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: file_base + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it. + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: linear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting linear residuals + - name: linear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each linear residual evaluation + - name: linear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each linear residual evaluation + - name: linear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each linear residual evaluation + - name: nonlinear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting non-linear residuals + - name: nonlinear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each nonlinear residual evaluation + - name: nonlinear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each nonlinear residual evaluation + - name: nonlinear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_if_base_contains + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + If this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps. + - name: output_linear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each linear residual evaluation + - name: output_nonlinear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: padding + required: No + default: !!str 4 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of for extension suffix (e.g., out.e-s002) + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str SolutionHistory + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: + - name: /Outputs/Tecplot + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: append_date + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the date and time are appended to the output filename. + - name: append_date_format + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The format of the date/time to append, if not given UTC format is used (see http://www.cplusplus.com/reference/ctime/strftime). + - name: append_oversample + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Append '_oversample' to the output file base + - name: ascii_append + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + If true, append to an existing ASCII file rather than creating a new file each time + - name: binary + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Set Tecplot files to output in binary format + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_elemental_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of elemental variables + - name: execute_input + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of input file information + - name: execute_nodal_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of nodal variables + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: execute_scalar_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of aux scalar variables + - name: execute_system_information + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of the simulation information + - name: execute_vector_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of vector postprocessors + - name: file + required: No + default: !!str + cpp_type: MeshFileName + group_name: 'Oversampling' + description: | + The name of the mesh file to read, for oversampling + - name: file_base + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it. + - name: hide + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: linear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting linear residuals + - name: linear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each linear residual evaluation + - name: linear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each linear residual evaluation + - name: linear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each linear residual evaluation + - name: nonlinear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting non-linear residuals + - name: nonlinear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each nonlinear residual evaluation + - name: nonlinear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each nonlinear residual evaluation + - name: nonlinear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_if_base_contains + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + If this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps. + - name: output_linear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each linear residual evaluation + - name: output_nonlinear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of postprocessors + - name: oversample + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true to enable oversampling + - name: padding + required: No + default: !!str 4 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of for extension suffix (e.g., out.e-s002) + - name: position + required: No + default: !!str + cpp_type: libMesh::Point + group_name: 'Oversampling' + description: | + Set a positional offset, this vector will get added to the nodal coordinates to move the domain. + - name: refinements + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Oversampling' + description: | + Number of uniform refinements for oversampling (refinement levels beyond any uniform refinements) + - name: show + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str Tecplot + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: + - name: /Outputs/TopResidualDebugOutput + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_on + required: No + default: !!str LINEAR NONLINEAR TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: linear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting linear residuals + - name: linear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each linear residual evaluation + - name: linear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each linear residual evaluation + - name: linear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each linear residual evaluation + - name: nonlinear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting non-linear residuals + - name: nonlinear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each nonlinear residual evaluation + - name: nonlinear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each nonlinear residual evaluation + - name: nonlinear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: num_residuals + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The number of top residuals to print out (0 = no output) + - name: output_linear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each linear residual evaluation + - name: output_nonlinear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str TopResidualDebugOutput + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: + - name: /Outputs/VTK + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: append_date + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the date and time are appended to the output filename. + - name: append_date_format + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The format of the date/time to append, if not given UTC format is used (see http://www.cplusplus.com/reference/ctime/strftime). + - name: append_oversample + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Append '_oversample' to the output file base + - name: binary + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Set VTK files to output in binary format + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_elemental_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of elemental variables + - name: execute_input + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of input file information + - name: execute_nodal_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of nodal variables + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: execute_scalar_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of aux scalar variables + - name: execute_system_information + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of the simulation information + - name: execute_vector_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of vector postprocessors + - name: file + required: No + default: !!str + cpp_type: MeshFileName + group_name: 'Oversampling' + description: | + The name of the mesh file to read, for oversampling + - name: file_base + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it. + - name: hide + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: linear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting linear residuals + - name: linear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each linear residual evaluation + - name: linear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each linear residual evaluation + - name: linear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each linear residual evaluation + - name: nonlinear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting non-linear residuals + - name: nonlinear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each nonlinear residual evaluation + - name: nonlinear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each nonlinear residual evaluation + - name: nonlinear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_if_base_contains + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + If this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps. + - name: output_linear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each linear residual evaluation + - name: output_nonlinear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of postprocessors + - name: oversample + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true to enable oversampling + - name: padding + required: No + default: !!str 3 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of for extension suffix (e.g., out.e-s002) + - name: position + required: No + default: !!str + cpp_type: libMesh::Point + group_name: 'Oversampling' + description: | + Set a positional offset, this vector will get added to the nodal coordinates to move the domain. + - name: refinements + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Oversampling' + description: | + Number of uniform refinements for oversampling (refinement levels beyond any uniform refinements) + - name: show + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str VTK + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: + - name: /Outputs/VariableResidualNormsDebugOutput + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: linear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting linear residuals + - name: linear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each linear residual evaluation + - name: linear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each linear residual evaluation + - name: linear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each linear residual evaluation + - name: nonlinear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting non-linear residuals + - name: nonlinear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each nonlinear residual evaluation + - name: nonlinear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each nonlinear residual evaluation + - name: nonlinear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_linear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each linear residual evaluation + - name: output_nonlinear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str VariableResidualNormsDebugOutput + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: + - name: /Outputs/XDA + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: append_date + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the date and time are appended to the output filename. + - name: append_date_format + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The format of the date/time to append, if not given UTC format is used (see http://www.cplusplus.com/reference/ctime/strftime). + - name: append_oversample + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Append '_oversample' to the output file base + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_elemental_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of elemental variables + - name: execute_input + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of input file information + - name: execute_nodal_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of nodal variables + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: execute_scalar_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of aux scalar variables + - name: execute_system_information + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of the simulation information + - name: execute_vector_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of vector postprocessors + - name: file + required: No + default: !!str + cpp_type: MeshFileName + group_name: 'Oversampling' + description: | + The name of the mesh file to read, for oversampling + - name: file_base + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it. + - name: hide + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: linear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting linear residuals + - name: linear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each linear residual evaluation + - name: linear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each linear residual evaluation + - name: linear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each linear residual evaluation + - name: nonlinear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting non-linear residuals + - name: nonlinear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each nonlinear residual evaluation + - name: nonlinear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each nonlinear residual evaluation + - name: nonlinear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_if_base_contains + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + If this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps. + - name: output_linear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each linear residual evaluation + - name: output_nonlinear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of postprocessors + - name: oversample + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true to enable oversampling + - name: padding + required: No + default: !!str 4 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of for extension suffix (e.g., out.e-s002) + - name: position + required: No + default: !!str + cpp_type: libMesh::Point + group_name: 'Oversampling' + description: | + Set a positional offset, this vector will get added to the nodal coordinates to move the domain. + - name: refinements + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Oversampling' + description: | + Number of uniform refinements for oversampling (refinement levels beyond any uniform refinements) + - name: show + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str XDA + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: + - name: /Outputs/XDR + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: append_date + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the date and time are appended to the output filename. + - name: append_date_format + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The format of the date/time to append, if not given UTC format is used (see http://www.cplusplus.com/reference/ctime/strftime). + - name: append_oversample + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Append '_oversample' to the output file base + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_elemental_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of elemental variables + - name: execute_input + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of input file information + - name: execute_nodal_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of nodal variables + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: execute_scalar_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of aux scalar variables + - name: execute_system_information + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of the simulation information + - name: execute_vector_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of vector postprocessors + - name: file + required: No + default: !!str + cpp_type: MeshFileName + group_name: 'Oversampling' + description: | + The name of the mesh file to read, for oversampling + - name: file_base + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it. + - name: hide + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: linear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting linear residuals + - name: linear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each linear residual evaluation + - name: linear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each linear residual evaluation + - name: linear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each linear residual evaluation + - name: nonlinear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting non-linear residuals + - name: nonlinear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each nonlinear residual evaluation + - name: nonlinear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each nonlinear residual evaluation + - name: nonlinear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_if_base_contains + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + If this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps. + - name: output_linear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each linear residual evaluation + - name: output_nonlinear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of postprocessors + - name: oversample + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true to enable oversampling + - name: padding + required: No + default: !!str 4 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of for extension suffix (e.g., out.e-s002) + - name: position + required: No + default: !!str + cpp_type: libMesh::Point + group_name: 'Oversampling' + description: | + Set a positional offset, this vector will get added to the nodal coordinates to move the domain. + - name: refinements + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Oversampling' + description: | + Number of uniform refinements for oversampling (refinement levels beyond any uniform refinements) + - name: show + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str XDR + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: + - name: /Outputs/XMLOutput + description: | + + parameters: + - name: additional_execute_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: append_date + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the date and time are appended to the output filename. + - name: append_date_format + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The format of the date/time to append, if not given UTC format is used (see http://www.cplusplus.com/reference/ctime/strftime). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object stop operating + - name: end_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object stop operating + - name: execute_elemental_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of elemental variables + - name: execute_input + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of input file information + - name: execute_nodal_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of nodal variables + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, FAILED, CUSTOM. + - name: execute_scalar_variables + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of aux scalar variables + - name: execute_system_information + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of the simulation information + - name: execute_vector_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of vector postprocessors + - name: execute_vector_postprocessors_on + required: No + default: !!str + cpp_type: ExecFlagEnum + group_name: 'Variables' + description: | + Enable/disable the output of VectorPostprocessors + - name: file_base + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The desired solution output name without an extension. If not provided, MOOSE sets it with Outputs/file_base when available. Otherwise, MOOSE uses input file name and this object name for a master input or uses master file_base, the subapp name and this object name for a subapp input to set it. + - name: hide + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: interval + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: 'Timing' + description: | + The interval at which time steps are output to the solution file + - name: linear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting linear residuals + - name: linear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each linear residual evaluation + - name: linear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each linear residual evaluation + - name: linear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each linear residual evaluation + - name: nonlinear_residual_dt_divisor + required: No + default: !!str 1000 + cpp_type: double + group_name: 'PETSc' + description: | + Number of divisions applied to time step when outputting non-linear residuals + - name: nonlinear_residual_end_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies an end time to begin output on each nonlinear residual evaluation + - name: nonlinear_residual_start_time + required: No + default: !!str + cpp_type: double + group_name: 'PETSc' + description: | + Specifies a start time to begin output on each nonlinear residual evaluation + - name: nonlinear_residuals + required: No + default: !!str 0 + cpp_type: bool + group_name: 'PETSc' + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_if_base_contains + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + If this is supplied then output will only be done in the case that the output base contains one of these strings. This is helpful in outputting only a subset of outputs when using MultiApps. + - name: output_linear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each linear residual evaluation + - name: output_nonlinear + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Specifies whether output occurs on each nonlinear residual evaluation + - name: output_postprocessors + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Enable/disable the output of postprocessors + - name: padding + required: No + default: !!str 4 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The number of for extension suffix (e.g., out.e-s002) + - name: show + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Variables' + description: | + A list of the variables and postprocessors that should be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names). + - name: start_step + required: No + default: !!str + cpp_type: int + group_name: + description: | + Time step at which this output object begins to operate + - name: start_time + required: No + default: !!str + cpp_type: double + group_name: 'Timing' + description: | + Time at which this output object begins to operate + - name: sync_only + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Timing' + description: | + Only export results at sync times + - name: sync_times + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Timing' + description: | + Times at which the output and solution is forced to occur + - name: time_tolerance + required: No + default: !!str 1e-14 + cpp_type: double + group_name: 'Timing' + description: | + Time tolerance utilized checking start and end times + - name: type + required: No + default: !!str XMLOutput + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Enable/disable the use of the displaced mesh for outputting + subblocks: +- name: /Postprocessors + description: | + + parameters: + subblocks: + - name: /Postprocessors/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Postprocessors/ADElementAverageMaterialProperty + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: mat_prop + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the material property + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADElementAverageMaterialProperty + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/ADElementExtremeMaterialProperty + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: mat_prop + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + Material property for which to find extreme + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADElementExtremeMaterialProperty + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value_type + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: max min + description: | + Type of extreme value to return: 'max' returns the maximum value and 'min' returns the minimum value. + subblocks: + - name: /Postprocessors/ADElementIntegralMaterialProperty + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: mat_prop + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the material property + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADElementIntegralMaterialProperty + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/ADSideFluxAverage + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diffusivity + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the diffusivity material property that will be used in the flux computation. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str ADSideFluxAverage + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /Postprocessors/ADSideFluxIntegral + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diffusivity + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the diffusivity material property that will be used in the flux computation. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str ADSideFluxIntegral + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /Postprocessors/AreaPostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str AreaPostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/AverageElementSize + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str AverageElementSize + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/AverageNodalVariableValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str AverageNodalVariableValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this postprocessor operates on + subblocks: + - name: /Postprocessors/AxisymmetricCenterlineAverageValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str AxisymmetricCenterlineAverageValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /Postprocessors/ChangeOverTimePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: change_with_respect_to_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Compute change with respect to initial value instead of previous value + - name: compute_relative_change + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Compute magnitude of relative change instead of change + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the postprocessor + - name: take_absolute_value + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Option to take absolute value of change + - name: type + required: No + default: !!str ChangeOverTimePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/ChangeOverTimestepPostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: change_with_respect_to_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Compute change with respect to initial value instead of previous value + - name: compute_relative_change + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Compute magnitude of relative change instead of change + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the postprocessor + - name: take_absolute_value + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Option to take absolute value of change + - name: type + required: No + default: !!str ChangeOverTimestepPostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/CumulativeValuePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the postprocessor + - name: type + required: No + default: !!str CumulativeValuePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/DifferencePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str DifferencePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value1 + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + First value + - name: value2 + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + Second value + subblocks: + - name: /Postprocessors/ElementAverageMaterialProperty + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: mat_prop + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the material property + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementAverageMaterialProperty + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/ElementAverageSecondTimeDerivative + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementAverageSecondTimeDerivative + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /Postprocessors/ElementAverageTimeDerivative + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementAverageTimeDerivative + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /Postprocessors/ElementAverageValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementAverageValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /Postprocessors/ElementExtremeMaterialProperty + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: mat_prop + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + Material property for which to find extreme + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementExtremeMaterialProperty + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value_type + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: max min + description: | + Type of extreme value to return: 'max' returns the maximum value and 'min' returns the minimum value. + subblocks: + - name: /Postprocessors/ElementExtremeValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementExtremeValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value_type + required: No + default: !!str max + cpp_type: MooseEnum + group_name: + options: max min + description: | + Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this postprocessor operates on + subblocks: + - name: /Postprocessors/ElementH1Error + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: p + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + The exponent used in the norm. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementH1Error + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /Postprocessors/ElementH1SemiError + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementH1SemiError + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /Postprocessors/ElementIntegralArrayVariablePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: component + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Component of the array variable to be integrated + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementIntegralArrayVariablePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the array variable that this object operates on + subblocks: + - name: /Postprocessors/ElementIntegralMaterialProperty + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: mat_prop + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the material property + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementIntegralMaterialProperty + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/ElementIntegralVariablePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementIntegralVariablePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /Postprocessors/ElementL2Difference + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: other_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable to compare to + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementL2Difference + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /Postprocessors/ElementL2Error + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementL2Error + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /Postprocessors/ElementL2Norm + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementL2Norm + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /Postprocessors/ElementVectorL2Error + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function_x + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: function_y + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: function_z + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementVectorL2Error + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: var_x + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The FE solution in x direction + - name: var_y + required: No + default: !!str 0 + cpp_type: std::vector + group_name: + description: | + The FE solution in y direction + - name: var_z + required: No + default: !!str 0 + cpp_type: std::vector + group_name: + description: | + The FE solution in z direction + subblocks: + - name: /Postprocessors/ElementW1pError + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: p + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + The exponent used in the norm. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementW1pError + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /Postprocessors/ElementalVariableValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: elementid + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The ID of the element where we monitor + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str ElementalVariableValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable to be monitored + subblocks: + - name: /Postprocessors/EmptyPostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str EmptyPostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/ExecutionerAttributeReporter + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str ExecutionerAttributeReporter + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/FindValueOnLine + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: default_value + required: No + default: !!str -1 + cpp_type: double + group_name: + description: | + Value to return if target value is not found on line and error_if_not_found is false. + - name: depth + required: No + default: !!str 36 + cpp_type: unsigned int + group_name: + description: | + Maximum number of bisections to perform. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_point + required: No + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + End point of the sampling line. + - name: error_if_not_found + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If true, stop with error if target value is not found on the line. If false, return default_value. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: start_point + required: No + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + Start point of the sampling line. + - name: target + required: No + default: !!str + cpp_type: double + group_name: + description: | + Target value to locate. + - name: tol + required: No + default: !!str 1e-10 + cpp_type: double + group_name: + description: | + Stop search if a value is found that is equal to the target with this tolerance applied. + - name: type + required: No + default: !!str FindValueOnLine + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + Variable to inspect + subblocks: + - name: /Postprocessors/FunctionElementIntegral + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + Name of function to integrate + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str FunctionElementIntegral + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/FunctionSideIntegral + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: No + default: !!str 1 + cpp_type: FunctionName + group_name: + description: | + This postprocessor will return the integral of this function over the boundary + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str FunctionSideIntegral + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/FunctionValuePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The function which supplies the postprocessor value. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: point + required: No + default: !!str 0 0 0 + cpp_type: libMesh::Point + group_name: + description: | + A point in space to be given to the function Default: (0, 0, 0) + - name: scale_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + A scale factor to be applied to the function + - name: type + required: No + default: !!str FunctionValuePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/GreaterThanLessThanPostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: comparator + required: No + default: !!str greater + cpp_type: MooseEnum + group_name: + options: greater less + description: | + The comparison to perform between the variable and the provided value + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: subdomain + required: No + default: !!str + cpp_type: SubdomainName + group_name: + description: | + The subdomain that the variable lives on + - name: type + required: No + default: !!str GreaterThanLessThanPostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The value to compare against + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The name of the variable to conduct a comparison for + subblocks: + - name: /Postprocessors/InterfaceAverageVariableValuePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: interface_value_type + required: No + default: !!str average + cpp_type: MooseEnum + group_name: + options: average jump_master_minus_slave jump_slave_minus_master jump_abs master slave + description: | + Type of value we want to compute + - name: neighbor_variable + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable on the slave side of the interface. By default the same variable name is used for the slave side + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str InterfaceAverageVariableValuePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable on the master side of the interface + subblocks: + - name: /Postprocessors/InterfaceIntegralVariableValuePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: interface_value_type + required: No + default: !!str average + cpp_type: MooseEnum + group_name: + options: average jump_master_minus_slave jump_slave_minus_master jump_abs master slave + description: | + Type of value we want to compute + - name: neighbor_variable + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable on the slave side of the interface. By default the same variable name is used for the slave side + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str InterfaceIntegralVariableValuePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable on the master side of the interface + subblocks: + - name: /Postprocessors/LinearCombinationPostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: b + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Additional value to add to sum + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: pp_coefs + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + List of linear combination coefficients for each post-processor + - name: pp_names + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + List of post-processors + - name: type + required: No + default: !!str LinearCombinationPostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/MemoryUsage + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: mem_type + required: No + default: !!str physical_memory + cpp_type: MooseEnum + group_name: + options: physical_memory virtual_memory page_faults + description: | + Memory metric to report. + - name: mem_units + required: No + default: !!str mebibytes + cpp_type: MooseEnum + group_name: + options: bytes kibibytes mebibytes gibibytes kilobytes megabytes gigabytes + description: | + The unit prefix used to report memory usage, default: Mebibytes + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: report_peak_value + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If the postprocessor is executed more than once during a time step, report the aggregated peak value. + - name: type + required: No + default: !!str MemoryUsage + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value_type + required: No + default: !!str total + cpp_type: MooseEnum + group_name: + options: total average max_process min_process + description: | + Aggregation method to apply to the requested memory metric. + subblocks: + - name: /Postprocessors/NodalExtremeValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NodalExtremeValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value_type + required: No + default: !!str max + cpp_type: MooseEnum + group_name: + options: max min + description: | + Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this postprocessor operates on + subblocks: + - name: /Postprocessors/NodalL2Error + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NodalL2Error + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this postprocessor operates on + subblocks: + - name: /Postprocessors/NodalL2Norm + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NodalL2Norm + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this postprocessor operates on + subblocks: + - name: /Postprocessors/NodalMaxValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NodalMaxValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this postprocessor operates on + subblocks: + - name: /Postprocessors/NodalProxyMaxValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NodalProxyMaxValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this postprocessor operates on + subblocks: + - name: /Postprocessors/NodalSum + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NodalSum + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this postprocessor operates on + subblocks: + - name: /Postprocessors/NodalVariableValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: nodeid + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The ID of the node where we monitor + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scale_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + A scale factor to be applied to the variable + - name: type + required: No + default: !!str NodalVariableValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable to be monitored + subblocks: + - name: /Postprocessors/NumDOFs + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: system + required: No + default: !!str ALL + cpp_type: MooseEnum + group_name: + options: NL AUX ALL + description: | + The system(s) for which you want to retrieve the number of DOFs (NL, AUX, ALL). Default == ALL + - name: type + required: No + default: !!str NumDOFs + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/NumElems + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: elem_filter + required: No + default: !!str active + cpp_type: MooseEnum + group_name: + options: active total + description: | + The type of elements to include in the count (active, total). Default == active + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str NumElems + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/NumLinearIterations + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str NumLinearIterations + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/NumNodes + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str NumNodes + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/NumNonlinearIterations + description: | + + parameters: + - name: accumulate_over_step + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When set to true, accumulates to count the total over all Picard iterations for each step + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str NumNonlinearIterations + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/NumPicardIterations + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str NumPicardIterations + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/NumRelationshipManagers + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: rm_type + required: No + default: !!str ALL + cpp_type: MooseEnum + group_name: + options: GEOMETRIC ALGEBRAIC COUPLING ALL + description: | + The type of relationship managers to include in the relationship manager count + - name: type + required: No + default: !!str NumRelationshipManagers + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/NumResidualEvaluations + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str NumResidualEvaluations + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/NumVars + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: system + required: No + default: !!str ALL + cpp_type: MooseEnum + group_name: + options: NL AUX ALL + description: | + The system(s) for which you want to retrieve the number of variables (NL, AUX, ALL). Default == ALL + - name: type + required: No + default: !!str NumVars + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/PercentChangePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the postprocessor used for exit criterion + - name: type + required: No + default: !!str PercentChangePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/PerfGraphData + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: data_type + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: SELF CHILDREN TOTAL SELF_AVG CHILDREN_AVG TOTAL_AVG SELF_PERCENT CHILDREN_PERCENT TOTAL_PERCENT CALLS + description: | + The type of data to retrieve for the section_name + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: section_name + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the section to get data for + - name: type + required: No + default: !!str PerfGraphData + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/PerformanceData + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: category + required: No + default: !!str Execution + cpp_type: MooseEnum + group_name: + options: Application Execution Output Setup Utility + description: | + The category for the event + - name: column + required: No + default: !!str total_time_with_sub + cpp_type: MooseEnum + group_name: + options: n_calls total_time average_time total_time_with_sub average_time_with_sub percent_of_active_time percent_of_active_time_with_sub + description: | + The column you want the value of (Default: total_time_with_sub). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: event + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: ACTIVE ALIVE solve() compute_residual() compute_jacobian() + description: | + The name or "label" of the event. Must match event name exactly including parenthesis if applicable. ("ALIVE" and "ACTIVE" are also valid events, category and column are ignored for these cases). + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str PerformanceData + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/PointValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: point + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The physical point where the solution will be evaluated. + - name: type + required: No + default: !!str PointValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The name of the variable that this postprocessor operates on. + subblocks: + - name: /Postprocessors/PostprocessorComparison + description: | + + parameters: + - name: absolute_tolerance + required: No + default: !!str 1e-12 + cpp_type: double + group_name: + description: | + Absolute tolerance used in comparisons + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: comparison_type + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: equals greater_than_equals less_than_equals greater_than less_than + description: | + The type of comparison to perform. Options are: equals greater_than_equals less_than_equals greater_than less_than + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str PostprocessorComparison + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value_a + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The first post-processor or value in the comparison + - name: value_b + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The second post-processor or value in the comparison + subblocks: + - name: /Postprocessors/Receiver + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: default + required: No + default: !!str + cpp_type: double + group_name: + description: | + The default value + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: initialize_old + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Initialize the old postprocessor value with the default value + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str Receiver + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/RelativeDifferencePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str RelativeDifferencePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value1 + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + First post-processor + - name: value2 + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + Second post-processor, base for relative difference + subblocks: + - name: /Postprocessors/RelativeSolutionDifferenceNorm + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str RelativeSolutionDifferenceNorm + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/Residual + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: residual_type + required: No + default: !!str FINAL + cpp_type: MooseEnum + group_name: + options: FINAL INITIAL_BEFORE_PRESET INITIAL_AFTER_PRESET + description: | + Type of residual to be reported. Choices are: FINAL INITIAL_BEFORE_PRESET INITIAL_AFTER_PRESET + - name: type + required: No + default: !!str Residual + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/ScalarL2Error + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str ScalarL2Error + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The name of the scalar variable + subblocks: + - name: /Postprocessors/ScalarVariable + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: component + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Component to output for this variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str ScalarVariable + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + Name of the variable + subblocks: + - name: /Postprocessors/ScalePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The scaling factor + - name: type + required: No + default: !!str ScalePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The postprocessor to be scaled + subblocks: + - name: /Postprocessors/SideAverageValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str SideAverageValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /Postprocessors/SideFluxAverage + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diffusivity + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the diffusivity material property that will be used in the flux computation. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str SideFluxAverage + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /Postprocessors/SideFluxIntegral + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diffusivity + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the diffusivity material property that will be used in the flux computation. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str SideFluxIntegral + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /Postprocessors/SideIntegralVariablePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str SideIntegralVariablePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /Postprocessors/TimeExtremeValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the postprocessor used for reporting time extreme values + - name: type + required: No + default: !!str TimeExtremeValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value_type + required: No + default: !!str max + cpp_type: MooseEnum + group_name: + options: max min abs_max abs_min + description: | + Type of extreme value to return.'max' returns the maximum value.'min' returns the minimum value.'abs_max' returns the maximum absolute value.'abs_min' returns the minimum absolute value. + subblocks: + - name: /Postprocessors/TimestepSize + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str TimestepSize + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Postprocessors/TotalVariableValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str TotalVariableValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the postprocessor + subblocks: + - name: /Postprocessors/VariableInnerProduct + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: second_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the second variable in the inner product (variable, second_variable) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VariableInnerProduct + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /Postprocessors/VariableResidual + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str VariableResidual + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The name of the variable to compute the residual for + subblocks: + - name: /Postprocessors/VectorPostprocessorComparison + description: | + + parameters: + - name: absolute_tolerance + required: No + default: !!str 1e-12 + cpp_type: double + group_name: + description: | + Absolute tolerance used in comparisons + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: comparison_type + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: equals greater_than_equals less_than_equals greater_than less_than + description: | + The type of comparison to perform. Options are: equals greater_than_equals less_than_equals greater_than less_than + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str VectorPostprocessorComparison + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: vector_name_a + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the vector in the first vector post-processor to compare + - name: vector_name_b + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the vector in the second vector post-processor to compare + - name: vectorpostprocessor_a + required: Yes + default: !!str + cpp_type: VectorPostprocessorName + group_name: + description: | + The first vector post-processor in the comparison + - name: vectorpostprocessor_b + required: Yes + default: !!str + cpp_type: VectorPostprocessorName + group_name: + description: | + The second vector post-processor in the comparison + subblocks: + - name: /Postprocessors/VectorPostprocessorComponent + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: index + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + Index of the vectorpostprocessor for which to report a value + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str VectorPostprocessorComponent + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: vector_name + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Name of the vector for which to report a value + - name: vectorpostprocessor + required: Yes + default: !!str + cpp_type: VectorPostprocessorName + group_name: + description: | + The vectorpostprocessor from which a value is extracted + subblocks: + - name: /Postprocessors/VolumePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VolumePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: +- name: /Preconditioning + description: | + + parameters: + subblocks: + - name: /Preconditioning/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Preconditioning/*/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: petsc_options + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -dm_moose_print_embedding -dm_view -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_monitor -ksp_monitor_snes_lg-snes_ksp_ew -ksp_snes_ew -snes_converged_reason -snes_ksp -snes_ksp_ew -snes_linesearch_monitor -snes_mf -snes_mf_operator -snes_monitor -snes_test_display -snes_view + description: | + Singleton PETSc options + - name: petsc_options_iname + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -ksp_atol -ksp_gmres_restart -ksp_max_it -ksp_pc_side -ksp_rtol -ksp_type -mat_fd_coloring_err -mat_fd_type -mat_mffd_type -pc_asm_overlap -pc_factor_levels -pc_factor_mat_ordering_type -pc_hypre_boomeramg_grid_sweeps_all -pc_hypre_boomeramg_max_iter -pc_hypre_boomeramg_strong_threshold -pc_hypre_type -pc_type -snes_atol -snes_linesearch_type -snes_ls -snes_max_it -snes_rtol -snes_divergence_tolerance -snes_type -sub_ksp_type -sub_pc_type + description: | + Names of PETSc name/value pairs + - name: petsc_options_value + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Values of PETSc name/value pairs (must correspond with "petsc_options_iname" + - name: type + required: Yes + default: !!str Split + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Classname of the split object + - name: vars + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + variables for this field + subblocks: + - name: /Preconditioning/*/Split + description: | + + parameters: + - name: blocks + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Mesh blocks Split operates on (omitting this implies "all blocks" + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: petsc_options + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -dm_moose_print_embedding -dm_view -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_monitor -ksp_monitor_snes_lg-snes_ksp_ew -ksp_snes_ew -snes_converged_reason -snes_ksp -snes_ksp_ew -snes_linesearch_monitor -snes_mf -snes_mf_operator -snes_monitor -snes_test_display -snes_view + description: | + PETSc flags for the FieldSplit solver + - name: petsc_options_iname + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + PETSc option names for the FieldSplit solver + - name: petsc_options_value + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + PETSc option values for the FieldSplit solver + - name: schur_ainv + required: No + default: !!str diag + cpp_type: MooseEnum + group_name: + options: diag lump + description: | + Type of approximation to inv(A) used when forming S = D - C inv(A) B + - name: schur_pre + required: No + default: !!str S + cpp_type: MooseEnum + group_name: + options: S Sp A11 + description: | + Type of Schur complement preconditioner matrix + - name: schur_type + required: No + default: !!str full + cpp_type: MooseEnum + group_name: + options: full upper lower + description: | + Type of Schur complement + - name: sides + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Sidesets Split operates on (omitting this implies "no sidesets" + - name: splitting + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the splits (subsystems) in the decomposition of this split + - name: splitting_type + required: No + default: !!str additive + cpp_type: MooseEnum + group_name: + options: additive multiplicative symmetric_multiplicative schur + description: | + Split decomposition type + - name: type + required: No + default: !!str Split + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unsides + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Sidesets Split excludes (omitting this implies "do not exclude any sidesets" + - name: vars + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Variables Split operates on (omitting this implies "all variables" + subblocks: + - name: /Preconditioning/FDP + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: finite_difference_type + required: No + default: !!str coloring + cpp_type: MooseEnum + group_name: + options: standard coloring + description: | + standard: standard finite differencecoloring: finite difference based on coloring + - name: full + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true if you want the full set of couplings. Simply for convenience so you don't have to set every off_diag_row and off_diag_column combination. + - name: implicit_geometric_coupling + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true if you want to add entries into the matrix for degrees of freedom that might be coupled by inspection of the geometric search objects. + - name: ksp_norm + required: No + default: !!str unpreconditioned + cpp_type: MooseEnum + group_name: + options: none preconditioned unpreconditioned natural default + description: | + Sets the norm that is used for convergence testing + - name: mffd_type + required: No + default: !!str wp + cpp_type: MooseEnum + group_name: + options: wp ds + description: | + Specifies the finite differencing type for Jacobian-free solve types. Note that the default is wp (for Walker and Pernice). + - name: off_diag_column + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The off diagonal column you want to add into the matrix, it will be associated with an off diagonal row from the same position in off_diag_row. + - name: off_diag_row + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The off diagonal row you want to add into the matrix, it will be associated with an off diagonal column from the same position in off_diag_colum. + - name: pc_side + required: No + default: !!str default + cpp_type: MooseEnum + group_name: + options: left right symmetric default + description: | + Preconditioning side + - name: petsc_options + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -dm_moose_print_embedding -dm_view -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_monitor -ksp_monitor_snes_lg-snes_ksp_ew -ksp_snes_ew -snes_converged_reason -snes_ksp -snes_ksp_ew -snes_linesearch_monitor -snes_mf -snes_mf_operator -snes_monitor -snes_test_display -snes_view + description: | + Singleton PETSc options + - name: petsc_options_iname + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -ksp_atol -ksp_gmres_restart -ksp_max_it -ksp_pc_side -ksp_rtol -ksp_type -mat_fd_coloring_err -mat_fd_type -mat_mffd_type -pc_asm_overlap -pc_factor_levels -pc_factor_mat_ordering_type -pc_hypre_boomeramg_grid_sweeps_all -pc_hypre_boomeramg_max_iter -pc_hypre_boomeramg_strong_threshold -pc_hypre_type -pc_type -snes_atol -snes_linesearch_type -snes_ls -snes_max_it -snes_rtol -snes_divergence_tolerance -snes_type -sub_ksp_type -sub_pc_type + description: | + Names of PETSc name/value pairs + - name: petsc_options_value + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Values of PETSc name/value pairs (must correspond with "petsc_options_iname" + - name: solve_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: PJFNK JFNK NEWTON FD LINEAR + description: | + PJFNK: Preconditioned Jacobian-Free Newton Krylov JFNK: Jacobian-Free Newton Krylov NEWTON: Full Newton Solve FD: Use finite differences to compute Jacobian LINEAR: Solving a linear problem + - name: type + required: No + default: !!str FDP + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Preconditioning/FSP + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: full + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Set to true if you want the full set of couplings. Simply for convenience so you don't have to set every off_diag_row and off_diag_column combination. + - name: ksp_norm + required: No + default: !!str unpreconditioned + cpp_type: MooseEnum + group_name: + options: none preconditioned unpreconditioned natural default + description: | + Sets the norm that is used for convergence testing + - name: mffd_type + required: No + default: !!str wp + cpp_type: MooseEnum + group_name: + options: wp ds + description: | + Specifies the finite differencing type for Jacobian-free solve types. Note that the default is wp (for Walker and Pernice). + - name: off_diag_column + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The off diagonal column you want to add into the matrix, it will be associated with an off diagonal row from the same position in off_diag_row. + - name: off_diag_row + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The off diagonal row you want to add into the matrix, it will be associated with an off diagonal column from the same position in off_diag_colum. + - name: pc_side + required: No + default: !!str default + cpp_type: MooseEnum + group_name: + options: left right symmetric default + description: | + Preconditioning side + - name: petsc_options + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -dm_moose_print_embedding -dm_view -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_monitor -ksp_monitor_snes_lg-snes_ksp_ew -ksp_snes_ew -snes_converged_reason -snes_ksp -snes_ksp_ew -snes_linesearch_monitor -snes_mf -snes_mf_operator -snes_monitor -snes_test_display -snes_view + description: | + Singleton PETSc options + - name: petsc_options_iname + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -ksp_atol -ksp_gmres_restart -ksp_max_it -ksp_pc_side -ksp_rtol -ksp_type -mat_fd_coloring_err -mat_fd_type -mat_mffd_type -pc_asm_overlap -pc_factor_levels -pc_factor_mat_ordering_type -pc_hypre_boomeramg_grid_sweeps_all -pc_hypre_boomeramg_max_iter -pc_hypre_boomeramg_strong_threshold -pc_hypre_type -pc_type -snes_atol -snes_linesearch_type -snes_ls -snes_max_it -snes_rtol -snes_divergence_tolerance -snes_type -sub_ksp_type -sub_pc_type + description: | + Names of PETSc name/value pairs + - name: petsc_options_value + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Values of PETSc name/value pairs (must correspond with "petsc_options_iname" + - name: solve_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: PJFNK JFNK NEWTON FD LINEAR + description: | + PJFNK: Preconditioned Jacobian-Free Newton Krylov JFNK: Jacobian-Free Newton Krylov NEWTON: Full Newton Solve FD: Use finite differences to compute Jacobian LINEAR: Solving a linear problem + - name: topsplit + required: Yes + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + entrance to splits, the top split will specify how splits will go. + - name: type + required: No + default: !!str FSP + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Preconditioning/PBP + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ksp_norm + required: No + default: !!str unpreconditioned + cpp_type: MooseEnum + group_name: + options: none preconditioned unpreconditioned natural default + description: | + Sets the norm that is used for convergence testing + - name: mffd_type + required: No + default: !!str wp + cpp_type: MooseEnum + group_name: + options: wp ds + description: | + Specifies the finite differencing type for Jacobian-free solve types. Note that the default is wp (for Walker and Pernice). + - name: off_diag_column + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The off diagonal column you want to add into the matrix, it will be associated with an off diagonal row from the same position in off_diag_row. + - name: off_diag_row + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The off diagonal row you want to add into the matrix, it will be associated with an off diagonal column from the same position in off_diag_colum. + - name: pc_side + required: No + default: !!str default + cpp_type: MooseEnum + group_name: + options: left right symmetric default + description: | + Preconditioning side + - name: petsc_options + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -dm_moose_print_embedding -dm_view -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_monitor -ksp_monitor_snes_lg-snes_ksp_ew -ksp_snes_ew -snes_converged_reason -snes_ksp -snes_ksp_ew -snes_linesearch_monitor -snes_mf -snes_mf_operator -snes_monitor -snes_test_display -snes_view + description: | + Singleton PETSc options + - name: petsc_options_iname + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -ksp_atol -ksp_gmres_restart -ksp_max_it -ksp_pc_side -ksp_rtol -ksp_type -mat_fd_coloring_err -mat_fd_type -mat_mffd_type -pc_asm_overlap -pc_factor_levels -pc_factor_mat_ordering_type -pc_hypre_boomeramg_grid_sweeps_all -pc_hypre_boomeramg_max_iter -pc_hypre_boomeramg_strong_threshold -pc_hypre_type -pc_type -snes_atol -snes_linesearch_type -snes_ls -snes_max_it -snes_rtol -snes_divergence_tolerance -snes_type -sub_ksp_type -sub_pc_type + description: | + Names of PETSc name/value pairs + - name: petsc_options_value + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Values of PETSc name/value pairs (must correspond with "petsc_options_iname" + - name: preconditioner + required: Yes + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + TODO: docstring + - name: solve_order + required: Yes + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The order the block rows will be solved in. Put the name of variables here to stand for solving that variable's block row. A variable may appear more than once (to create cylces if you like). + - name: solve_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: PJFNK JFNK NEWTON FD LINEAR + description: | + PJFNK: Preconditioned Jacobian-Free Newton Krylov JFNK: Jacobian-Free Newton Krylov NEWTON: Full Newton Solve FD: Use finite differences to compute Jacobian LINEAR: Solving a linear problem + - name: type + required: No + default: !!str PBP + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Preconditioning/SMP + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: coupled_groups + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + List multiple space separated groups of comma separated variables. Off-diagonal jacobians will be generated for all pairs within a group. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: full + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true if you want the full set of couplings. Simply for convenience so you don't have to set every off_diag_row and off_diag_column combination. + - name: ksp_norm + required: No + default: !!str unpreconditioned + cpp_type: MooseEnum + group_name: + options: none preconditioned unpreconditioned natural default + description: | + Sets the norm that is used for convergence testing + - name: mffd_type + required: No + default: !!str wp + cpp_type: MooseEnum + group_name: + options: wp ds + description: | + Specifies the finite differencing type for Jacobian-free solve types. Note that the default is wp (for Walker and Pernice). + - name: off_diag_column + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The off diagonal column you want to add into the matrix, it will be associated with an off diagonal row from the same position in off_diag_row. + - name: off_diag_row + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The off diagonal row you want to add into the matrix, it will be associated with an off diagonal column from the same position in off_diag_colum. + - name: pc_side + required: No + default: !!str default + cpp_type: MooseEnum + group_name: + options: left right symmetric default + description: | + Preconditioning side + - name: petsc_options + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -dm_moose_print_embedding -dm_view -ksp_converged_reason -ksp_gmres_modifiedgramschmidt -ksp_monitor -ksp_monitor_snes_lg-snes_ksp_ew -ksp_snes_ew -snes_converged_reason -snes_ksp -snes_ksp_ew -snes_linesearch_monitor -snes_mf -snes_mf_operator -snes_monitor -snes_test_display -snes_view + description: | + Singleton PETSc options + - name: petsc_options_iname + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: -ksp_atol -ksp_gmres_restart -ksp_max_it -ksp_pc_side -ksp_rtol -ksp_type -mat_fd_coloring_err -mat_fd_type -mat_mffd_type -pc_asm_overlap -pc_factor_levels -pc_factor_mat_ordering_type -pc_hypre_boomeramg_grid_sweeps_all -pc_hypre_boomeramg_max_iter -pc_hypre_boomeramg_strong_threshold -pc_hypre_type -pc_type -snes_atol -snes_linesearch_type -snes_ls -snes_max_it -snes_rtol -snes_divergence_tolerance -snes_type -sub_ksp_type -sub_pc_type + description: | + Names of PETSc name/value pairs + - name: petsc_options_value + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Values of PETSc name/value pairs (must correspond with "petsc_options_iname" + - name: solve_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: PJFNK JFNK NEWTON FD LINEAR + description: | + PJFNK: Preconditioned Jacobian-Free Newton Krylov JFNK: Jacobian-Free Newton Krylov NEWTON: Full Newton Solve FD: Use finite differences to compute Jacobian LINEAR: Solving a linear problem + - name: type + required: No + default: !!str SMP + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: +- name: /Problem + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: name + required: No + default: !!str MOOSE Problem + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name the problem + - name: type + required: Yes + default: !!str FEProblem + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Problem type + - name: library_name + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The file name of the library (*.la file) that will be dynamically loaded. + - name: library_path + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Path to search for dynamic libraries (please avoid committing absolute paths in addition to MOOSE_LIBRARY_PATH) + - name: object_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of the objects to register (Default: register all). + - name: register_objects_from + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The names of other applications from which objects will be registered from (dynamic registration). + subblocks: + - name: /Problem/ + description: | + + parameters: + subblocks: + - name: /Problem//DisplacedProblem + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: default_ghosting + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to use libMesh's default amount of algebraic and geometric ghosting + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str DisplacedProblem + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + subblocks: + - name: /Problem//DumpObjectsProblem + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Block IDs for the coordinate systems + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: coord_type + required: No + default: !!str XYZ + cpp_type: MultiMooseEnum + group_name: + options: XYZ RZ RSPHERICAL + description: | + Type of the coordinate system per block param + - name: default_ghosting + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to use libMesh's default amount of algebraic and geometric ghosting + - name: dump_path + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Syntax path of the action of which to dump the generated syntax + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: error_on_jacobian_nonzero_reallocation + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This causes PETSc to error if it had to reallocate memory in the Jacobian matrix due to not having enough nonzeros + - name: extra_tag_matrices + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Extra matrices to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. + - name: extra_tag_vectors + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Extra vectors to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. + - name: force_restart + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + EXPERIMENTAL: If true, a sub_app may use a restart file instead of using of using the master backup file + - name: ignore_zeros_in_jacobian + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Do not explicitly store zero values in the Jacobian matrix if true + - name: kernel_coverage_check + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Set to false to disable kernel->subdomain coverage check + - name: material_coverage_check + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Set to false to disable material->subdomain coverage check + - name: material_dependency_check + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Set to false to disable material dependency check + - name: near_null_space_dimension + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The dimension of the near nullspace + - name: null_space_dimension + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The dimension of the nullspace + - name: parallel_barrier_messaging + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Displays messaging from parallel barrier notifications when executing or transferring to/from Multiapps (default: false) + - name: restart_file_base + required: No + default: !!str + cpp_type: FileNameNoExtension + group_name: + description: | + File base name used for restart (e.g. / or /LATEST to grab the latest file available) + - name: rz_coord_axis + required: No + default: !!str Y + cpp_type: MooseEnum + group_name: + options: X Y + description: | + The rotation axis (X | Y) for axisymetric coordinates + - name: skip_additional_restart_data + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to skip additional data in equation system for restart. It is useful for starting a transient calculation with a steady-state solution + - name: skip_nl_system_check + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to skip the NonlinearSystem check for work to do (e.g. Make sure that there are variables to solve for). + - name: solve + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to actually solve the Nonlinear system. This is handy in the case that all you want to do is execute AuxKernels, Transfers, etc. without actually solving anything + - name: transpose_null_space_dimension + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The dimension of the transpose nullspace + - name: type + required: No + default: !!str DumpObjectsProblem + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_nonlinear + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Determines whether to use a Nonlinear vs a Eigenvalue system (Automatically determined based on executioner) + subblocks: + - name: /Problem//EigenProblem + description: | + + parameters: + - name: active_eigen_index + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Which eigen vector is used to compute residual and also associateed to nonlinear variable + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Block IDs for the coordinate systems + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: coord_type + required: No + default: !!str XYZ + cpp_type: MultiMooseEnum + group_name: + options: XYZ RZ RSPHERICAL + description: | + Type of the coordinate system per block param + - name: default_ghosting + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to use libMesh's default amount of algebraic and geometric ghosting + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: error_on_jacobian_nonzero_reallocation + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This causes PETSc to error if it had to reallocate memory in the Jacobian matrix due to not having enough nonzeros + - name: extra_tag_matrices + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Extra matrices to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. + - name: extra_tag_vectors + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Extra vectors to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. + - name: force_restart + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + EXPERIMENTAL: If true, a sub_app may use a restart file instead of using of using the master backup file + - name: ignore_zeros_in_jacobian + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Do not explicitly store zero values in the Jacobian matrix if true + - name: kernel_coverage_check + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Set to false to disable kernel->subdomain coverage check + - name: material_coverage_check + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Set to false to disable material->subdomain coverage check + - name: material_dependency_check + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Set to false to disable material dependency check + - name: near_null_space_dimension + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The dimension of the near nullspace + - name: negative_sign_eigen_kernel + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to use a negative sign for eigenvalue kernels. Using a negative sign makes eigenvalue kernels consistent with a nonlinear solver + - name: null_space_dimension + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The dimension of the nullspace + - name: parallel_barrier_messaging + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Displays messaging from parallel barrier notifications when executing or transferring to/from Multiapps (default: false) + - name: restart_file_base + required: No + default: !!str + cpp_type: FileNameNoExtension + group_name: + description: | + File base name used for restart (e.g. / or /LATEST to grab the latest file available) + - name: rz_coord_axis + required: No + default: !!str Y + cpp_type: MooseEnum + group_name: + options: X Y + description: | + The rotation axis (X | Y) for axisymetric coordinates + - name: skip_additional_restart_data + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to skip additional data in equation system for restart. It is useful for starting a transient calculation with a steady-state solution + - name: skip_nl_system_check + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to skip the NonlinearSystem check for work to do (e.g. Make sure that there are variables to solve for). + - name: solve + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to actually solve the Nonlinear system. This is handy in the case that all you want to do is execute AuxKernels, Transfers, etc. without actually solving anything + - name: transpose_null_space_dimension + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The dimension of the transpose nullspace + - name: type + required: No + default: !!str EigenProblem + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_nonlinear + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Determines whether to use a Nonlinear vs a Eigenvalue system (Automatically determined based on executioner) + subblocks: + - name: /Problem//FEProblem + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Block IDs for the coordinate systems + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: coord_type + required: No + default: !!str XYZ + cpp_type: MultiMooseEnum + group_name: + options: XYZ RZ RSPHERICAL + description: | + Type of the coordinate system per block param + - name: default_ghosting + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to use libMesh's default amount of algebraic and geometric ghosting + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: error_on_jacobian_nonzero_reallocation + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This causes PETSc to error if it had to reallocate memory in the Jacobian matrix due to not having enough nonzeros + - name: extra_tag_matrices + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Extra matrices to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. + - name: extra_tag_vectors + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Extra vectors to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. + - name: force_restart + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + EXPERIMENTAL: If true, a sub_app may use a restart file instead of using of using the master backup file + - name: ignore_zeros_in_jacobian + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Do not explicitly store zero values in the Jacobian matrix if true + - name: kernel_coverage_check + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Set to false to disable kernel->subdomain coverage check + - name: material_coverage_check + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Set to false to disable material->subdomain coverage check + - name: material_dependency_check + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Set to false to disable material dependency check + - name: near_null_space_dimension + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The dimension of the near nullspace + - name: null_space_dimension + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The dimension of the nullspace + - name: parallel_barrier_messaging + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Displays messaging from parallel barrier notifications when executing or transferring to/from Multiapps (default: false) + - name: restart_file_base + required: No + default: !!str + cpp_type: FileNameNoExtension + group_name: + description: | + File base name used for restart (e.g. / or /LATEST to grab the latest file available) + - name: rz_coord_axis + required: No + default: !!str Y + cpp_type: MooseEnum + group_name: + options: X Y + description: | + The rotation axis (X | Y) for axisymetric coordinates + - name: skip_additional_restart_data + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to skip additional data in equation system for restart. It is useful for starting a transient calculation with a steady-state solution + - name: skip_nl_system_check + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to skip the NonlinearSystem check for work to do (e.g. Make sure that there are variables to solve for). + - name: solve + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to actually solve the Nonlinear system. This is handy in the case that all you want to do is execute AuxKernels, Transfers, etc. without actually solving anything + - name: transpose_null_space_dimension + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The dimension of the transpose nullspace + - name: type + required: No + default: !!str FEProblem + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_nonlinear + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Determines whether to use a Nonlinear vs a Eigenvalue system (Automatically determined based on executioner) + subblocks: + - name: /Problem//ReferenceResidualProblem + description: | + + parameters: + - name: acceptable_iterations + required: No + default: !!str 0 + cpp_type: int + group_name: + description: | + Iterations after which convergence to acceptable limits is accepted + - name: acceptable_multiplier + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Multiplier applied to relative tolerance for acceptable limit + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Block IDs for the coordinate systems + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: coord_type + required: No + default: !!str XYZ + cpp_type: MultiMooseEnum + group_name: + options: XYZ RZ RSPHERICAL + description: | + Type of the coordinate system per block param + - name: default_ghosting + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not to use libMesh's default amount of algebraic and geometric ghosting + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: error_on_jacobian_nonzero_reallocation + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + This causes PETSc to error if it had to reallocate memory in the Jacobian matrix due to not having enough nonzeros + - name: extra_tag_matrices + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Extra matrices to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. + - name: extra_tag_vectors + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Extra vectors to add to the system that can be filled by objects which compute residuals and Jacobians (Kernels, BCs, etc.) by setting tags on them. + - name: force_restart + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + EXPERIMENTAL: If true, a sub_app may use a restart file instead of using of using the master backup file + - name: group_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > >, std::allocator, std::allocator >, std::allocator, std::allocator > > > > > + group_name: + description: | + Name of variables that are grouped together to check convergence. (Multiple groups can be provided, separated by semicolon) + - name: ignore_zeros_in_jacobian + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Do not explicitly store zero values in the Jacobian matrix if true + - name: kernel_coverage_check + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Set to false to disable kernel->subdomain coverage check + - name: material_coverage_check + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Set to false to disable material->subdomain coverage check + - name: material_dependency_check + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Set to false to disable material dependency check + - name: near_null_space_dimension + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The dimension of the near nullspace + - name: null_space_dimension + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The dimension of the nullspace + - name: parallel_barrier_messaging + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Displays messaging from parallel barrier notifications when executing or transferring to/from Multiapps (default: false) + - name: reference_residual_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Set of variables that provide reference residuals for relative convergence check + - name: reference_vector + required: No + default: !!str + cpp_type: TagName + group_name: + description: | + The tag name of the reference residual vector. + - name: restart_file_base + required: No + default: !!str + cpp_type: FileNameNoExtension + group_name: + description: | + File base name used for restart (e.g. / or /LATEST to grab the latest file available) + - name: rz_coord_axis + required: No + default: !!str Y + cpp_type: MooseEnum + group_name: + options: X Y + description: | + The rotation axis (X | Y) for axisymetric coordinates + - name: skip_additional_restart_data + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to skip additional data in equation system for restart. It is useful for starting a transient calculation with a steady-state solution + - name: skip_nl_system_check + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to skip the NonlinearSystem check for work to do (e.g. Make sure that there are variables to solve for). + - name: solution_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Set of solution variables to be checked for relative convergence + - name: solve + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Whether or not to actually solve the Nonlinear system. This is handy in the case that all you want to do is execute AuxKernels, Transfers, etc. without actually solving anything + - name: transpose_null_space_dimension + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + The dimension of the transpose nullspace + - name: type + required: No + default: !!str ReferenceResidualProblem + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_nonlinear + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Determines whether to use a Nonlinear vs a Eigenvalue system (Automatically determined based on executioner) + subblocks: +- name: /Samplers + description: | + + parameters: + subblocks: + - name: /Samplers/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: +- name: /ScalarKernels + description: | + + parameters: + subblocks: + - name: /ScalarKernels/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /ScalarKernels/CoupledODETimeDerivative + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: type + required: No + default: !!str CoupledODETimeDerivative + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + Coupled variable. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this kernel operates on + - name: vector_tags + required: No + default: !!str time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /ScalarKernels/NodalEqualValueConstraint + description: | + + parameters: + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this nodal kernel applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: nodes + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Supply nodes using node ids + - name: type + required: No + default: !!str NodalEqualValueConstraint + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: var + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + Variable(s) to put the constraint on + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /ScalarKernels/ODETimeDerivative + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system time + description: | + The tag for the matrices this Kernel should fill + - name: type + required: No + default: !!str ODETimeDerivative + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this kernel operates on + - name: vector_tags + required: No + default: !!str time + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: + - name: /ScalarKernels/ParsedODEKernel + description: | + + parameters: + - name: args + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + additional coupled variables + - name: constant_expressions + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of values for the constants in constant_names (can be an FParser expression) + - name: constant_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Vector of constants used in the parsed function (use this for kB etc.) + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: disable_fpoptimizer + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Disable the function parser algebraic optimizer + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: enable_ad_cache + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable cacheing of function derivatives for faster startup time + - name: enable_auto_optimize + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable automatic immediate optimization of derivatives + - name: enable_jit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Enable just-in-time compilation of function expressions for faster evaluation + - name: evalerror_behavior + required: No + default: !!str nan + cpp_type: MooseEnum + group_name: 'Advanced' + options: nan nan_warning error exception + description: | + What to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exception + - name: extra_matrix_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the matrices this Kernel should fill + - name: extra_vector_tags + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Tagging' + description: | + The extra tags for the vectors this Kernel should fill + - name: fail_on_evalerror + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Fail fatally if a function evaluation returns an error code (otherwise just pass on NaN) + - name: function + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + function expression + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: matrix_tags + required: No + default: !!str system + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime system + description: | + The tag for the matrices this Kernel should fill + - name: postprocessors + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Vector of postprocessor names used in the function expression + - name: type + required: No + default: !!str ParsedODEKernel + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: NonlinearVariableName + group_name: + description: | + The name of the variable that this kernel operates on + - name: vector_tags + required: No + default: !!str nontime + cpp_type: MultiMooseEnum + group_name: 'Tagging' + options: nontime time + description: | + The tag for the vectors this Kernel should fill + subblocks: +- name: /Transfers + description: | + + parameters: + subblocks: + - name: /Transfers/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Transfers/MultiAppCopyTransfer + description: | + + parameters: + - name: check_multiapp_execute_on + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false the check between the multiapp and transfer execute on flags is not preformed. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direction + required: Yes + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: to_multiapp from_multiapp + description: | + Whether this Transfer will be 'to' or 'from' a MultiApp, or bidirectional, by providing both FROM_MULTIAPP and TO_MULTIAPP. + - name: displaced_source_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the source mesh. + - name: displaced_target_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the target mesh. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str SAME_AS_MULTIAPP + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, SAME_AS_MULTIAPP. + - name: multi_app + required: Yes + default: !!str + cpp_type: MultiAppName + group_name: + description: | + The name of the MultiApp to use. + - name: source_variable + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The variable to transfer from. + - name: type + required: No + default: !!str MultiAppCopyTransfer + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The auxiliary variable to store the transferred values in. + subblocks: + - name: /Transfers/MultiAppInterpolationTransfer + description: | + + parameters: + - name: check_multiapp_execute_on + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false the check between the multiapp and transfer execute on flags is not preformed. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direction + required: Yes + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: to_multiapp from_multiapp + description: | + Whether this Transfer will be 'to' or 'from' a MultiApp, or bidirectional, by providing both FROM_MULTIAPP and TO_MULTIAPP. + - name: displaced_source_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the source mesh. + - name: displaced_target_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the target mesh. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str SAME_AS_MULTIAPP + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, SAME_AS_MULTIAPP. + - name: from_postprocessors_to_be_preserved + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the Postprocessor in the from-app to evaluate an adjusting factor. + - name: interp_type + required: No + default: !!str inverse_distance + cpp_type: MooseEnum + group_name: + options: inverse_distance radial_basis + description: | + The algorithm to use for interpolation. + - name: multi_app + required: Yes + default: !!str + cpp_type: MultiAppName + group_name: + description: | + The name of the MultiApp to use. + - name: num_points + required: No + default: !!str 3 + cpp_type: unsigned int + group_name: + description: | + The number of nearest points to use for interpolation. + - name: power + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + The polynomial power to use for calculation of the decay in the interpolation. + - name: radius + required: No + default: !!str -1 + cpp_type: double + group_name: + description: | + Radius to use for radial_basis interpolation. If negative then the radius is taken as the max distance between points. + - name: source_variable + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The variable to transfer from. + - name: to_postprocessors_to_be_preserved + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the Postprocessor in the to-app to evaluate an adjusting factor. + - name: type + required: No + default: !!str MultiAppInterpolationTransfer + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The auxiliary variable to store the transferred values in. + subblocks: + - name: /Transfers/MultiAppMeshFunctionTransfer + description: | + + parameters: + - name: check_multiapp_execute_on + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false the check between the multiapp and transfer execute on flags is not preformed. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direction + required: Yes + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: to_multiapp from_multiapp + description: | + Whether this Transfer will be 'to' or 'from' a MultiApp, or bidirectional, by providing both FROM_MULTIAPP and TO_MULTIAPP. + - name: displaced_source_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the source mesh. + - name: displaced_target_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the target mesh. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: error_on_miss + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to error in the case that a target point is not found in the source domain. + - name: execute_on + required: No + default: !!str SAME_AS_MULTIAPP + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, SAME_AS_MULTIAPP. + - name: from_postprocessors_to_be_preserved + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the Postprocessor in the from-app to evaluate an adjusting factor. + - name: multi_app + required: Yes + default: !!str + cpp_type: MultiAppName + group_name: + description: | + The name of the MultiApp to use. + - name: source_variable + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The variable to transfer from. + - name: to_postprocessors_to_be_preserved + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the Postprocessor in the to-app to evaluate an adjusting factor. + - name: type + required: No + default: !!str MultiAppMeshFunctionTransfer + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The auxiliary variable to store the transferred values in. + subblocks: + - name: /Transfers/MultiAppNearestNodeTransfer + description: | + + parameters: + - name: check_multiapp_execute_on + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false the check between the multiapp and transfer execute on flags is not preformed. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direction + required: Yes + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: to_multiapp from_multiapp + description: | + Whether this Transfer will be 'to' or 'from' a MultiApp, or bidirectional, by providing both FROM_MULTIAPP and TO_MULTIAPP. + - name: displaced_source_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the source mesh. + - name: displaced_target_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the target mesh. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str SAME_AS_MULTIAPP + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, SAME_AS_MULTIAPP. + - name: fixed_meshes + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true when the meshes are not changing (ie, no movement or adaptivity). This will cache nearest node neighbors to greatly speed up the transfer. + - name: from_postprocessors_to_be_preserved + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the Postprocessor in the from-app to evaluate an adjusting factor. + - name: multi_app + required: Yes + default: !!str + cpp_type: MultiAppName + group_name: + description: | + The name of the MultiApp to use. + - name: source_boundary + required: No + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The boundary we are transferring from (if not specified, whole domain is used). + - name: source_variable + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The variable to transfer from. + - name: target_boundary + required: No + default: !!str + cpp_type: BoundaryName + group_name: + description: | + The boundary we are transferring to (if not specified, whole domain is used). + - name: to_postprocessors_to_be_preserved + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the Postprocessor in the to-app to evaluate an adjusting factor. + - name: type + required: No + default: !!str MultiAppNearestNodeTransfer + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The auxiliary variable to store the transferred values in. + subblocks: + - name: /Transfers/MultiAppPostprocessorInterpolationTransfer + description: | + + parameters: + - name: check_multiapp_execute_on + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false the check between the multiapp and transfer execute on flags is not preformed. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direction + required: Yes + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: to_multiapp from_multiapp + description: | + Whether this Transfer will be 'to' or 'from' a MultiApp, or bidirectional, by providing both FROM_MULTIAPP and TO_MULTIAPP. + - name: displaced_source_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the source mesh. + - name: displaced_target_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the target mesh. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str SAME_AS_MULTIAPP + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, SAME_AS_MULTIAPP. + - name: interp_type + required: No + default: !!str inverse_distance + cpp_type: MooseEnum + group_name: + options: inverse_distance radial_basis + description: | + The algorithm to use for interpolation. + - name: multi_app + required: Yes + default: !!str + cpp_type: MultiAppName + group_name: + description: | + The name of the MultiApp to use. + - name: num_points + required: No + default: !!str 3 + cpp_type: unsigned int + group_name: + description: | + The number of nearest points to use for interpolation. + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The Postprocessor to interpolate. + - name: power + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + The polynomial power to use for calculation of the decay in the interpolation. + - name: radius + required: No + default: !!str -1 + cpp_type: double + group_name: + description: | + Radius to use for radial_basis interpolation. If negative then the radius is taken as the max distance between points. + - name: type + required: No + default: !!str MultiAppPostprocessorInterpolationTransfer + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The auxiliary variable to store the transferred values in. + subblocks: + - name: /Transfers/MultiAppPostprocessorToAuxScalarTransfer + description: | + + parameters: + - name: check_multiapp_execute_on + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false the check between the multiapp and transfer execute on flags is not preformed. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direction + required: Yes + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: to_multiapp from_multiapp + description: | + Whether this Transfer will be 'to' or 'from' a MultiApp, or bidirectional, by providing both FROM_MULTIAPP and TO_MULTIAPP. + - name: displaced_source_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the source mesh. + - name: displaced_target_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the target mesh. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str SAME_AS_MULTIAPP + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, SAME_AS_MULTIAPP. + - name: from_postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the Postprocessor in the Master to transfer the value from. + - name: multi_app + required: Yes + default: !!str + cpp_type: MultiAppName + group_name: + description: | + The name of the MultiApp to use. + - name: to_aux_scalar + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The name of the scalar Aux variable in the MultiApp to transfer the value to. + - name: type + required: No + default: !!str MultiAppPostprocessorToAuxScalarTransfer + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Transfers/MultiAppPostprocessorTransfer + description: | + + parameters: + - name: check_multiapp_execute_on + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false the check between the multiapp and transfer execute on flags is not preformed. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direction + required: Yes + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: to_multiapp from_multiapp + description: | + Whether this Transfer will be 'to' or 'from' a MultiApp, or bidirectional, by providing both FROM_MULTIAPP and TO_MULTIAPP. + - name: displaced_source_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the source mesh. + - name: displaced_target_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the target mesh. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str SAME_AS_MULTIAPP + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, SAME_AS_MULTIAPP. + - name: from_postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the Postprocessor in the Master to transfer the value from. + - name: multi_app + required: Yes + default: !!str + cpp_type: MultiAppName + group_name: + description: | + The name of the MultiApp to use. + - name: reduction_type + required: No + default: !!str + cpp_type: MooseEnum + group_name: + options: average sum maximum minimum + description: | + The type of reduction to perform to reduce postprocessor values from multiple SubApps to a single value + - name: to_postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the Postprocessor in the MultiApp to transfer the value to. This should most likely be a Reporter Postprocessor. + - name: type + required: No + default: !!str MultiAppPostprocessorTransfer + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Transfers/MultiAppProjectionTransfer + description: | + + parameters: + - name: check_multiapp_execute_on + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false the check between the multiapp and transfer execute on flags is not preformed. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direction + required: Yes + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: to_multiapp from_multiapp + description: | + Whether this Transfer will be 'to' or 'from' a MultiApp, or bidirectional, by providing both FROM_MULTIAPP and TO_MULTIAPP. + - name: displaced_source_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the source mesh. + - name: displaced_target_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the target mesh. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str SAME_AS_MULTIAPP + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, SAME_AS_MULTIAPP. + - name: fixed_meshes + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true when the meshes are not changing (ie, no movement or adaptivity). This will cache some information to speed up the transfer. + - name: from_postprocessors_to_be_preserved + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the Postprocessor in the from-app to evaluate an adjusting factor. + - name: multi_app + required: Yes + default: !!str + cpp_type: MultiAppName + group_name: + description: | + The name of the MultiApp to use. + - name: proj_type + required: No + default: !!str l2 + cpp_type: MooseEnum + group_name: + options: l2 + description: | + The type of the projection. + - name: source_variable + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The variable to transfer from. + - name: to_postprocessors_to_be_preserved + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the Postprocessor in the to-app to evaluate an adjusting factor. + - name: type + required: No + default: !!str MultiAppProjectionTransfer + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The auxiliary variable to store the transferred values in. + subblocks: + - name: /Transfers/MultiAppScalarToAuxScalarTransfer + description: | + + parameters: + - name: check_multiapp_execute_on + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false the check between the multiapp and transfer execute on flags is not preformed. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direction + required: Yes + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: to_multiapp from_multiapp + description: | + Whether this Transfer will be 'to' or 'from' a MultiApp, or bidirectional, by providing both FROM_MULTIAPP and TO_MULTIAPP. + - name: displaced_source_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the source mesh. + - name: displaced_target_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the target mesh. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str SAME_AS_MULTIAPP + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, SAME_AS_MULTIAPP. + - name: multi_app + required: Yes + default: !!str + cpp_type: MultiAppName + group_name: + description: | + The name of the MultiApp to use. + - name: source_variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The name of the scalar variable in the MultiApp to transfer the value from. + - name: to_aux_scalar + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The name of the scalar Aux variable in the MultiApp to transfer the value to. + - name: type + required: No + default: !!str MultiAppScalarToAuxScalarTransfer + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Transfers/MultiAppUserObjectTransfer + description: | + + parameters: + - name: all_master_nodes_contained_in_sub_app + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set to true if every master node is mapped to a distinct point on one of the subApps during a transfer from sub App to Master App. If master node cannot be found within bounding boxes of any of the subApps, an error is generated. + - name: check_multiapp_execute_on + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false the check between the multiapp and transfer execute on flags is not preformed. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direction + required: Yes + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: to_multiapp from_multiapp + description: | + Whether this Transfer will be 'to' or 'from' a MultiApp, or bidirectional, by providing both FROM_MULTIAPP and TO_MULTIAPP. + - name: displaced_source_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the source mesh. + - name: displaced_target_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the target mesh. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str SAME_AS_MULTIAPP + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, SAME_AS_MULTIAPP. + - name: from_postprocessors_to_be_preserved + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the Postprocessor in the from-app to evaluate an adjusting factor. + - name: multi_app + required: Yes + default: !!str + cpp_type: MultiAppName + group_name: + description: | + The name of the MultiApp to use. + - name: skip_bounding_box_check + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Skip the check if the to_elem is within the bounding box of the from_app. + - name: to_postprocessors_to_be_preserved + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The name of the Postprocessor in the to-app to evaluate an adjusting factor. + - name: type + required: No + default: !!str MultiAppUserObjectTransfer + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: user_object + required: Yes + default: !!str + cpp_type: UserObjectName + group_name: + description: | + The UserObject you want to transfer values from. Note: This might be a UserObject from your MultiApp's input file! + - name: variable + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The auxiliary variable to store the transferred values in. + subblocks: + - name: /Transfers/MultiAppVariableValueSamplePostprocessorTransfer + description: | + + parameters: + - name: check_multiapp_execute_on + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false the check between the multiapp and transfer execute on flags is not preformed. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direction + required: Yes + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: to_multiapp from_multiapp + description: | + Whether this Transfer will be 'to' or 'from' a MultiApp, or bidirectional, by providing both FROM_MULTIAPP and TO_MULTIAPP. + - name: displaced_source_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the source mesh. + - name: displaced_target_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the target mesh. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str SAME_AS_MULTIAPP + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, SAME_AS_MULTIAPP. + - name: multi_app + required: Yes + default: !!str + cpp_type: MultiAppName + group_name: + description: | + The name of the MultiApp to use. + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the postprocessor in the MultiApp to transfer the value to. This should most likely be a Reciever Postprocessor. + - name: source_variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable to transfer from. + - name: type + required: No + default: !!str MultiAppVariableValueSamplePostprocessorTransfer + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /Transfers/MultiAppVariableValueSampleTransfer + description: | + + parameters: + - name: check_multiapp_execute_on + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false the check between the multiapp and transfer execute on flags is not preformed. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direction + required: Yes + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: to_multiapp from_multiapp + description: | + Whether this Transfer will be 'to' or 'from' a MultiApp, or bidirectional, by providing both FROM_MULTIAPP and TO_MULTIAPP. + - name: displaced_source_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the source mesh. + - name: displaced_target_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the target mesh. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str SAME_AS_MULTIAPP + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, SAME_AS_MULTIAPP. + - name: multi_app + required: Yes + default: !!str + cpp_type: MultiAppName + group_name: + description: | + The name of the MultiApp to use. + - name: source_variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable to transfer from. + - name: type + required: No + default: !!str MultiAppVariableValueSampleTransfer + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: AuxVariableName + group_name: + description: | + The auxiliary variable to store the transferred values in. + subblocks: + - name: /Transfers/MultiAppVectorPostprocessorTransfer + description: | + + parameters: + - name: check_multiapp_execute_on + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false the check between the multiapp and transfer execute on flags is not preformed. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: direction + required: Yes + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: to_multiapp from_multiapp + description: | + Whether this Transfer will be 'to' or 'from' a MultiApp, or bidirectional, by providing both FROM_MULTIAPP and TO_MULTIAPP. + - name: displaced_source_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the source mesh. + - name: displaced_target_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to use the displaced mesh for the target mesh. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str SAME_AS_MULTIAPP + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM, SAME_AS_MULTIAPP. + - name: multi_app + required: Yes + default: !!str + cpp_type: MultiAppName + group_name: + description: | + The name of the MultiApp to use. + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the Postprocessors on the sub-app to transfer from/to. + - name: type + required: No + default: !!str MultiAppVectorPostprocessorTransfer + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: vector_name + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Named vector quantity to transfer from/to in VectorPostprocessor. + - name: vector_postprocessor + required: Yes + default: !!str + cpp_type: VectorPostprocessorName + group_name: + description: | + The name of the VectorPostprocessor in the MultiApp to transfer values from/to. + subblocks: +- name: /UserObjects + description: | + + parameters: + subblocks: + - name: /UserObjects/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /UserObjects/ADElementAverageMaterialProperty + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: mat_prop + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the material property + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADElementAverageMaterialProperty + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/ADElementExtremeMaterialProperty + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: mat_prop + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + Material property for which to find extreme + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADElementExtremeMaterialProperty + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value_type + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: max min + description: | + Type of extreme value to return: 'max' returns the maximum value and 'min' returns the minimum value. + subblocks: + - name: /UserObjects/ADElementIntegralMaterialProperty + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: mat_prop + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the material property + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ADElementIntegralMaterialProperty + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/ADSideFluxAverage + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diffusivity + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the diffusivity material property that will be used in the flux computation. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str ADSideFluxAverage + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /UserObjects/ADSideFluxIntegral + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diffusivity + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the diffusivity material property that will be used in the flux computation. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str ADSideFluxIntegral + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /UserObjects/AreaPostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str AreaPostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/AverageElementSize + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str AverageElementSize + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/AverageNodalVariableValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str AverageNodalVariableValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this postprocessor operates on + subblocks: + - name: /UserObjects/AxisymmetricCenterlineAverageValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str AxisymmetricCenterlineAverageValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /UserObjects/ChangeOverTimePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: change_with_respect_to_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Compute change with respect to initial value instead of previous value + - name: compute_relative_change + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Compute magnitude of relative change instead of change + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the postprocessor + - name: take_absolute_value + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Option to take absolute value of change + - name: type + required: No + default: !!str ChangeOverTimePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/ChangeOverTimestepPostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: change_with_respect_to_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Compute change with respect to initial value instead of previous value + - name: compute_relative_change + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Compute magnitude of relative change instead of change + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the postprocessor + - name: take_absolute_value + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Option to take absolute value of change + - name: type + required: No + default: !!str ChangeOverTimestepPostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/CumulativeValuePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the postprocessor + - name: type + required: No + default: !!str CumulativeValuePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/DifferencePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str DifferencePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value1 + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + First value + - name: value2 + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + Second value + subblocks: + - name: /UserObjects/ElementAverageMaterialProperty + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: mat_prop + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the material property + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementAverageMaterialProperty + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/ElementAverageSecondTimeDerivative + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementAverageSecondTimeDerivative + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /UserObjects/ElementAverageTimeDerivative + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementAverageTimeDerivative + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /UserObjects/ElementAverageValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementAverageValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /UserObjects/ElementExtremeMaterialProperty + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: mat_prop + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + Material property for which to find extreme + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementExtremeMaterialProperty + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value_type + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: max min + description: | + Type of extreme value to return: 'max' returns the maximum value and 'min' returns the minimum value. + subblocks: + - name: /UserObjects/ElementExtremeValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementExtremeValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value_type + required: No + default: !!str max + cpp_type: MooseEnum + group_name: + options: max min + description: | + Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this postprocessor operates on + subblocks: + - name: /UserObjects/ElementH1Error + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: p + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + The exponent used in the norm. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementH1Error + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /UserObjects/ElementH1SemiError + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementH1SemiError + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /UserObjects/ElementIntegralArrayVariablePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: component + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Component of the array variable to be integrated + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementIntegralArrayVariablePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the array variable that this object operates on + subblocks: + - name: /UserObjects/ElementIntegralMaterialProperty + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: mat_prop + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the material property + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementIntegralMaterialProperty + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/ElementIntegralVariablePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementIntegralVariablePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /UserObjects/ElementIntegralVariableUserObject + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementIntegralVariableUserObject + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /UserObjects/ElementL2Difference + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: other_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable to compare to + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementL2Difference + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /UserObjects/ElementL2Error + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementL2Error + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /UserObjects/ElementL2Norm + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementL2Norm + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /UserObjects/ElementQualityChecker + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str INITIAL + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: failure_type + required: No + default: !!str WARNING + cpp_type: MooseEnum + group_name: + options: WARNING ERROR + description: | + The way how the failure of quality metric check should respond + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: lower_bound + required: No + default: !!str + cpp_type: double + group_name: + description: | + The lower bound for provided metric type + - name: metric_type + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: ASPECT_RATIO SKEW SHEAR SHAPE MAX_ANGLE MIN_ANGLE CONDITION DISTORTION TAPER WARP STRETCH DIAGONAL ASPECT_RATIO_BETA ASPECT_RATIO_GAMMA SIZE JACOBIAN + description: | + Type of quality metric to be checked + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementQualityChecker + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: upper_bound + required: No + default: !!str + cpp_type: double + group_name: + description: | + the upper bound for provided metric type + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/ElementVectorL2Error + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function_x + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: function_y + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: function_z + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementVectorL2Error + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: var_x + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The FE solution in x direction + - name: var_y + required: No + default: !!str 0 + cpp_type: std::vector + group_name: + description: | + The FE solution in y direction + - name: var_z + required: No + default: !!str 0 + cpp_type: std::vector + group_name: + description: | + The FE solution in z direction + subblocks: + - name: /UserObjects/ElementW1pError + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: p + required: No + default: !!str 2 + cpp_type: double + group_name: + description: | + The exponent used in the norm. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementW1pError + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /UserObjects/ElementalVariableValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: elementid + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The ID of the element where we monitor + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str ElementalVariableValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable to be monitored + subblocks: + - name: /UserObjects/EmptyPostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str EmptyPostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/ExecutionerAttributeReporter + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str ExecutionerAttributeReporter + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/FindValueOnLine + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: default_value + required: No + default: !!str -1 + cpp_type: double + group_name: + description: | + Value to return if target value is not found on line and error_if_not_found is false. + - name: depth + required: No + default: !!str 36 + cpp_type: unsigned int + group_name: + description: | + Maximum number of bisections to perform. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_point + required: No + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + End point of the sampling line. + - name: error_if_not_found + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If true, stop with error if target value is not found on the line. If false, return default_value. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: start_point + required: No + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + Start point of the sampling line. + - name: target + required: No + default: !!str + cpp_type: double + group_name: + description: | + Target value to locate. + - name: tol + required: No + default: !!str 1e-10 + cpp_type: double + group_name: + description: | + Stop search if a value is found that is equal to the target with this tolerance applied. + - name: type + required: No + default: !!str FindValueOnLine + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: v + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + Variable to inspect + subblocks: + - name: /UserObjects/FunctionElementIntegral + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + Name of function to integrate + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str FunctionElementIntegral + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/FunctionSideIntegral + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: No + default: !!str 1 + cpp_type: FunctionName + group_name: + description: | + This postprocessor will return the integral of this function over the boundary + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str FunctionSideIntegral + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/FunctionValuePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The function which supplies the postprocessor value. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: point + required: No + default: !!str 0 0 0 + cpp_type: libMesh::Point + group_name: + description: | + A point in space to be given to the function Default: (0, 0, 0) + - name: scale_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + A scale factor to be applied to the function + - name: type + required: No + default: !!str FunctionValuePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/GeometrySphere + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + List of boundaries whose nodes are snapped to a given geometry + - name: center + required: No + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + Sphere center + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: radius + required: No + default: !!str + cpp_type: double + group_name: + description: | + Sphere radius + - name: type + required: No + default: !!str GeometrySphere + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/GhostingUserObject + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str INITIAL + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: pids + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The PID(s) to see the ghosting for + - name: type + required: No + default: !!str GhostingUserObject + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/GreaterThanLessThanPostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: comparator + required: No + default: !!str greater + cpp_type: MooseEnum + group_name: + options: greater less + description: | + The comparison to perform between the variable and the provided value + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: subdomain + required: No + default: !!str + cpp_type: SubdomainName + group_name: + description: | + The subdomain that the variable lives on + - name: type + required: No + default: !!str GreaterThanLessThanPostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The value to compare against + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The name of the variable to conduct a comparison for + subblocks: + - name: /UserObjects/InterfaceAverageVariableValuePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: interface_value_type + required: No + default: !!str average + cpp_type: MooseEnum + group_name: + options: average jump_master_minus_slave jump_slave_minus_master jump_abs master slave + description: | + Type of value we want to compute + - name: neighbor_variable + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable on the slave side of the interface. By default the same variable name is used for the slave side + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str InterfaceAverageVariableValuePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable on the master side of the interface + subblocks: + - name: /UserObjects/InterfaceIntegralVariableValuePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: interface_value_type + required: No + default: !!str average + cpp_type: MooseEnum + group_name: + options: average jump_master_minus_slave jump_slave_minus_master jump_abs master slave + description: | + Type of value we want to compute + - name: neighbor_variable + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable on the slave side of the interface. By default the same variable name is used for the slave side + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str InterfaceIntegralVariableValuePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable on the master side of the interface + subblocks: + - name: /UserObjects/InterfaceQpMaterialPropertyRealUO + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: interface_value_type + required: No + default: !!str average + cpp_type: MooseEnum + group_name: + options: average jump_master_minus_slave jump_slave_minus_master jump_abs master slave + description: | + Type of scalar output + - name: property + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The material property name + - name: property_neighbor + required: No + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The neighbor material property name + - name: type + required: No + default: !!str InterfaceQpMaterialPropertyRealUO + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value_type + required: No + default: !!str value + cpp_type: MooseEnum + group_name: + options: value rate increment + description: | + Type of value to compute and store + subblocks: + - name: /UserObjects/InterfaceQpValueUserObject + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str INITIAL TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: interface_value_type + required: No + default: !!str average + cpp_type: MooseEnum + group_name: + options: average jump_master_minus_slave jump_slave_minus_master jump_abs master slave + description: | + Type of scalar output + - name: type + required: No + default: !!str InterfaceQpValueUserObject + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value_type + required: No + default: !!str value + cpp_type: MooseEnum + group_name: + options: value rate increment + description: | + Type of value to compute and store + - name: var + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The variable name + - name: var_neighbor + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + The neighbor variable name + subblocks: + - name: /UserObjects/LayeredAverage + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: average_radius + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + When using 'average' sampling this is how the number of values both above and below the layer that will be averaged. + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: bounds + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The 'bounding' positions of the layers i.e.: '0, 1.2, 3.7, 4.2' will mean 3 layers between those positions. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cumulative + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the value in each layer is the sum of the values up to and including that layer + - name: direction + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The direction of the layers. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: layer_bounding_block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + List of block ids (SubdomainID) that are used to determine the upper and lower geometric bounds for all layers. If this is not specified, the ids specified in 'block' are used for this purpose. + - name: num_layers + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of layers. + - name: sample_type + required: No + default: !!str direct + cpp_type: MooseEnum + group_name: + options: direct interpolate average + description: | + How to sample the layers. 'direct' means get the value of the layer the point falls in directly (or average if that layer has no value). 'interpolate' does a linear interpolation between the two closest layers. 'average' averages the two closest layers. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str LayeredAverage + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /UserObjects/LayeredIntegral + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: average_radius + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + When using 'average' sampling this is how the number of values both above and below the layer that will be averaged. + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: bounds + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The 'bounding' positions of the layers i.e.: '0, 1.2, 3.7, 4.2' will mean 3 layers between those positions. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cumulative + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the value in each layer is the sum of the values up to and including that layer + - name: direction + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The direction of the layers. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: layer_bounding_block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + List of block ids (SubdomainID) that are used to determine the upper and lower geometric bounds for all layers. If this is not specified, the ids specified in 'block' are used for this purpose. + - name: num_layers + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of layers. + - name: sample_type + required: No + default: !!str direct + cpp_type: MooseEnum + group_name: + options: direct interpolate average + description: | + How to sample the layers. 'direct' means get the value of the layer the point falls in directly (or average if that layer has no value). 'interpolate' does a linear interpolation between the two closest layers. 'average' averages the two closest layers. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str LayeredIntegral + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /UserObjects/LayeredSideAverage + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: average_radius + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + When using 'average' sampling this is how the number of values both above and below the layer that will be averaged. + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: bounds + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The 'bounding' positions of the layers i.e.: '0, 1.2, 3.7, 4.2' will mean 3 layers between those positions. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cumulative + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the value in each layer is the sum of the values up to and including that layer + - name: direction + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The direction of the layers. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: layer_bounding_block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + List of block ids (SubdomainID) that are used to determine the upper and lower geometric bounds for all layers. If this is not specified, the ids specified in 'block' are used for this purpose. + - name: num_layers + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of layers. + - name: sample_type + required: No + default: !!str direct + cpp_type: MooseEnum + group_name: + options: direct interpolate average + description: | + How to sample the layers. 'direct' means get the value of the layer the point falls in directly (or average if that layer has no value). 'interpolate' does a linear interpolation between the two closest layers. 'average' averages the two closest layers. + - name: type + required: No + default: !!str LayeredSideAverage + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /UserObjects/LayeredSideFluxAverage + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: average_radius + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + When using 'average' sampling this is how the number of values both above and below the layer that will be averaged. + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: bounds + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The 'bounding' positions of the layers i.e.: '0, 1.2, 3.7, 4.2' will mean 3 layers between those positions. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cumulative + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the value in each layer is the sum of the values up to and including that layer + - name: diffusivity + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the diffusivity material property that will be used in the flux computation. + - name: direction + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The direction of the layers. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: layer_bounding_block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + List of block ids (SubdomainID) that are used to determine the upper and lower geometric bounds for all layers. If this is not specified, the ids specified in 'block' are used for this purpose. + - name: num_layers + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of layers. + - name: sample_type + required: No + default: !!str direct + cpp_type: MooseEnum + group_name: + options: direct interpolate average + description: | + How to sample the layers. 'direct' means get the value of the layer the point falls in directly (or average if that layer has no value). 'interpolate' does a linear interpolation between the two closest layers. 'average' averages the two closest layers. + - name: type + required: No + default: !!str LayeredSideFluxAverage + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /UserObjects/LayeredSideIntegral + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: average_radius + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + When using 'average' sampling this is how the number of values both above and below the layer that will be averaged. + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: bounds + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The 'bounding' positions of the layers i.e.: '0, 1.2, 3.7, 4.2' will mean 3 layers between those positions. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cumulative + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the value in each layer is the sum of the values up to and including that layer + - name: direction + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The direction of the layers. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: layer_bounding_block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + List of block ids (SubdomainID) that are used to determine the upper and lower geometric bounds for all layers. If this is not specified, the ids specified in 'block' are used for this purpose. + - name: num_layers + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of layers. + - name: sample_type + required: No + default: !!str direct + cpp_type: MooseEnum + group_name: + options: direct interpolate average + description: | + How to sample the layers. 'direct' means get the value of the layer the point falls in directly (or average if that layer has no value). 'interpolate' does a linear interpolation between the two closest layers. 'average' averages the two closest layers. + - name: type + required: No + default: !!str LayeredSideIntegral + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /UserObjects/LinearCombinationPostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: b + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Additional value to add to sum + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: pp_coefs + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + List of linear combination coefficients for each post-processor + - name: pp_names + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + List of post-processors + - name: type + required: No + default: !!str LinearCombinationPostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/MemoryUsage + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: mem_type + required: No + default: !!str physical_memory + cpp_type: MooseEnum + group_name: + options: physical_memory virtual_memory page_faults + description: | + Memory metric to report. + - name: mem_units + required: No + default: !!str mebibytes + cpp_type: MooseEnum + group_name: + options: bytes kibibytes mebibytes gibibytes kilobytes megabytes gigabytes + description: | + The unit prefix used to report memory usage, default: Mebibytes + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: report_peak_value + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If the postprocessor is executed more than once during a time step, report the aggregated peak value. + - name: type + required: No + default: !!str MemoryUsage + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value_type + required: No + default: !!str total + cpp_type: MooseEnum + group_name: + options: total average max_process min_process + description: | + Aggregation method to apply to the requested memory metric. + subblocks: + - name: /UserObjects/NearestPointLayeredAverage + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: average_radius + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + When using 'average' sampling this is how the number of values both above and below the layer that will be averaged. + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: bounds + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The 'bounding' positions of the layers i.e.: '0, 1.2, 3.7, 4.2' will mean 3 layers between those positions. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cumulative + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the value in each layer is the sum of the values up to and including that layer + - name: direction + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The direction of the layers. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: layer_bounding_block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + List of block ids (SubdomainID) that are used to determine the upper and lower geometric bounds for all layers. If this is not specified, the ids specified in 'block' are used for this purpose. + - name: num_layers + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of layers. + - name: points + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Computations will be lumped into values at these points. + - name: points_file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + A filename that should be looked in for points. Each set of 3 values in that file will represent a Point. This and 'points' cannot be both supplied. + - name: sample_type + required: No + default: !!str direct + cpp_type: MooseEnum + group_name: + options: direct interpolate average + description: | + How to sample the layers. 'direct' means get the value of the layer the point falls in directly (or average if that layer has no value). 'interpolate' does a linear interpolation between the two closest layers. 'average' averages the two closest layers. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NearestPointLayeredAverage + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /UserObjects/NearestPointLayeredIntegral + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: average_radius + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + When using 'average' sampling this is how the number of values both above and below the layer that will be averaged. + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: bounds + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The 'bounding' positions of the layers i.e.: '0, 1.2, 3.7, 4.2' will mean 3 layers between those positions. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cumulative + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the value in each layer is the sum of the values up to and including that layer + - name: direction + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The direction of the layers. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: layer_bounding_block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + List of block ids (SubdomainID) that are used to determine the upper and lower geometric bounds for all layers. If this is not specified, the ids specified in 'block' are used for this purpose. + - name: num_layers + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of layers. + - name: points + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Computations will be lumped into values at these points. + - name: points_file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + A filename that should be looked in for points. Each set of 3 values in that file will represent a Point. This and 'points' cannot be both supplied. + - name: sample_type + required: No + default: !!str direct + cpp_type: MooseEnum + group_name: + options: direct interpolate average + description: | + How to sample the layers. 'direct' means get the value of the layer the point falls in directly (or average if that layer has no value). 'interpolate' does a linear interpolation between the two closest layers. 'average' averages the two closest layers. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NearestPointLayeredIntegral + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /UserObjects/NearestPointLayeredSideAverage + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: average_radius + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + When using 'average' sampling this is how the number of values both above and below the layer that will be averaged. + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: bounds + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The 'bounding' positions of the layers i.e.: '0, 1.2, 3.7, 4.2' will mean 3 layers between those positions. + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cumulative + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When true the value in each layer is the sum of the values up to and including that layer + - name: direction + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z + description: | + The direction of the layers. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: layer_bounding_block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + List of block ids (SubdomainID) that are used to determine the upper and lower geometric bounds for all layers. If this is not specified, the ids specified in 'block' are used for this purpose. + - name: num_layers + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of layers. + - name: points + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Computations will be lumped into values at these points. + - name: points_file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + A filename that should be looked in for points. Each set of 3 values in that file will represent a Point. This and 'points' cannot be both supplied. + - name: sample_type + required: No + default: !!str direct + cpp_type: MooseEnum + group_name: + options: direct interpolate average + description: | + How to sample the layers. 'direct' means get the value of the layer the point falls in directly (or average if that layer has no value). 'interpolate' does a linear interpolation between the two closest layers. 'average' averages the two closest layers. + - name: type + required: No + default: !!str NearestPointLayeredSideAverage + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /UserObjects/NodalExtremeValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NodalExtremeValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value_type + required: No + default: !!str max + cpp_type: MooseEnum + group_name: + options: max min + description: | + Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this postprocessor operates on + subblocks: + - name: /UserObjects/NodalL2Error + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NodalL2Error + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this postprocessor operates on + subblocks: + - name: /UserObjects/NodalL2Norm + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NodalL2Norm + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this postprocessor operates on + subblocks: + - name: /UserObjects/NodalMaxValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NodalMaxValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this postprocessor operates on + subblocks: + - name: /UserObjects/NodalNormalsCorner + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: corner_boundary + required: Yes + default: !!str + cpp_type: BoundaryName + group_name: + description: | + Node set ID which contains the nodes that are in 'corners'. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: type + required: No + default: !!str NodalNormalsCorner + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/NodalNormalsEvaluator + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str ANY_BLOCK_ID + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NodalNormalsEvaluator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/NodalNormalsPreprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: corner_boundary + required: No + default: !!str + cpp_type: BoundaryName + group_name: + description: | + Node set ID which contains the nodes that are in 'corners'. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: surface_boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs where nodal normals are computed + - name: type + required: No + default: !!str NodalNormalsPreprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/NodalProxyMaxValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NodalProxyMaxValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this postprocessor operates on + subblocks: + - name: /UserObjects/NodalSum + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NodalSum + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this postprocessor operates on + subblocks: + - name: /UserObjects/NodalVariableValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: nodeid + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The ID of the node where we monitor + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scale_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + A scale factor to be applied to the variable + - name: type + required: No + default: !!str NodalVariableValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable to be monitored + subblocks: + - name: /UserObjects/NumDOFs + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: system + required: No + default: !!str ALL + cpp_type: MooseEnum + group_name: + options: NL AUX ALL + description: | + The system(s) for which you want to retrieve the number of DOFs (NL, AUX, ALL). Default == ALL + - name: type + required: No + default: !!str NumDOFs + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/NumElems + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: elem_filter + required: No + default: !!str active + cpp_type: MooseEnum + group_name: + options: active total + description: | + The type of elements to include in the count (active, total). Default == active + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str NumElems + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/NumLinearIterations + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str NumLinearIterations + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/NumNodes + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str NumNodes + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/NumNonlinearIterations + description: | + + parameters: + - name: accumulate_over_step + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When set to true, accumulates to count the total over all Picard iterations for each step + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str NumNonlinearIterations + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/NumPicardIterations + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str NumPicardIterations + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/NumRelationshipManagers + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: rm_type + required: No + default: !!str ALL + cpp_type: MooseEnum + group_name: + options: GEOMETRIC ALGEBRAIC COUPLING ALL + description: | + The type of relationship managers to include in the relationship manager count + - name: type + required: No + default: !!str NumRelationshipManagers + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/NumResidualEvaluations + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str NumResidualEvaluations + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/NumVars + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: system + required: No + default: !!str ALL + cpp_type: MooseEnum + group_name: + options: NL AUX ALL + description: | + The system(s) for which you want to retrieve the number of variables (NL, AUX, ALL). Default == ALL + - name: type + required: No + default: !!str NumVars + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/PercentChangePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the postprocessor used for exit criterion + - name: type + required: No + default: !!str PercentChangePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/PerfGraphData + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: data_type + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: SELF CHILDREN TOTAL SELF_AVG CHILDREN_AVG TOTAL_AVG SELF_PERCENT CHILDREN_PERCENT TOTAL_PERCENT CALLS + description: | + The type of data to retrieve for the section_name + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: section_name + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the section to get data for + - name: type + required: No + default: !!str PerfGraphData + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/PerformanceData + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: category + required: No + default: !!str Execution + cpp_type: MooseEnum + group_name: + options: Application Execution Output Setup Utility + description: | + The category for the event + - name: column + required: No + default: !!str total_time_with_sub + cpp_type: MooseEnum + group_name: + options: n_calls total_time average_time total_time_with_sub average_time_with_sub percent_of_active_time percent_of_active_time_with_sub + description: | + The column you want the value of (Default: total_time_with_sub). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: event + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: ACTIVE ALIVE solve() compute_residual() compute_jacobian() + description: | + The name or "label" of the event. Must match event name exactly including parenthesis if applicable. ("ALIVE" and "ACTIVE" are also valid events, category and column are ignored for these cases). + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str PerformanceData + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/PointValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: point + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The physical point where the solution will be evaluated. + - name: type + required: No + default: !!str PointValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The name of the variable that this postprocessor operates on. + subblocks: + - name: /UserObjects/PostprocessorComparison + description: | + + parameters: + - name: absolute_tolerance + required: No + default: !!str 1e-12 + cpp_type: double + group_name: + description: | + Absolute tolerance used in comparisons + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: comparison_type + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: equals greater_than_equals less_than_equals greater_than less_than + description: | + The type of comparison to perform. Options are: equals greater_than_equals less_than_equals greater_than less_than + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str PostprocessorComparison + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value_a + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The first post-processor or value in the comparison + - name: value_b + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The second post-processor or value in the comparison + subblocks: + - name: /UserObjects/PostprocessorSpatialUserObject + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the postprocessor + - name: type + required: No + default: !!str PostprocessorSpatialUserObject + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/Receiver + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: default + required: No + default: !!str + cpp_type: double + group_name: + description: | + The default value + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: initialize_old + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Initialize the old postprocessor value with the default value + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str Receiver + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/RelativeDifferencePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str RelativeDifferencePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value1 + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + First post-processor + - name: value2 + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + Second post-processor, base for relative difference + subblocks: + - name: /UserObjects/RelativeSolutionDifferenceNorm + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str RelativeSolutionDifferenceNorm + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/Residual + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: residual_type + required: No + default: !!str FINAL + cpp_type: MooseEnum + group_name: + options: FINAL INITIAL_BEFORE_PRESET INITIAL_AFTER_PRESET + description: | + Type of residual to be reported. Choices are: FINAL INITIAL_BEFORE_PRESET INITIAL_AFTER_PRESET + - name: type + required: No + default: !!str Residual + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/ScalarL2Error + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The analytic solution to compare against + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str ScalarL2Error + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The name of the scalar variable + subblocks: + - name: /UserObjects/ScalarVariable + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: component + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Component to output for this variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str ScalarVariable + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + Name of the variable + subblocks: + - name: /UserObjects/ScalePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling_factor + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + The scaling factor + - name: type + required: No + default: !!str ScalePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The postprocessor to be scaled + subblocks: + - name: /UserObjects/SideAverageValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str SideAverageValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /UserObjects/SideFluxAverage + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diffusivity + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the diffusivity material property that will be used in the flux computation. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str SideFluxAverage + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /UserObjects/SideFluxIntegral + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: diffusivity + required: Yes + default: !!str + cpp_type: MaterialPropertyName + group_name: + description: | + The name of the diffusivity material property that will be used in the flux computation. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str SideFluxIntegral + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /UserObjects/SideIntegralVariablePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str SideIntegralVariablePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this boundary condition applies to + subblocks: + - name: /UserObjects/SolutionUserObject + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: es + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + The name of the file holding the equation system info in xda format (xda only). + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: mesh + required: Yes + default: !!str + cpp_type: MeshFileName + group_name: + description: | + The name of the mesh file (must be xda or exodusII file). + - name: rotation0_angle + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Anticlockwise rotation angle (in degrees) to use for rotation about rotation0_vector. + - name: rotation0_vector + required: No + default: !!str 0 0 1 + cpp_type: libMesh::VectorValue + group_name: + description: | + Vector about which to rotate points of the simulation. + - name: rotation1_angle + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Anticlockwise rotation angle (in degrees) to use for rotation about rotation1_vector. + - name: rotation1_vector + required: No + default: !!str 0 0 1 + cpp_type: libMesh::VectorValue + group_name: + description: | + Vector about which to rotate points of the simulation. + - name: scale + required: No + default: !!str 1 1 1 + cpp_type: std::vector > + group_name: + description: | + Scale factor for points in the simulation + - name: scale_multiplier + required: No + default: !!str 1 1 1 + cpp_type: std::vector > + group_name: + description: | + Scale multiplying factor for points in the simulation + - name: system + required: No + default: !!str nl0 + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the system to pull values out of (xda only). + - name: system_variables + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + The name of the nodal and elemental variables from the file you want to use for values + - name: timestep + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Index of the single timestep used or "LATEST" for the last timestep (exodusII only). If not supplied, time interpolation will occur. + - name: transformation_order + required: No + default: !!str translation scale + cpp_type: MultiMooseEnum + group_name: + options: rotation0 translation scale rotation1 scale_multiplier + description: | + The order to perform the operations in. Define R0 to be the rotation matrix encoded by rotation0_vector and rotation0_angle. Similarly for R1. Denote the scale by s, the scale_multiplier by m, and the translation by t. Then, given a point x in the simulation, if transformation_order = 'rotation0 scale_multiplier translation scale rotation1' then form p = R1*(R0*x*m - t)/s. Then the values provided by the SolutionUserObject at point x in the simulation are the variable values at point p in the mesh. + - name: translation + required: No + default: !!str 0 0 0 + cpp_type: std::vector > + group_name: + description: | + Translation factors for x,y,z coordinates of the simulation + - name: type + required: No + default: !!str SolutionUserObject + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/Terminator + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: expression + required: Yes + default: !!str + cpp_type: FunctionExpression + group_name: + description: | + FParser expression to process Postprocessor values into a boolean value. Termination of the simulation occurs when this returns true. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: type + required: No + default: !!str Terminator + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/TimeExtremeValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: postprocessor + required: Yes + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the postprocessor used for reporting time extreme values + - name: type + required: No + default: !!str TimeExtremeValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value_type + required: No + default: !!str max + cpp_type: MooseEnum + group_name: + options: max min abs_max abs_min + description: | + Type of extreme value to return.'max' returns the maximum value.'min' returns the minimum value.'abs_max' returns the maximum absolute value.'abs_min' returns the minimum absolute value. + subblocks: + - name: /UserObjects/TimestepSize + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str TimestepSize + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/TotalVariableValue + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str TotalVariableValue + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: No + default: !!str + cpp_type: PostprocessorName + group_name: + description: | + The name of the postprocessor + subblocks: + - name: /UserObjects/VariableInnerProduct + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: second_variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the second variable in the inner product (variable, second_variable) + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VariableInnerProduct + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /UserObjects/VariableResidual + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str VariableResidual + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The name of the variable to compute the residual for + subblocks: + - name: /UserObjects/VectorPostprocessorComparison + description: | + + parameters: + - name: absolute_tolerance + required: No + default: !!str 1e-12 + cpp_type: double + group_name: + description: | + Absolute tolerance used in comparisons + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: comparison_type + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: equals greater_than_equals less_than_equals greater_than less_than + description: | + The type of comparison to perform. Options are: equals greater_than_equals less_than_equals greater_than less_than + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str VectorPostprocessorComparison + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: vector_name_a + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the vector in the first vector post-processor to compare + - name: vector_name_b + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the vector in the second vector post-processor to compare + - name: vectorpostprocessor_a + required: Yes + default: !!str + cpp_type: VectorPostprocessorName + group_name: + description: | + The first vector post-processor in the comparison + - name: vectorpostprocessor_b + required: Yes + default: !!str + cpp_type: VectorPostprocessorName + group_name: + description: | + The second vector post-processor in the comparison + subblocks: + - name: /UserObjects/VectorPostprocessorComponent + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: index + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + Index of the vectorpostprocessor for which to report a value + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: type + required: No + default: !!str VectorPostprocessorComponent + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: vector_name + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + Name of the vector for which to report a value + - name: vectorpostprocessor + required: Yes + default: !!str + cpp_type: VectorPostprocessorName + group_name: + description: | + The vectorpostprocessor from which a value is extracted + subblocks: + - name: /UserObjects/VerifyElementUniqueID + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VerifyElementUniqueID + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/VerifyNodalUniqueID + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VerifyNodalUniqueID + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /UserObjects/VolumePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VolumePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: +- name: /Variables + description: | + + parameters: + subblocks: + - name: /Variables/* + description: | + + parameters: + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH + description: | + Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed) + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: Yes + default: !!str MooseVariableBase + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + - name: initial_from_file_timestep + required: No + default: !!str LATEST + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: 'Initial From File' + description: | + Gives the timestep (or "LATEST") for which to read a solution from a file for a given variable. (Default: LATEST) + - name: initial_from_file_var + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: 'Initial From File' + description: | + Gives the name of a variable for which to read an initial condition from a mesh file + subblocks: + - name: /Variables/*/InitialCondition + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /Variables/*/InitialCondition/ + description: | + + parameters: + subblocks: + - name: /Variables/*/InitialCondition//ArrayConstantIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str ArrayConstantIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: value + required: Yes + default: !!str + cpp_type: Eigen::Matrix + group_name: + description: | + The values to be set in IC + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /Variables/*/InitialCondition//ArrayFunctionIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: function + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The initial condition functions. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str ArrayFunctionIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /Variables/*/InitialCondition//BoundingBoxIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: inside + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The value of the variable inside the box + - name: int_width + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The width of the diffuse interface. Set to 0 for sharp interface. + - name: outside + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The value of the variable outside the box + - name: type + required: No + default: !!str BoundingBoxIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + - name: x1 + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The x coordinate of the lower left-hand corner of the box + - name: x2 + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The x coordinate of the upper right-hand corner of the box + - name: y1 + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The y coordinate of the lower left-hand corner of the box + - name: y2 + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The y coordinate of the upper right-hand corner of the box + - name: z1 + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The z coordinate of the lower left-hand corner of the box + - name: z2 + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The z coordinate of the upper right-hand corner of the box + subblocks: + - name: /Variables/*/InitialCondition//ConstantIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str ConstantIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The value to be set in IC + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /Variables/*/InitialCondition//FunctionIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + The initial condition function. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str FunctionIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /Variables/*/InitialCondition//FunctionScalarIC + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: function + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The initial condition function. + - name: type + required: No + default: !!str FunctionScalarIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: No + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /Variables/*/InitialCondition//RandomIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: distribution + required: No + default: !!str + cpp_type: DistributionName + group_name: + description: | + Name of distribution defining distribution of randomly generated values + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: legacy_generator + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Determines whether or not the legacy generator (deprecated) should be used. + - name: max + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Upper bound of uniformly distributed randomly generated values + - name: min + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Lower bound of uniformly distributed randomly generated values + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: + description: | + Seed value for the random number generator + - name: type + required: No + default: !!str RandomIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /Variables/*/InitialCondition//ScalarComponentIC + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str ScalarComponentIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: values + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Initial values to initialize the scalar variable. + - name: variable + required: No + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /Variables/*/InitialCondition//ScalarConstantIC + description: | + + parameters: + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: type + required: No + default: !!str ScalarConstantIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + + - name: variable + required: No + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /Variables/*/InitialCondition//VectorConstantIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str VectorConstantIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + - name: x_value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + The x value to be set in IC + - name: y_value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The y value to be set in IC + - name: z_value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + The z value to be set in IC + subblocks: + - name: /Variables/*/InitialCondition//VectorFunctionIC + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: function + required: No + default: !!str + cpp_type: FunctionName + group_name: + description: | + The initial condition vector function. This cannot be supplied with the component parameters. + - name: function_x + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + A function that describes the x-component of the initial condition + - name: function_y + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + A function that describes the y-component of the initial condition + - name: function_z + required: No + default: !!str 0 + cpp_type: FunctionName + group_name: + description: | + A function that describes the z-component of the initial condition + - name: ignore_uo_dependency + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + When set to true, a UserObject retrieved by this IC will not be executed before the this IC + - name: type + required: No + default: !!str VectorFunctionIC + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: variable + required: Yes + default: !!str + cpp_type: VariableName + group_name: + description: | + The variable this initial condition is supposed to provide values for. + subblocks: + - name: /Variables/ArrayMooseVariable + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str ArrayMooseVariable + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Variables/MooseVariable + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariable + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Variables/MooseVariableBase + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariableBase + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Variables/MooseVariableConstMonomial + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str MONOMIAL + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str CONSTANT + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariableConstMonomial + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Variables/MooseVariableFVReal + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariableFVReal + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Variables/MooseVariableScalar + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str SCALAR + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str MooseVariableScalar + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: + - name: /Variables/VectorMooseVariable + description: | + + parameters: + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: components + required: No + default: !!str 1 + cpp_type: unsigned int + group_name: + description: | + Number of components for an array variable + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: eigen + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + True to make this variable an eigen variable + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: family + required: No + default: !!str LAGRANGE + cpp_type: MooseEnum + group_name: + options: LAGRANGE MONOMIAL HERMITE SCALAR HIERARCHIC CLOUGH XYZ SZABAB BERNSTEIN L2_LAGRANGE L2_HIERARCHIC NEDELEC_ONE LAGRANGE_VEC MONOMIAL_VEC + description: | + Specifies the family of FE shape functions to use for this variable. + - name: fv + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to make this variable a finite volume variable + - name: initial_condition + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Specifies the initial condition for this variable + - name: order + required: No + default: !!str FIRST + cpp_type: MooseEnum + group_name: + options: CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH EIGHTTEENTH NINETEENTH TWENTIETH TWENTYFIRST TWENTYSECOND TWENTYTHIRD TWENTYFOURTH TWENTYFIFTH TWENTYSIXTH TWENTYSEVENTH TWENTYEIGHTH TWENTYNINTH THIRTIETH THIRTYFIRST THIRTYSECOND THIRTYTHIRD THIRTYFOURTH THIRTYFIFTH THIRTYSIXTH THIRTYSEVENTH THIRTYEIGHTH THIRTYNINTH FORTIETH FORTYFIRST FORTYSECOND FORTYTHIRD + description: | + Order of the FE shape function to use for this variable (additional orders not listed here are allowed, depending on the family). + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: scaling + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Specifies a scaling factor to apply to this variable + - name: type + required: No + default: !!str VectorMooseVariable + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_dual + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + True to use dual basis for Lagrange multipliers + subblocks: +- name: /VectorPostprocessors + description: | + + parameters: + subblocks: + - name: /VectorPostprocessors/* + description: | + + parameters: + - name: inactive + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + If specified blocks matching these identifiers will be skipped. + - name: isObjectAction + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Indicates that this is a MooseObjectAction. + - name: type + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + A string representing the Moose Object that will be built by this Action + subblocks: + - name: /VectorPostprocessors/CSVReader + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: csv_file + required: Yes + default: !!str + cpp_type: FileName + group_name: + description: | + The name of the CSV file to read. Currently, with the exception of the header row, only numeric values are supported. + - name: delimiter + required: No + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The column delimiter. Despite the name this can read files separated by delimiter other than a comma. If this options is omitted it will read comma or space separated files. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str INITIAL + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: header + required: No + default: !!str + cpp_type: bool + group_name: + description: | + When true it is assumed that the first row contains column headers, these headers are used as the VectorPostprocessor vector names. If false the file is assumed to contain only numbers and the vectors are named automatically based on the column number (e.g., 'column_0000', 'column_0001'). If not supplied the reader attempts to auto detect the headers. + - name: ignore_empty_lines + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + When true new empty lines in the file are ignored. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: type + required: No + default: !!str CSVReader + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /VectorPostprocessors/ConstantVectorPostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: type + required: No + default: !!str ConstantVectorPostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: value + required: Yes + default: !!str + cpp_type: std::vector >, std::allocator > > > + group_name: + description: | + Vector values this object will have. Leading dimension must be equal to leading dimension of vector_names parameter. + - name: vector_names + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Names of the column vectors in this object + subblocks: + - name: /VectorPostprocessors/CylindricalAverage + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: bin_number + required: No + default: !!str 50 + cpp_type: unsigned int + group_name: + description: | + Number of histogram bins + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: cylinder_axis + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + Vector along cylinder coordinate axis + - name: empty_bin_value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Value to assign to bins into which no datapoints fall + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: origin + required: No + default: !!str 0 0 0 + cpp_type: libMesh::Point + group_name: + description: | + Origin of the cylinder + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: radius + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Radius to average out to + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str CylindricalAverage + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + Variables to average radially + subblocks: + - name: /VectorPostprocessors/Eigenvalues + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: type + required: No + default: !!str Eigenvalues + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /VectorPostprocessors/ElementValueSampler + description: | + + parameters: + - name: _auto_broadcast + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: sort_by + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z id + description: | + What to sort the samples by + - name: type + required: No + default: !!str ElementValueSampler + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The names of the variables that this VectorPostprocessor operates on + subblocks: + - name: /VectorPostprocessors/ElementVariablesDifferenceMax + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: compare_a + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The first variable to evaluate the difference with, performed as "compare_a - compare_b" + - name: compare_b + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The second variable to evaluate the difference with, performed as "compare_a - compare_b" + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: furthest_from_zero + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Find the difference with the highest absolute value + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str ElementVariablesDifferenceMax + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /VectorPostprocessors/ElementsAlongLine + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The end of the line + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: start + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The beginning of the line + - name: type + required: No + default: !!str ElementsAlongLine + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /VectorPostprocessors/ElementsAlongPlane + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: normal + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + Normal vector to the plane + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: point + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + Point in the plane + - name: type + required: No + default: !!str ElementsAlongPlane + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /VectorPostprocessors/HistogramVectorPostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: num_bins + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of bins for the histograms + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: type + required: No + default: !!str HistogramVectorPostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: vpp + required: Yes + default: !!str + cpp_type: VectorPostprocessorName + group_name: + description: | + The VectorPostprocessor to compute histogram of + subblocks: + - name: /VectorPostprocessors/IntersectionPointsAlongLine + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The end of the line + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: start + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The beginning of the line + - name: type + required: No + default: !!str IntersectionPointsAlongLine + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /VectorPostprocessors/LeastSquaresFit + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: num_samples + required: No + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of samples to be output + - name: order + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The order of the polynomial fit + - name: output + required: No + default: !!str Coefficients + cpp_type: MooseEnum + group_name: + options: Coefficients Samples + description: | + The quantity to output. Options are: Coefficients Samples + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: sample_x_max + required: No + default: !!str + cpp_type: double + group_name: + description: | + The maximum x value of the of samples to be output + - name: sample_x_min + required: No + default: !!str + cpp_type: double + group_name: + description: | + The minimum x value of the of samples to be output + - name: truncate_order + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Truncate the order of the fitted polynomial if an insufficient number of data points are provided. If this is set to false, an error will be generated in that case. + - name: type + required: No + default: !!str LeastSquaresFit + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: vectorpostprocessor + required: Yes + default: !!str + cpp_type: VectorPostprocessorName + group_name: + description: | + The vectorpostprocessor on whose values we perform a least squares fit + - name: x_name + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the independent variable + - name: x_scale + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Value used to scale x values (scaling is done after shifting) + - name: x_shift + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Value used to shift x values (shifting is done before scaling) + - name: y_name + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the dependent variable + - name: y_scale + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Value used to scale y values (scaling is done after shifting) + - name: y_shift + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Value used to shift y values (shifting is done before scaling) + subblocks: + - name: /VectorPostprocessors/LeastSquaresFitHistory + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: contains_complete_history + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: order + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The order of the polynomial fit + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: truncate_order + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + Truncate the order of the fitted polynomial if an insufficient number of data points are provided. If this is set to false, an error will be generated in that case. + - name: type + required: No + default: !!str LeastSquaresFitHistory + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: vectorpostprocessor + required: Yes + default: !!str + cpp_type: VectorPostprocessorName + group_name: + description: | + The vectorpostprocessor on whose values we perform a least squares fit + - name: x_name + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the independent variable + - name: x_scale + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Value used to scale x values (scaling is done after shifting) + - name: x_shift + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Value used to shift x values (shifting is done before scaling) + - name: y_name + required: Yes + default: !!str + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + The name of the dependent variable + - name: y_scale + required: No + default: !!str 1 + cpp_type: double + group_name: + description: | + Value used to scale y values (scaling is done after shifting) + - name: y_shift + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Value used to shift y values (shifting is done before scaling) + subblocks: + - name: /VectorPostprocessors/LineFunctionSampler + description: | + + parameters: + - name: _auto_broadcast + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_point + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The ending of the line + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: functions + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The Functions to sample along the line + - name: num_points + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of points to sample along the line + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: sort_by + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z id + description: | + What to sort the samples by + - name: start_point + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The beginning of the line + - name: type + required: No + default: !!str LineFunctionSampler + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /VectorPostprocessors/LineMaterialRealSampler + description: | + + parameters: + - name: _auto_broadcast + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The end of the line + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: property + required: Yes + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: + description: | + Name of the material property to be output along a line + - name: sort_by + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z id + description: | + What to sort the samples by + - name: start + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The beginning of the line + - name: type + required: No + default: !!str LineMaterialRealSampler + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /VectorPostprocessors/LineValueSampler + description: | + + parameters: + - name: _auto_broadcast + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: end_point + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The ending of the line + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: num_points + required: Yes + default: !!str + cpp_type: unsigned int + group_name: + description: | + The number of points to sample along the line + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: scaling + required: No + default: !!str 1 + cpp_type: PostprocessorName + group_name: + description: | + The postprocessor that the variables are multiplied with + - name: sort_by + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z id + description: | + What to sort the samples by + - name: start_point + required: Yes + default: !!str + cpp_type: libMesh::Point + group_name: + description: | + The beginning of the line + - name: type + required: No + default: !!str LineValueSampler + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The names of the variables that this VectorPostprocessor operates on + subblocks: + - name: /VectorPostprocessors/MaterialVectorPostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: elem_ids + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + Element IDs to print data for (others are ignored). + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: material + required: Yes + default: !!str + cpp_type: MaterialName + group_name: + description: | + Material for which all properties will be recorded. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str MaterialVectorPostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /VectorPostprocessors/NearestPointIntegralVariablePostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: points + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + Computations will be lumped into values at these points. + - name: points_file + required: No + default: !!str + cpp_type: FileName + group_name: + description: | + A filename that should be looked in for points. Each set of 3 values in that file will represent a Point. This and 'points' cannot be both supplied. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str NearestPointIntegralVariablePostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The name of the variable that this object operates on + subblocks: + - name: /VectorPostprocessors/NodalValueSampler + description: | + + parameters: + - name: _auto_broadcast + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: boundary + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: sort_by + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z id + description: | + What to sort the samples by + - name: type + required: No + default: !!str NodalValueSampler + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: unique_node_execute + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + When false (default), block restricted objects will have the execute method called multiple times on a single node if the node lies on a interface between two subdomains. + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The names of the variables that this VectorPostprocessor operates on + subblocks: + - name: /VectorPostprocessors/PiecewiseFunctionTabulate + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: function + required: Yes + default: !!str + cpp_type: FunctionName + group_name: + description: | + Name of the piecewise function object to extract the time steps from + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: type + required: No + default: !!str PiecewiseFunctionTabulate + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /VectorPostprocessors/PointValueSampler + description: | + + parameters: + - name: _auto_broadcast + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: points + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The points where you want to evaluate the variables + - name: scaling + required: No + default: !!str 1 + cpp_type: PostprocessorName + group_name: + description: | + The postprocessor that the variables are multiplied with + - name: sort_by + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z id + description: | + What to sort the samples by + - name: type + required: No + default: !!str PointValueSampler + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The names of the variables that this VectorPostprocessor operates on + subblocks: + - name: /VectorPostprocessors/SideValueSampler + description: | + + parameters: + - name: _auto_broadcast + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: sort_by + required: Yes + default: !!str + cpp_type: MooseEnum + group_name: + options: x y z id + description: | + What to sort the samples by + - name: type + required: No + default: !!str SideValueSampler + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: Yes + default: !!str + cpp_type: std::vector + group_name: + description: | + The names of the variables that this VectorPostprocessor operates on + subblocks: + - name: /VectorPostprocessors/SidesetInfoVectorPostprocessor + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: boundary + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of boundary IDs from the mesh where this boundary condition applies + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: meta_data_types + required: No + default: !!str + cpp_type: MultiMooseEnum + group_name: + options: centroid min max area + description: | + Data types that are obtained and written to file. + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: type + required: No + default: !!str SidesetInfoVectorPostprocessor + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /VectorPostprocessors/SphericalAverage + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: bin_number + required: No + default: !!str 50 + cpp_type: unsigned int + group_name: + description: | + Number of histogram bins + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: empty_bin_value + required: No + default: !!str 0 + cpp_type: double + group_name: + description: | + Value to assign to bins into which no datapoints fall + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: origin + required: No + default: !!str 0 0 0 + cpp_type: libMesh::Point + group_name: + description: | + Origin of the cylinder + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: radius + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Radius to average out to + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str SphericalAverage + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + Variables to average radially + subblocks: + - name: /VectorPostprocessors/VectorMemoryUsage + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: mem_units + required: No + default: !!str mebibytes + cpp_type: MooseEnum + group_name: + options: bytes kibibytes mebibytes gibibytes kilobytes megabytes gigabytes + description: | + The unit prefix used to report memory usage, default: Mebibytes + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: report_peak_value + required: No + default: !!str 1 + cpp_type: bool + group_name: + description: | + If the vectorpostprocessor is executed more than once during a time step, report the aggregated peak value. + - name: type + required: No + default: !!str VectorMemoryUsage + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /VectorPostprocessors/VectorOfPostprocessors + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: postprocessors + required: Yes + default: !!str + cpp_type: std::vector > + group_name: + description: | + The postprocessors whose values are to be reported + - name: type + required: No + default: !!str VectorOfPostprocessors + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: + - name: /VectorPostprocessors/VolumeHistogram + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: bin_number + required: No + default: !!str 50 + cpp_type: unsigned int + group_name: + description: | + Number of histogram bins + - name: block + required: No + default: !!str + cpp_type: std::vector > + group_name: + description: | + The list of block ids (SubdomainID) that this object will be applied + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: implicit + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Determines whether this object is calculated using an implicit or explicit form + - name: max_value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Maximum variable value + - name: min_value + required: Yes + default: !!str + cpp_type: double + group_name: + description: | + Minimum variable value + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: seed + required: No + default: !!str 0 + cpp_type: unsigned int + group_name: 'Advanced' + description: | + The seed for the master random number generator + - name: type + required: No + default: !!str VolumeHistogram + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + - name: variable + required: No + default: !!str + cpp_type: std::vector + group_name: + description: | + Variable to bin the volume of + subblocks: + - name: /VectorPostprocessors/WorkBalance + description: | + + parameters: + - name: allow_duplicate_execution_on_initial + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable). + - name: balances + required: No + default: !!str num_elems num_nodes num_dofs num_partition_sides partition_surface_area num_partition_hardware_id_sides partition_hardware_id_surface_area + cpp_type: MultiMooseEnum + group_name: + options: num_elems num_nodes num_dofs num_partition_sides partition_surface_area num_partition_hardware_id_sides partition_hardware_id_surface_area + description: | + Which metrics do you want to use to represent word balance + - name: contains_complete_history + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Set this flag to indicate that the values in all vectors declared by this VPP represent a time history (e.g. with each invocation, new values are added and old values are never removed). This changes the output so that only a single file is output and updated with each invocation + - name: control_tags + required: No + default: !!str + cpp_type: std::vector, std::allocator >, std::allocator, std::allocator > > > + group_name: 'Advanced' + description: | + Adds user-defined labels for accessing object parameters via control logic. + - name: enable + required: No + default: !!str 1 + cpp_type: bool + group_name: 'Advanced' + description: | + Set the enabled status of the MooseObject. + - name: execute_on + required: No + default: !!str TIMESTEP_END + cpp_type: ExecFlagEnum + group_name: + description: | + The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM. + - name: force_preaux + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREAUX + - name: force_preic + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Forces the GeneralUserObject to be executed in PREIC during initial setup + - name: outputs + required: No + default: !!str + cpp_type: std::vector > + group_name: 'Advanced' + description: | + Vector of output names were you would like to restrict the output of variables(s) associated with this object + - name: parallel_type + required: No + default: !!str REPLICATED + cpp_type: MooseEnum + group_name: + options: DISTRIBUTED REPLICATED + description: | + Set how the data is represented within the VectorPostprocessor (VPP); 'distributed' indicates that data within the VPP is distributed and no auto communication is preformed, this setting will result in parallel output within the CSV output; 'replicated' indicates that the data within the VPP is correct on processor 0, the data will automatically be broadcast to all processors unless the '_auto_broadcast' param is set to false within the validParams function. + - name: sync_to_all_procs + required: No + default: !!str 0 + cpp_type: bool + group_name: + description: | + Whether or not to sync the vectors to all processors. By default we only sync them to processor 0 so they can be written out. Setting this to true will use more communication, but is necessary if you expect these vectors to be available on all processors + - name: system + required: No + default: !!str ALL + cpp_type: MooseEnum + group_name: + options: ALL NL AUX + description: | + The system(s) to retrieve the number of DOFs from (NL, AUX, ALL). Default == ALL + - name: type + required: No + default: !!str WorkBalance + cpp_type: std::__cxx11::basic_string, std::allocator > + group_name: + description: | + + - name: use_displaced_mesh + required: No + default: !!str 0 + cpp_type: bool + group_name: 'Advanced' + description: | + Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. + subblocks: +**END YAML DATA** diff --git a/test/include/base/PlatypusTestApp.h b/test/include/base/PlatypusTestApp.h new file mode 100644 index 00000000..ff8133e2 --- /dev/null +++ b/test/include/base/PlatypusTestApp.h @@ -0,0 +1,16 @@ +#pragma once + +#include "MooseApp.h" + +class PlatypusTestApp : public MooseApp +{ +public: + static InputParameters validParams(); + + PlatypusTestApp(InputParameters parameters); + virtual ~PlatypusTestApp(); + + static void registerApps(); + static void registerAll(Factory & f, ActionFactory & af, Syntax & s, bool use_test_objs = false); +}; + diff --git a/test/src/base/PlatypusTestApp.C b/test/src/base/PlatypusTestApp.C new file mode 100644 index 00000000..3102d674 --- /dev/null +++ b/test/src/base/PlatypusTestApp.C @@ -0,0 +1,54 @@ +#include "PlatypusTestApp.h" +#include "PlatypusApp.h" +#include "Moose.h" +#include "AppFactory.h" +#include "MooseSyntax.h" +#include "ModulesApp.h" + +InputParameters +PlatypusTestApp::validParams() +{ + InputParameters params = PlatypusApp::validParams(); + return params; +} + +PlatypusTestApp::PlatypusTestApp(InputParameters parameters) : MooseApp(parameters) +{ + PlatypusTestApp::registerAll( + _factory, _action_factory, _syntax, getParam("allow_test_objects")); +} + +PlatypusTestApp::~PlatypusTestApp() {} + +void +PlatypusTestApp::registerAll(Factory & f, ActionFactory & af, Syntax & s, bool use_test_objs) +{ + PlatypusApp::registerAll(f, af, s); + if (use_test_objs) + { + Registry::registerObjectsTo(f, {"PlatypusTestApp"}); + Registry::registerActionsTo(af, {"PlatypusTestApp"}); + } +} + +void +PlatypusTestApp::registerApps() +{ + registerApp(PlatypusApp); + registerApp(PlatypusTestApp); +} + +/*************************************************************************************************** + *********************** Dynamic Library Entry Points - DO NOT MODIFY ****************************** + **************************************************************************************************/ +// External entry point for dynamic application loading +extern "C" void +PlatypusTestApp__registerAll(Factory & f, ActionFactory & af, Syntax & s) +{ + PlatypusTestApp::registerAll(f, af, s); +} +extern "C" void +PlatypusTestApp__registerApps() +{ + PlatypusTestApp::registerApps(); +} diff --git a/test/src/base/StorkTestApp.C.module b/test/src/base/StorkTestApp.C.module new file mode 100644 index 00000000..89043483 --- /dev/null +++ b/test/src/base/StorkTestApp.C.module @@ -0,0 +1,53 @@ +#include "PlatypusTestApp.h" +#include "PlatypusApp.h" +#include "Moose.h" +#include "AppFactory.h" +#include "MooseSyntax.h" + +InputParameters +PlatypusTestApp::validParams() +{ + InputParameters params = PlatypusApp::validParams(); + return params; +} + +PlatypusTestApp::PlatypusTestApp(InputParameters parameters) : MooseApp(parameters) +{ + PlatypusTestApp::registerAll( + _factory, _action_factory, _syntax, getParam("allow_test_objects")); +} + +PlatypusTestApp::~PlatypusTestApp() {} + +void +PlatypusTestApp::registerAll(Factory & f, ActionFactory & af, Syntax & s, bool use_test_objs) +{ + PlatypusApp::registerAll(f, af, s); + if (use_test_objs) + { + Registry::registerObjectsTo(f, {"PlatypusTestApp"}); + Registry::registerActionsTo(af, {"PlatypusTestApp"}); + } +} + +void +PlatypusTestApp::registerApps() +{ + registerApp(PlatypusApp); + registerApp(PlatypusTestApp); +} + +/*************************************************************************************************** + *********************** Dynamic Library Entry Points - DO NOT MODIFY ****************************** + **************************************************************************************************/ +// External entry point for dynamic application loading +extern "C" void +PlatypusTestApp__registerAll(Factory & f, ActionFactory & af, Syntax & s) +{ + PlatypusTestApp::registerAll(f, af, s); +} +extern "C" void +PlatypusTestApp__registerApps() +{ + PlatypusTestApp::registerApps(); +} diff --git a/test/tests/unit/auxkernels/gold/lagrange_vector_variable_from_components_aux_out.csv b/test/tests/unit/auxkernels/gold/lagrange_vector_variable_from_components_aux_out.csv new file mode 100644 index 00000000..fdd6d7b6 --- /dev/null +++ b/test/tests/unit/auxkernels/gold/lagrange_vector_variable_from_components_aux_out.csv @@ -0,0 +1,3 @@ +time,element_l2_difference +0,0 +1,0 diff --git a/test/tests/unit/auxkernels/gold/lagrange_vector_variable_to_components_aux_out.csv b/test/tests/unit/auxkernels/gold/lagrange_vector_variable_to_components_aux_out.csv new file mode 100644 index 00000000..c46f53fb --- /dev/null +++ b/test/tests/unit/auxkernels/gold/lagrange_vector_variable_to_components_aux_out.csv @@ -0,0 +1,3 @@ +time,compare_x,compare_y,compare_z +0,0,0,0 +1,0,0,0 diff --git a/test/tests/unit/auxkernels/gold/monomial_vector_variable_from_components_aux_out.csv b/test/tests/unit/auxkernels/gold/monomial_vector_variable_from_components_aux_out.csv new file mode 100644 index 00000000..fdd6d7b6 --- /dev/null +++ b/test/tests/unit/auxkernels/gold/monomial_vector_variable_from_components_aux_out.csv @@ -0,0 +1,3 @@ +time,element_l2_difference +0,0 +1,0 diff --git a/test/tests/unit/auxkernels/gold/monomial_vector_variable_to_components_aux_out.csv b/test/tests/unit/auxkernels/gold/monomial_vector_variable_to_components_aux_out.csv new file mode 100644 index 00000000..7f67f21a --- /dev/null +++ b/test/tests/unit/auxkernels/gold/monomial_vector_variable_to_components_aux_out.csv @@ -0,0 +1,3 @@ +time,compare_x,compare_y,compare_z +0,0,0,0 +1,8.7075427791676e-14,8.6684069026608e-14,9.7976825775776e-14 diff --git a/test/tests/unit/auxkernels/lagrange_vector_variable_from_components_aux.i b/test/tests/unit/auxkernels/lagrange_vector_variable_from_components_aux.i new file mode 100644 index 00000000..9fbeb202 --- /dev/null +++ b/test/tests/unit/auxkernels/lagrange_vector_variable_from_components_aux.i @@ -0,0 +1,119 @@ +[Mesh] + type = GeneratedMesh + nx = 5 + ny = 5 + nz = 5 + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [test_vector] + family = LAGRANGE_VEC + order = FIRST + [] + + [target_vector] + family = LAGRANGE_VEC + order = FIRST + [] + + [target_x] + family = LAGRANGE + order = FIRST + [] + + [target_y] + family = LAGRANGE + order = FIRST + [] + + [target_z] + family = LAGRANGE + order = FIRST + [] +[] + +[AuxKernels] + [set_test_vector_from_target_components] + type = VectorVariableFromComponentsAux + variable = test_vector + component_x = target_x + component_y = target_y + component_z = target_z + execute_on = timestep_end + [] +[] + +[Functions] + [function_target_x] + type = ParsedFunction + expression = '100*x' + [] + + [function_target_y] + type = ParsedFunction + expression = '100*y' + [] + + [function_target_z] + type = ParsedFunction + expression = '100*z' + [] + + [function_target] + type = ParsedVectorFunction + expression_x = '100*x' + expression_y = '100*y' + expression_z = '100*z' + [] +[] + +[ICs] + [set_target_x] + type = FunctionIC + variable = target_x + function = function_target_x + [] + + [set_target_y] + type = FunctionIC + variable = target_y + function = function_target_y + [] + + [set_target_z] + type = FunctionIC + variable = target_z + function = function_target_z + [] + + [set_target_vector] + type = VectorFunctionIC + variable = target_vector + function = function_target + [] +[] + +[Postprocessors] + [element_l2_difference] + type = ElementVectorL2Difference + variable = target_vector + other_variable = test_vector + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true + exodus = false +[] diff --git a/test/tests/unit/auxkernels/lagrange_vector_variable_to_components_aux.i b/test/tests/unit/auxkernels/lagrange_vector_variable_to_components_aux.i new file mode 100644 index 00000000..6466378c --- /dev/null +++ b/test/tests/unit/auxkernels/lagrange_vector_variable_to_components_aux.i @@ -0,0 +1,137 @@ +[Mesh] + type = GeneratedMesh + nx = 5 + ny = 5 + nz = 5 + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [target_vector] + family = LAGRANGE_VEC + order = FIRST + [] + + [target_x] + family = LAGRANGE + order = FIRST + [] + + [target_y] + family = LAGRANGE + order = FIRST + [] + + [target_z] + family = LAGRANGE + order = FIRST + [] + + [test_x] + family = LAGRANGE + order = FIRST + [] + + [test_y] + family = LAGRANGE + order = FIRST + [] + + [test_z] + family = LAGRANGE + order = FIRST + [] +[] + +[Functions] + [function_target] + type = ParsedVectorFunction + expression_x = '100*x' + expression_y = '100*y' + expression_z = '100*z' + [] +[] + +[ICs] + # 1. Setup our target vector. + [set_target_vector] + type = VectorFunctionIC + variable = target_vector + function = function_target + [] +[] + +[AuxKernels] + # 2. Set x y z target components using MOOSE AuxKernel. + # These will be used for comparison with test_x/y/z. + [set_target_x] + type = VectorVariableComponentAux + variable = target_x + vector_variable = target_vector + component = 'x' + execute_on = timestep_end + [] + + [set_target_y] + type = VectorVariableComponentAux + variable = target_y + vector_variable = target_vector + component = 'y' + execute_on = timestep_end + [] + + [set_target_z] + type = VectorVariableComponentAux + variable = target_z + vector_variable = target_vector + component = 'z' + execute_on = timestep_end + [] + + # 3. Set x y z test components in one step using custom AuxKernel. + [set_components_from_target_vector] + type = VectorVariableToComponentsAux + variable = target_vector + component_x = test_x + component_y = test_y + component_z = test_z + execute_on = timestep_end + [] +[] + +[Postprocessors] + # 4. Compare test and target components. Should match! + [compare_x] + type = ElementL2Difference + variable = test_x + other_variable = target_x + [] + + [compare_y] + type = ElementL2Difference + variable = test_y + other_variable = target_y + [] + + [compare_z] + type = ElementL2Difference + variable = test_z + other_variable = target_z + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true + exodus = false +[] diff --git a/test/tests/unit/auxkernels/monomial_vector_variable_from_components_aux.i b/test/tests/unit/auxkernels/monomial_vector_variable_from_components_aux.i new file mode 100644 index 00000000..463b9226 --- /dev/null +++ b/test/tests/unit/auxkernels/monomial_vector_variable_from_components_aux.i @@ -0,0 +1,119 @@ +[Mesh] + type = GeneratedMesh + nx = 5 + ny = 5 + nz = 5 + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [test_vector] + family = MONOMIAL_VEC + order = CONSTANT + [] + + [target_vector] + family = MONOMIAL_VEC + order = CONSTANT + [] + + [target_x] + family = MONOMIAL + order = CONSTANT + [] + + [target_y] + family = MONOMIAL + order = CONSTANT + [] + + [target_z] + family = MONOMIAL + order = CONSTANT + [] +[] + +[AuxKernels] + [set_test_vector_from_target_components] + type = VectorVariableFromComponentsAux + variable = test_vector + component_x = target_x + component_y = target_y + component_z = target_z + execute_on = timestep_end + [] +[] + +[Functions] + [function_target_x] + type = ParsedFunction + expression = '100*x' + [] + + [function_target_y] + type = ParsedFunction + expression = '100*y' + [] + + [function_target_z] + type = ParsedFunction + expression = '100*z' + [] + + [function_target] + type = ParsedVectorFunction + expression_x = '100*x' + expression_y = '100*y' + expression_z = '100*z' + [] +[] + +[ICs] + [set_target_x] + type = FunctionIC + variable = target_x + function = function_target_x + [] + + [set_target_y] + type = FunctionIC + variable = target_y + function = function_target_y + [] + + [set_target_z] + type = FunctionIC + variable = target_z + function = function_target_z + [] + + [set_target_vector] + type = VectorFunctionIC + variable = target_vector + function = function_target + [] +[] + +[Postprocessors] + [element_l2_difference] + type = ElementVectorL2Difference + variable = target_vector + other_variable = test_vector + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true + exodus = false +[] diff --git a/test/tests/unit/auxkernels/monomial_vector_variable_to_components_aux.i b/test/tests/unit/auxkernels/monomial_vector_variable_to_components_aux.i new file mode 100644 index 00000000..84b50ff1 --- /dev/null +++ b/test/tests/unit/auxkernels/monomial_vector_variable_to_components_aux.i @@ -0,0 +1,137 @@ +[Mesh] + type = GeneratedMesh + nx = 5 + ny = 5 + nz = 5 + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [target_vector] + family = MONOMIAL_VEC + order = CONSTANT + [] + + [target_x] + family = MONOMIAL + order = CONSTANT + [] + + [target_y] + family = MONOMIAL + order = CONSTANT + [] + + [target_z] + family = MONOMIAL + order = CONSTANT + [] + + [test_x] + family = MONOMIAL + order = CONSTANT + [] + + [test_y] + family = MONOMIAL + order = CONSTANT + [] + + [test_z] + family = MONOMIAL + order = CONSTANT + [] +[] + +[Functions] + [function_target] + type = ParsedVectorFunction + expression_x = '100*x' + expression_y = '100*y' + expression_z = '100*z' + [] +[] + +[ICs] + # 1. Setup our target vector. + [set_target_vector] + type = VectorFunctionIC + variable = target_vector + function = function_target + [] +[] + +[AuxKernels] + # 2. Set x y z target components using MOOSE AuxKernel. + # These will be used for comparison with test_x/y/z. + [set_target_x] + type = VectorVariableComponentAux + variable = target_x + vector_variable = target_vector + component = 'x' + execute_on = timestep_end + [] + + [set_target_y] + type = VectorVariableComponentAux + variable = target_y + vector_variable = target_vector + component = 'y' + execute_on = timestep_end + [] + + [set_target_z] + type = VectorVariableComponentAux + variable = target_z + vector_variable = target_vector + component = 'z' + execute_on = timestep_end + [] + + # 3. Set x y z test components in one step using custom AuxKernel. + [set_components_from_target_vector] + type = VectorVariableToComponentsAux + variable = target_vector + component_x = test_x + component_y = test_y + component_z = test_z + execute_on = timestep_end + [] +[] + +[Postprocessors] + # 4. Compare test and target components. Should match! + [compare_x] + type = ElementL2Difference + variable = test_x + other_variable = target_x + [] + + [compare_y] + type = ElementL2Difference + variable = test_y + other_variable = target_y + [] + + [compare_z] + type = ElementL2Difference + variable = test_z + other_variable = target_z + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true + exodus = false +[] diff --git a/test/tests/unit/auxkernels/tests b/test/tests/unit/auxkernels/tests new file mode 100644 index 00000000..09bc57eb --- /dev/null +++ b/test/tests/unit/auxkernels/tests @@ -0,0 +1,30 @@ +[Tests] + design = 'syntax/Problem/index.md' + [./LagrangeVectorVariableFromComponentsAux] + type = 'CSVDiff' + input = 'lagrange_vector_variable_from_components_aux.i' + csvdiff = 'lagrange_vector_variable_from_components_aux_out.csv' + requirement = 'Platypus shall have the ability to build a Lagrange vector variable from three standard Lagrange variables.' + [] + + [./MonomialVectorVariableFromComponentsAux] + type = 'CSVDiff' + input = 'monomial_vector_variable_from_components_aux.i' + csvdiff = 'monomial_vector_variable_from_components_aux_out.csv' + requirement = 'Platypus shall have the ability to build a Monomial vector variable from three standard Monomial variables.' + [] + + [./LagrangeVectorVariableToComponentsAux] + type = 'CSVDiff' + input = 'lagrange_vector_variable_to_components_aux.i' + csvdiff = 'lagrange_vector_variable_to_components_aux_out.csv' + requirement = 'Platypus shall have the ability to extract the components from a Lagrange vector variable.' + [] + + [./MonomialVectorVariableToComponentsAux] + type = 'CSVDiff' + input = 'monomial_vector_variable_to_components_aux.i' + csvdiff = 'monomial_vector_variable_to_components_aux_out.csv' + requirement = 'Platypus shall have the ability to extract the components from a constant-order Monomial vector variable.' + [] +[] diff --git a/test/tests/unit/kernels/diffusion_master.i b/test/tests/unit/kernels/diffusion_master.i new file mode 100644 index 00000000..7c4c7618 --- /dev/null +++ b/test/tests/unit/kernels/diffusion_master.i @@ -0,0 +1,86 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/mug.e + dim = 3 +[] + +[Variables] + [./moose_diffused] + family = LAGRANGE + order = FIRST + [../] +[] + +[AuxVariables] + [./mfem_diffused] + family = LAGRANGE + order = FIRST + [../] +[] + +[Kernels] + [diff] + type = Diffusion + variable = moose_diffused + [] +[] + +[BCs] + [bottom] + type = DirichletBC + variable = moose_diffused + boundary = 'bottom' + value = 1 + [] + + [top] + type = DirichletBC + variable = moose_diffused + boundary = 'top' + value = 0 + [] +[] + +[Postprocessors] + [./l2_difference] + type = ElementL2Difference + variable = moose_diffused + other_variable = mfem_diffused + [../] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true + exodus = true +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'diffusion_mfem.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [pull_diffused] + type = MultiAppNearestNodeTransfer + + # Transfer from the sub-app to this app + from_multi_app = sub_app + + # The name of the variable in the sub-app + source_variable = mfem_diffused + + # The name of the auxiliary variable in this app + variable = mfem_diffused + [] +[] diff --git a/test/tests/unit/kernels/diffusion_mfem.i b/test/tests/unit/kernels/diffusion_mfem.i new file mode 100644 index 00000000..d960cde4 --- /dev/null +++ b/test/tests/unit/kernels/diffusion_mfem.i @@ -0,0 +1,87 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/mug.e + dim = 3 +[] + +[Problem] + type = MFEMProblem + use_glvis = true +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [mfem_diffused] + family = LAGRANGE + order = FIRST + [] +[] + +[Functions] + [value_bottom] + type = ParsedFunction + value = 1.0 + [] + [value_top] + type = ParsedFunction + value = 0.0 + [] +[] + +[BCs] + [bottom] + type = MFEMScalarDirichletBC + variable = mfem_diffused + boundary = '1' + coefficient = BottomValue + [] + [low_terminal] + type = MFEMScalarDirichletBC + variable = mfem_diffused + boundary = '2' + coefficient = TopValue + [] +[] + +[Coefficients] + [one] + type = MFEMConstantCoefficient + value = 1.0 + [] + [TopValue] + type = MFEMFunctionCoefficient + function = value_top + [] + [BottomValue] + type = MFEMFunctionCoefficient + function = value_bottom + [] +[] + +[Kernels] + [diff] + type = MFEMDiffusionKernel + variable = mfem_diffused + coefficient = one + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 + + l_tol = 1e-16 + l_max_its = 1000 +[] + +[Outputs] + [VisItDataCollection] + type = MFEMVisItDataCollection + file_base = OutputData/Diffusion + [] +[] diff --git a/test/tests/unit/kernels/gold/diffusion_master_out.csv b/test/tests/unit/kernels/gold/diffusion_master_out.csv new file mode 100644 index 00000000..cf1a7a8c --- /dev/null +++ b/test/tests/unit/kernels/gold/diffusion_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,1.1939933806136e-06 diff --git a/test/tests/unit/kernels/gold/mug.e b/test/tests/unit/kernels/gold/mug.e new file mode 100644 index 0000000000000000000000000000000000000000..6770d8ddc8ff977539dd75420c5c4e7fa9835694 GIT binary patch literal 226076 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

+QXvFrm=5}s6;hB%cun@m~sDE^+#`DZQD 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 fTuxxV2lG9c@4@^W%vA}p literal 0 HcmV?d00001 diff --git a/test/tests/unit/kernels/tests b/test/tests/unit/kernels/tests new file mode 100644 index 00000000..6fe2eca0 --- /dev/null +++ b/test/tests/unit/kernels/tests @@ -0,0 +1,9 @@ +[Tests] + design = 'syntax/Problem/index.md' + [./MFEMDiffusion] + type = 'CSVDiff' + input = 'diffusion_master.i' + csvdiff = 'diffusion_master_out.csv' + requirement = 'Platypus shall have the ability to solve a diffusion problem set up from MOOSE and produce the same result as a native run.' + [] +[] diff --git a/test/tests/unit/outputs/gold/simple-cube-tet10.e b/test/tests/unit/outputs/gold/simple-cube-tet10.e new file mode 100644 index 0000000000000000000000000000000000000000..baddc534af547cc5e3ec93e834830c3490dfb559 GIT binary patch literal 36744 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 literal 0 HcmV?d00001 diff --git a/test/tests/unit/outputs/output_master.i b/test/tests/unit/outputs/output_master.i new file mode 100644 index 00000000..5a11c646 --- /dev/null +++ b/test/tests/unit/outputs/output_master.i @@ -0,0 +1,75 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-tet10.e + dim = 3 +[] + +[Variables] + [moose_diffused] + family = LAGRANGE + order = FIRST + [] +[] + +[AuxVariables] + [mfem_diffused] + family = LAGRANGE + order = FIRST + [] +[] + +[Kernels] + [diff] + type = Diffusion + variable = moose_diffused + [] +[] + +[BCs] + [bottom] + type = DirichletBC + variable = moose_diffused + boundary = 'bottom' + value = 1 + [] + + [top] + type = DirichletBC + variable = moose_diffused + boundary = 'top' + value = 0 + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = moose_diffused + other_variable = mfem_diffused + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 2.0 + nl_abs_tol = 1e-5 + l_tol = 1e-5 +[] + +[Outputs] + csv = true + exodus = true +[] + +[MultiApps] + [sub_app] + type = FullSolveMultiApp + positions = '0 0 0' + input_files = 'output_mfem.i' + execute_on = timestep_begin + keep_full_output_history = true + [] +[] + diff --git a/test/tests/unit/outputs/output_mfem.i b/test/tests/unit/outputs/output_mfem.i new file mode 100644 index 00000000..f8317362 --- /dev/null +++ b/test/tests/unit/outputs/output_mfem.i @@ -0,0 +1,76 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-tet10.e + dim = 3 +[] + +[Problem] + type = MFEMProblem + use_glvis = true +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [mfem_diffused] + family = LAGRANGE + order = FIRST + [] +[] + +[BCs] + [bottom] + type = MFEMScalarDirichletBC + variable = mfem_diffused + boundary = '1' + coefficient = BottomValue + [] + [low_terminal] + type = MFEMScalarDirichletBC + variable = mfem_diffused + boundary = '2' + coefficient = TopValue + [] +[] + +[Coefficients] + [one] + type = MFEMConstantCoefficient + value = 1.0 + [] + [TopValue] + type = MFEMConstantCoefficient + value = 0 + [] + [BottomValue] + type = MFEMConstantCoefficient + value = 1 + [] +[] + +[Kernels] + [diff] + type = MFEMDiffusionKernel + variable = mfem_diffused + coefficient = one + [] +[] + +[Executioner] + type = Transient + dt = 0.1 + start_time = 0.0 + end_time = 0.1 + + l_tol = 1e-5 + l_max_its = 1000 +[] + +[Outputs] + [ParaViewDataCollection] + type = MFEMParaViewDataCollection + file_base = OutputData/ParaViewCoil + [] +[] diff --git a/test/tests/unit/outputs/tests b/test/tests/unit/outputs/tests new file mode 100644 index 00000000..a08d338c --- /dev/null +++ b/test/tests/unit/outputs/tests @@ -0,0 +1,14 @@ +[Tests] + design = 'syntax/Problem/index.md' + [MFEMOutputs] + type = CheckFiles + input = output_master.i + check_files = 'OutputData/ParaViewCoil/Run0/Run0.pvd + OutputData/ParaViewCoil/Run1/Run1.pvd + OutputData/ParaViewCoil/Run0/Cycle000000/data.pvtu + OutputData/ParaViewCoil/Run0/Cycle000001/data.pvtu + OutputData/ParaViewCoil/Run1/Cycle000000/data.pvtu + OutputData/ParaViewCoil/Run1/Cycle000001/data.pvtu' + requirement = 'Platypus shall have the ability to create DataCollections saved to enumerated folders when called in a FullSolveMultiApps.' + [] +[] diff --git a/test/tests/unit/postprocessors/gold/lagrange_vector_l2_difference_out.csv b/test/tests/unit/postprocessors/gold/lagrange_vector_l2_difference_out.csv new file mode 100644 index 00000000..90ca55b3 --- /dev/null +++ b/test/tests/unit/postprocessors/gold/lagrange_vector_l2_difference_out.csv @@ -0,0 +1,3 @@ +time,primary_secondary_difference,primary_tertiary_difference +0,0,0 +1,99.498743710662,0 diff --git a/test/tests/unit/postprocessors/gold/monomial_vector_l2_difference_out.csv b/test/tests/unit/postprocessors/gold/monomial_vector_l2_difference_out.csv new file mode 100644 index 00000000..90ca55b3 --- /dev/null +++ b/test/tests/unit/postprocessors/gold/monomial_vector_l2_difference_out.csv @@ -0,0 +1,3 @@ +time,primary_secondary_difference,primary_tertiary_difference +0,0,0 +1,99.498743710662,0 diff --git a/test/tests/unit/postprocessors/lagrange_vector_l2_difference.i b/test/tests/unit/postprocessors/lagrange_vector_l2_difference.i new file mode 100644 index 00000000..af0defd5 --- /dev/null +++ b/test/tests/unit/postprocessors/lagrange_vector_l2_difference.i @@ -0,0 +1,96 @@ +[Mesh] + type = GeneratedMesh + nx = 5 + ny = 5 + nz = 5 + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [primary_lagrange_vector] + family = LAGRANGE_VEC + order = FIRST + [] + + [secondary_lagrange_vector] + family = LAGRANGE_VEC + order = FIRST + [] + + [tertiary_lagrange_vector] + family = LAGRANGE_VEC + order = FIRST + [] +[] + +[Functions] + [primary_function] + type = ParsedVectorFunction + expression_x = '100*x' + expression_y = '100*y' + expression_z = '100*z' + [] + + [secondary_function] + type = ParsedVectorFunction + expression_x = '0' + expression_y = '0' + expression_z = '0' + [] + + [tertiary_function] + type = ParsedVectorFunction + expression_x = '100*x' + expression_y = '100*y' + expression_z = '100*z' + [] +[] + +[ICs] + [primary_ic] + type = VectorFunctionIC + variable = primary_lagrange_vector + function = primary_function + [] + + [secondary_ic] + type = VectorFunctionIC + variable = secondary_lagrange_vector + function = secondary_function + [] + + [tertiary_ic] + type = VectorFunctionIC + variable = tertiary_lagrange_vector + function = tertiary_function + [] +[] + +[Postprocessors] + [primary_secondary_difference] + type = ElementVectorL2Difference + variable = primary_lagrange_vector + other_variable = secondary_lagrange_vector + [] + + [primary_tertiary_difference] + type = ElementVectorL2Difference + variable = primary_lagrange_vector + other_variable = tertiary_lagrange_vector + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] diff --git a/test/tests/unit/postprocessors/monomial_vector_l2_difference.i b/test/tests/unit/postprocessors/monomial_vector_l2_difference.i new file mode 100644 index 00000000..5d239221 --- /dev/null +++ b/test/tests/unit/postprocessors/monomial_vector_l2_difference.i @@ -0,0 +1,97 @@ +[Mesh] + type = GeneratedMesh + nx = 5 + ny = 5 + nz = 5 + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [primary_monomial_vector] + family = MONOMIAL_VEC + order = CONSTANT + [] + + [secondary_monomial_vector] + family = MONOMIAL_VEC + order = CONSTANT + [] + + [tertiary_monomial_vector] + family = MONOMIAL_VEC + order = CONSTANT + [] +[] + +[Functions] + [primary_function] + type = ParsedVectorFunction + expression_x = '100*x' + expression_y = '100*y' + expression_z = '100*z' + [] + + [secondary_function] + type = ParsedVectorFunction + expression_x = '0' + expression_y = '0' + expression_z = '0' + [] + + [tertiary_function] + type = ParsedVectorFunction + expression_x = '100*x' + expression_y = '100*y' + expression_z = '100*z' + [] +[] + +[ICs] + [primary_ic] + type = VectorFunctionIC + variable = primary_monomial_vector + function = primary_function + [] + + [secondary_ic] + type = VectorFunctionIC + variable = secondary_monomial_vector + function = secondary_function + [] + + [tertiary_ic] + type = VectorFunctionIC + variable = tertiary_monomial_vector + function = tertiary_function + [] +[] + +[Postprocessors] + [primary_secondary_difference] + type = ElementVectorL2Difference + variable = primary_monomial_vector + other_variable = secondary_monomial_vector + [] + + [primary_tertiary_difference] + type = ElementVectorL2Difference + variable = primary_monomial_vector + other_variable = tertiary_monomial_vector + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true + exodus = false +[] diff --git a/test/tests/unit/postprocessors/tests b/test/tests/unit/postprocessors/tests new file mode 100644 index 00000000..147be0c9 --- /dev/null +++ b/test/tests/unit/postprocessors/tests @@ -0,0 +1,16 @@ +[Tests] + design = 'syntax/Problem/index.md' + [./LagrangeVectorL2Difference] + type = 'CSVDiff' + input = 'lagrange_vector_l2_difference.i' + csvdiff = 'lagrange_vector_l2_difference_out.csv' + requirement = 'Platypus shall have the ability to compute the element-wise l2 difference between Lagrange vector variables.' + [] + + [./MonomialVectorL2Difference] + type = 'CSVDiff' + input = 'monomial_vector_l2_difference.i' + csvdiff = 'monomial_vector_l2_difference_out.csv' + requirement = 'Platypus shall have the ability to compute the element-wise l2 difference between Monomial vector variables.' + [] +[] diff --git a/test/tests/unit/transfers/gold/cylinder-hex-q2.e b/test/tests/unit/transfers/gold/cylinder-hex-q2.e new file mode 100644 index 0000000000000000000000000000000000000000..d8f1a83bbb55bf6c752df7ce437974a8c7d24d05 GIT binary patch literal 118356 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

= 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

vE$p25mJOXB;z_#Q^ZSkAX{ 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 kWE7(rh($ literal 0 HcmV?d00001 diff --git a/test/tests/unit/transfers/gold/elemental_var_coupled_out.e b/test/tests/unit/transfers/gold/elemental_var_coupled_out.e new file mode 100644 index 0000000000000000000000000000000000000000..e263034eeeb39f19d8f07233c5dbbb58aac65743 GIT binary patch literal 146140 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 literal 0 HcmV?d00001 diff --git a/test/tests/unit/transfers/gold/fo_nodal_var_coupled_out.e b/test/tests/unit/transfers/gold/fo_nodal_var_coupled_out.e new file mode 100644 index 0000000000000000000000000000000000000000..2b9db2fc8fc81348bae9aa7b34e992fdf1b9d70e GIT binary patch literal 386640 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ôu6*(*{<*k6z}AEG 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%0A9H9}O>K)T%r>>Dp6%--?Z1o~bh*$0Ku+ z`AEGp>Oia+x%k?_t*!P6|dG5-yS)`SvhpW($tp&C<0GP^PBdO2z6)`?O!_@rSlH*`pbnW9Qi!b_YWN&d?74|M{!;H!`k0s$lVS2sx%{5U zmmI~fjnpeKy~xb3e&=_Cvab7*&PCR@@fxy+-@uzyoc`wH|)KJGtn@RTd?vJ6{yrl5%gA}0lZ>vMZxrSG#RSUw+!qDn0h- z?B)B_U1a9|ZgOvA4!iSbo*McWU&9zPf6>eLynj1-$)R4ci%)ERTPg9@sAe4HH^M<= z^t7uF<@de4l;huzJ|B5!rHjdLin%wG-&3>J^U#y`QDiTrAE}?5=B_@F+zsY0_T(#Z z|8-uGn{{^WlDPwp1GPWw9&)StVaV{eXJ`OYQJrjNqEC3eIP z*rj4ud9!~$pu6rAf6mgH$~iAXNwLjQNqzpGZ#1)4^^!wexu2VZGEXm)`c$3)Mk6Ot z*IGB0Bkz}wE#u9%w-RH_P4n3t1LnEOUi`)}Y`wC6S+C58^(ybrcaZDS7bKIfYO}0= z`f@am*RJ&_=WtWHwsL*QSu5u(=W(`&m2Xbv zYV29#?1OUsyqC=Wv_{b*vzEiwE9120rN0@Uv6XQQB&~m9vz}SQ@;)y|u}3%VJg??H z*jPu*JMv~8$HBPlt03{KLariLC&kv*@95>bK-%d`ulkq1HOK4d<@-X~xdq+zw}0~c zdUtG-e1h3us_T9j6LM|69>>25jP8Fg|pY3 zUH`AZO?+c_>XiEG<{h_TEs9L8)SaV~tGw$j%%+|Et#0xsPuh%L%41b}4}BnZ5;u|@ zbHW*K&JAa-yw97j@*VhS@?CNJ;z>ML$?rPl^8TGYY20}xZq8ffNj}%A=KOrtFzZ~N zzxNh*6T5Sl-$t7DVMDu($iy$$>0_BM=Ogn~=0Z7j5?|)$D)PpTuPf_6i#KP@g^;;e z9xHZYhWS#z7cxHUS^nlH&;e81@Cy1t{AeVDbe z7ENPs_Gdo=&R+R`Vw?^0Qs&&6mi<39*$ehpv0H~GUvqKulzp8%$+v_UeTtsFUG(%f z<+RCO`k#L5&oF%|`lIT659hdipV)?fNqY7aTguI)ko;Lc<8CgC*q1|m=Css5vy&sf z?!RNncaOx>%zfpZ+S1ar@Hsga=#s!KAPB!>uLGqPW_yd@|-0{ z_g*{fz5iP_=OJgIneilETxs)VGIMTUmUsSh>1W^~@t2BUt13r7uVbstR>fSX&O^%4 zm1`GNI@vV7_?qhsm$5b16(?8i;!eKUQn%4t+;LVH~V<>hv|dJCp&RPH}2T-JXY$d-_Y0cd{)Jm z`)~Z`cYNKr+K}OON`88B4$E&(lxG8LTAmkNEAniY_kiXGeDvC`Y}3F*;ze9HY zeC0kcCOIMOk-XP6gL!XmhRxaL#(c;%V?l9aRk3rj%_Uz|w=Pfg_#+$ft5g2=!Jf%J zXl_B;-}$$B^`+=rD&K~?a3}7CvsLsv#PqG=wi28EY+d>8AwT7_=H*#TId$?pR`RJk zOgEPD4e<%`P4+MGm2z?~g!Ci1^`+$Bw^KLoG4=Fcf8#50+tBxhm|^cviBGJ)l=q#_ z>7UVW!R^W)b;`9*$n<-J*z&$(50r5jLsw6o5})xka1?gOP(LBt7rSjb4?W{tp!+Pu?MGdte{z3BF@8Oj@6!J16D4N#g!Q_DpO$BR2P&+-th` zrRenm>`SxvBbOq#?Ub9_(Q~%M*9KI6dhSiN>pFV*U5l;$5k2kH{r_CA-|yJUw+g=K z%^mnNN9L`}-<{-5m0rb{`r^x+JKOd9&4shwuue_af|Q#(k%LHMD!!~w{L$0j%HG_i z(i5M0?B%z(Zq7|QddZ<)gI?|*nS(W8zvg)@zjNi;t+{Jeo@fMpad!Kuz65Dcm013i zoAyT0jXUM0JyP$F5prg~bx)n9t?`IIyFa=Znkgwh9 z#jIoe$(QTVWmUdONWSDKzvq0e`~`o;f3NcX7+5L~6K9l8q zu2lI)B6E)8tD}KYh>Sb>2dLU9`P47>qu3XL`RM+h9+`V$d5>I{Ozzl}%kS;o^%<;d z)~Gfra@|-4IY-8s`)7Io+lQ?eoTb|Im=RN8fLz~q;>vwl{!%CL{N=q*f6IM%Bev^1 zb!zvK+Ar_DOOnx%-}Rao;6nO<%H}M^miYRvl}%hXKDOe&jV7|GYIM^F9wx#GVjCnUeX=Hf4-%heb_%3Jb{ro3B6uj^CZ zHyiVi+Ar53`>A}R9)sjB?;44Bj!M3+WNW$>)}7DNzIGE+?lT#~o=E+%x@phYp-2MKTfQ1HLr&K zmcQd}UW@Chdg~~w8-J-UzSNVmyk8$n&erkexww1wo7vyX%0Xlv8v0S2j$E6xr{izl zfE#fWZtnQYv&1s=)c;BSc`;DEspxlBHfvt?oAs}c-0|o4kn;ZV1Ib=~N6>gZ9cYs8 zlPwI!AmqBkSFUrT2)TtWuJ#{>ay7{A`S?bhy!B}?BW8dx7dvPVyxoJG%`+f3~B zxRc!(k6z!TV=KCHv2D&@#m8ROS6|A0VK4ep!}W6Ao}yEye4o@teR-^e6~*60W-XMv z_RM41zt{1b&)QSu-M9z$cH)|@`OW+B0DT;CNM(PplJO-bx_z5+@|XC`gSlxeM1KgG z(?{sa<{$s};TlDgb!&YJ*r?090YV@(Ic=-}j{MN1cL{)xr1R0yL zrM;$hN-SHsKc*l1BWGYLvL6}SW#lDDzv%hRqyC?|?rUYvo?**+Sc_rnbH4J0xLn*8 zqAL4{FQ4%=Js0T`rvw0>Tf{G(R>jv;bmkDui`bljyJ@g3*&3P ziR`^^@Hd?CmUGAUV z>zTF5eW@-s{m8Yt`F0g=PD&dCNcEDdJnOwrYCm(Cdv5a``gh1a%K15UxWC+w#gz8n z6@L=aAM;xNwr34`=69~jmU%D-W&V}R-_v|Rjt_I3YfR?1tXJe`^sJY4sb_5Fp%d_T?eaPwn)0(#S&<~gKssq$LT z=h}SYS48&t2J~v3GUwT^zn=G zv_HD*-u#08C3}3mUpRU#xV-U#^{)YE$8kAd_Mwt##fj8c&ly$m1*(->Brv^xmX>p8cKkP_8pib;^k!_TLdmp35s;xse!p zx!&&0{v_KWYy&YA*>lE_=l8|{{xL~w-OL`gw$1ghKDzPQv+Cq`lJd7M(}~ZXuvhY& zQoeai-|;v4kjHoYr5|srt1r!;;U3WZ1X&|}f0bTx?8SF_$Dg_-|19!7rhJ0F zWG$znKT6lv^4&1kCHpM*)nf0*{;ar+&73!X@A%5!U+%=`OqYA`&dOqwvwOaC26M*C zckkqUnBQKi4e8j5K2oQg@8jiK!e8E-vtN_%5B{Y(s<+onBZk6lT{cP5zyq8yVSM<<4Hfnr7z71D_yzq@CbVPGq|ev6noYn=gj#^xiuVoD1dJ#5zjAK(C!O8qJ{>)Omr}kf(QCah9r|FI%D%|(_+jUFCbrAO zn2U1H{EVKx*n;tvcUt32xja`If4+z1U9(|*^R2x#I-5QEI5^1Qn{J?)yK+D*7w-k;!nM{me8>~BuwF1q}AW-jw#9C_Z(d?Y^g zQa}HGsIVyM+LgaiDc8yaIx*!suiX9qkZ;y`UMt^cz88Ng-To~7vJdi`Vcyppz0|*! z%(x{%JsG(jyr{H@WOo8-a z05VSHa!={%Sp#!lzg#=>YQuG}HGvp?Yfadxmuq|3pG$P~Ql5t2`D{%L_mP%7t;st1 z%lqHsV$DHmKYdvm=}+XcSl$@dB1grcSO!NU{k*^`D5@(O)+SxpioOZY@*HiVo^V*WTHNEke94IqZ99%A0od#^-!v!+O@wWpjPcdt7Tq%!HiL%kXn$ zb1g2)F?h%APs{D&780Z2hE8eEme_Qz5=JYsX&v zY-zjvu0ND?9n5bMt=TX;=D?inZT6AL9&!h^xiB~8!Mq)RjkS(*J8 zasjyZw4Cq8jvX0WYyOU}6`yj8tzrI(z96~K2>!&g#b0uy4u8%}Yhf&cMYZ=Ff5z{O zH`gSusC4$CXFk~KCxdO+ce^UC_AcAL`u{%pq@0tWI-A);<-Yw2`7r+_>XiR>Q{+jkf8DDEjEJdFUXT$zUOo+Xq*jjqHy{osDVP6)@VR?Rg zxP1Ri{p7J1^NqW_lOCkZo@dqMYOT=mN6-6YV)EWxo+FObzlr&8t#tPMo|yBWv){d* z)HV>aA-gqeJfwUZ?t!^$WIR><)NQR;>H6FFxYBP?*7vj-Tb{S_9$ucIKBceMsZ;8& zB<6i>YqRkoIe@&j(toXVvSBYY{*ZrVd9t6+ME3I)BS^Mf*q9cy6Cs($j>Yo-1^%B~IN8G)_&D$GIoW_5?Yzsv7hlQUD!lk;D`iSJ3ChUlkM zw&>|^`kFd9lWQUUa-C@@7hmGFm2t%%Ux}H4yo$ay*1@{^Wlc*C<tlIN9YnH~`*-4Zz-ZVFV_;A0hnF!4Vi(iAoSYPs z%eM_(A99^8IR}z*W}b7M&pn{|4%>Um`d9MGSM;>e&7a&^o3xqs_Cm&AtyjK-HOx)9 z=Y6jJ_?QqAu-V(KO%X|NZC?46YZJ+FH2F_e|4V-TD*9|4Tl8+;yxTXM>U_hdoHkoq zik}~S>2=Ie>1Qd=F8)@!xbl0)yyV&HSNlKnlzV>hi!XWj%kOip6?JQv-|g~SU1V!3 zY^`iQqBqS$Y$a}2?VaAS6-m#tbJJeS--DEI8QH7ppRv`>#W`?otYxis7So^H1!HyM z@+_af7pYCmw>YWaX|tTeg~ct>sn`7;lsx6UYp-!5Zon=2Xdkq;#dg?UO#JNer++Q` zrnMvcoNQU^_>Cp`)8C?JZzo^!Udp~d)>03p-Mz(`uZ*K%4jaaoYi!fnw(Q>)dutcA z3rTa+(oQRLx(D_|=2DK9w#&D}|CH^q)_%}d>i`^xgK#hgVi3}=5!)Kv(aW`7xpioz zAEtabj=+&P3ie*>82%peSR9Ar>8s#Wtfv1hGJ8oI!|I=)d?HT5$v6e#n`4lt>Hl41 z_Cn_M44hd>ww7GQAG>*K*#l)P(bL9x!|Rv2BgQ8-F`3uzNPDMsAuhtjXyTGu=l=7t zK7T}CQ9k4D{=G|VwN2^fBlnzgAG%pw)|B45442~yTnX3KZk}@gx|;18Tr2)z@;YRk z*TWua-2i)}brX`;KI^t$@;Hy_OYXB>eZ+fV>o#?6#~rv6=Cb>qpSbvwuhdQK-M9z$ z;y(6chv!Wj#eYBf0EXZ}JcRW95j-kie2c4>z4#a&#}jxGnY&lW#HNn;)>C*I&!{6l z{${)KJo!xeIAd%lfUVzBSDH)vp%!3w~9vjmvNqF2^;vmG3w5 zHuCo>-^HDrtv@VG3Ke-dv_@JYwoNvz2+v6*ngPf!G1Z=0^RJqJY_EmjltctbR ztY^+#{(WD{?J!X%E_<&%F@MG}C8oeKRsB^uIZB;L#5=?7Ny($wotu)g%2&R7|H@|V z+j6yytu0qu&h}L3g{js3nCvYseKv-i!|c`eG|<01H?;e(*(;5|l#^?^s_Y!JXMpvL zKjjj`UfLI*Z|aGUjIZ${z3aF4qZj+_?8efbNt?%X>ZeY9?W+D5%6lSfFJF6Rai5X1 zU{>?4@A-YFTyr)fZ^dnJoyd78=hS!_#+CD1d)3@$pUg z?sY4A>Xf|mE7Mahw)8LiWe&`Rx#`Mnd#W`Q7Y>h4zLq}adrIv-EGf^^RP`G6XKh?3y@;!2lJiM$zSHvTsCg!Ul0pnVfsF#9BtQy+^gFC#J?=B{+0KM^ijLD-N^Kj zz4SNz*O&4>q}@{1W<%S<-lO!pHdxO7SWN!)$;HXH*?-0__)R-&cVv4Bes$VQu`Nd~ zEmwOzPjD`=KIR2vpmF>zc;!^*}T=B>Etha_(!(stGx0gcY7uNU$rrA zCoX%sc?6E+bMBi*b?l{o`qo~h6JPqSPU%DPxIVO3!|GTAYZ|Nl-d>B;m-1Y544FNt zUVcYw8+&^ltc&$vjv5zt{OL!D;csSL6E`C^=-8WIDp&Q(x7;bTlk3EW*hqP7a${_Q z0oYU?_O|ntyp8Qf$h$fF7T6NmtHxQojz9ZhTk-Z<{dGQLYHy8+*o~pJhw{XH`_pHK zeU$I}w>6?9;TJ z+|kp&`0eTPce-!Mqu=$%I(o|Gd)JNhCq}TFn|zaN$d&Jm^`$%I=C1PXt~`22Z||Uw zJ7OoeKD2vbXYqsi^}lg7hR}~B@5h69NX#yftGyfKYiFMJ#9r82%m8Z3Z6An(aIkvm z&p>qTaX&DS?B}1-Ru>4n>%*&#+G#FD!(;-gtA?-Fc?6lp!Q291} z`;Gp(n2T^RF2SX^Oq=F0-*L(sT7z00_Dp_DOrDk;?JHo7+E?LfT!U+I9j?db;`BY& zp?c7d_6?+YX`A=fAX2|;S)T@)XyK?%8@Uf=9@`hAo{U?cb3JT7gskzycm$6^KiZEY>tgO3)-}(;xj(g^P@b4vVR(N_U!Uyg=||~b zbZw`PjormRg{S$FYZ5+ZA@h>hygQfi97vkioW1rl9e+1R;_Az(Ywo-E<@!+N5AeSD zXOX_iUHbQ2#~y#am&9Lh{I9LM54-!nW-sJjwIOeQpKR@ky|I`2&*KHWh{-V(yRo!i zGA}>M+eh6^AxFMDG!Mb}{4a}>tNltRZ){z?%=`9yXW${|f95D-XzPETlN$RfF9LH_ z-X|tvGp6*how1H5-;vOV@;Ymyjj`aBKHu#HMZp+G56bS zbHaQiUwNn5#h50*sMtW=cknLWgEdH>@>@g3+D?6SOHTHTx#Sx{8fViS)m$s`3=wDc`g%QPz(<>($pF|0F+W`-op# z?T;Zx853XrCNuBMWqv0n#pHdkiUW~9CJr<^bC<@-ikKk^;6aSDVruOp9U z|BuU-k)LJ+rQ#B{Ep1eAKEpB{Ov~5zRKTkpfAL@ECzGB!X|j5n@|{Xr|DJZI-JTwGwB4ia zo{`lVNZ(7@elGS=+4QAnv=QRe>0xgy*|DY1@kdXdQjgvMbwEJ}BQ<#Py6rU#MemtRPR;cEhTvhi#+5Q#o;Qc}*PiH^P#gN#Gm)Gd zlR2jwh<`|)C+L%4QZdGpxct3T{n3suG4bcVn>w`(JN9Agm9?5|cx-z=ZM@DlIi`T? zPtR1HeC0VizFzW}^PHpR`M6hEpL(Y5=smrM`)bd!Pt%D{T;da#=i##U)jntpqJM^* zuUW-EGdx$%wCeQXy8@RhPX}|4i?`@tA(f`Gevc25cng0mV zoa9?Wo?*)G(2uBZT&?3t{$_HU-*UfKKXprv)5T}}=DTLyOPe#Oryr${SE(~tA7>;F zBWDt4ed?FtNqJ5q`y)9Qh5j_>#cyI~#w>isIm~80TJPXpzKmPH(r#UBJ+YTovAzG!Ce z@zpM=Y?U5=>^$&+=Wi@IN8-0NjCljgd-pX*y~xsJcby7lx!fBHk@Vptsd-m@f@f-&_hgJq#!Z6z`>@ype-g1U#| zaBW;;97pNXr^?sytqAe?jiF~{tfHJYR)xNmZ&%t#f137PO}qJSP~PLC^EERb_Kc@z zb*zCku@?XR+IxiWc)I!RNz6J}SDnB3r!e;YF@T)%wT`4iR`_r1EKAagnieK+im!Sb;ceUFZ<==NUoRGbETvPX`d4X`0L>cr=p zTe+`^>DgHM19B7cYkf7=Tn}?yY-hX;?1?6ZVh|32_S^l*>G2*03N_DpzskFAerwO~ z=C$8R`?zk;HcwaQOZv-rNgD%Tygi#?b8I1Au7>{AMK5Z$7J=s_W=DBC9 zPTu5i^zGy?|88Oox--<68^+RbPVzfgMcYuF<_+rSzWAA2qPN__JI z_U*7ec3{5(shb>$yGb8@!OvnBP$zAt&8offeJ17DoU!uWPfz`x9m(@Mw&+dc@7c+i zwb8Tl|Do#6<93_MK7jAxzW08fB$Q+dNy-$GDbtaV1`3HX9EngWX)t97i6T>GIx-}4 zrJ|x!NRw0~LzyC)q|$`)et&D<58gk1pKGmkjq6(1+V|dT@8=x&;2;;9)g=Qz&n4a7 zWNtz~#P5A_V{E2BUdFik7@13+Da-ToRp`}l57Z#X^}R!X=3J!vFuknvf#^r!W7-Fc z`6=yvVL#X()OHt{kHbMgri?{LKl&Bk_zQ46AL?hucjB!0FSR7@5)XdHGmq{NICP@> z*+D<{#^(-Wu^avJ47NQpUlre9=zIdyV|O?lVSE-WKxbjH$H4dW)pDC0UuXOe==Ee> zKdSZMNca>vdCB!O=h{u=FC&B3;Z<9qN1^M(W`j)q8?noE?!9xSmHY4JEwBZcdvns@ zbF?(x7r;EKF_5dL@VC_FKXzu;r8}C)lYD&|K0{^~HqJ+XPk%*n8)%zvy(zxAb;lZ4 zGb6Rq$yv1oED6hz$=pKu%kO%39NW7Co8vw8#n_!dSItzeQKOgXpNKw+vfGKj5_|O$ zn9Yt{m$}iInP0hI$b5b{#8tUQ)#t$nAaTdu>)84n*#Eg+w`zGjKYHoJw%BIktk0oi zu66RY!VpX5SK=|hk(!V1#5hv3dDdv`h34kLN0a$vZLL#x%3!CxgReV{vlqMFsYAOv zjo%;Oy#|hed-07$Ci3CW(CBvRv^xXNgtOpmc9utt7yjqz;zd7mh~H{EZS!m{BlBkQ z?t#X~*C%T*hrT&?iHq*&MpWL*eAP=Qmt%SFPTeiycshs8cwA9XL@zh~zu)H^0l^yk$--u4T+_zbi?1}nNIGx=d zrpaHY&tG{4NuPWd^He30wD zh5v212Cg+`F5{PKPv#rBywhkuJjhoM>5HT0v!+{pY|?JfCnkOE>fWK>eTS{N@Ll*G z+b5t|Gx2oSgV;(wl8ZC-Zy=Le_&$H~HriMJ5O~Dcdiv&*-_ZPij_I1 z+^8LSYguw@PNi?%x*yRuzp|!37DsaT6Z|vKoAfgeV>A77zsXnb0n7dK5>-_#1$^b2 zSc#?D6g~~s>*;GT|8>@T7W|aY`_Y^6XM$=%4V`=JRLpbNB_^0^}=WRbt8bt?)dsPNOBE zg%OPDZ$F7cye)p-qmHyksh8;ek}t6|Y>wxF=aPQ`7%S&D$;)bR3Y~y!m zuZ*u@OdfL{l=Go-|91&`u|6Nw=TUW2%@M=f`R-tv?(J}gwwlfTMZW3k?nE<}ozeNw zT?YN?3n>5XHf+&v&WA6-Mf&F2#Mj%%-$m|nZS$(NNAfds-#8NIXia_cu@U*AH)*%a z4D%mv%g(RiH~Q}Y`AE(>>((AmZ(n*RYp(*I)&3@a=5P<(3vY(|#9@sZd9JNT@tOE$ z!~LM1$}`$;@&3k+{IsWmn#ldr=qb3A%qQ95tCE-U-t4=^*D?M8JP5y=@G@^P$5!_c z8{YzP>_a|*R9DPLF z??Lwndn-a>JQl2H^-4GcPKPgm*fO`7d5+XZ=2hnR7yQ(>e2vsn$(Q`K;%Ki1{<}xv zuV4=CE6~jG@785iIFtSxjn5tAyT{l`jEU`d_y_zG{ssSr57D^-|6n+j?m>gzXn(x_ zz~e(deiK9Njpb%6m)&#Vi3uOC=#U?;0CF%&{+@*Y!vDY;_FVKeG@uUp)ZS}hBX-16 z&Y#p*dp5y^^$7wvekpAeNpHiTX z_G&q8cAE6BW#`+^^eg)+hg`eHKhs`rkWZ~dC-U{#bbIu7Xx87}F1gii`K!#c*=*poa-M!yFp2ik3e#-8hD)+=(!X>UK3ey%g@WV}8K5|4E*>&Ac9 zGh>ObQX5TtB$iFdEeeZkCr0z>+3w!}Z-h6o zpE<@Kl5>aBpkK*ZwVv)ygU|M|!Dr+WL$ekAH&3WIGS+X7-bwB{l&w}B=lmjP7dgMo z?|-o;-WmByZDo(<8K$|9@n66b@VI`~BRNt})sv`sl)6$2sg=>JVZ1$neg4b$FKkth zz^UZv=6auNTkf^`E#NI|h;4MDcJ`h6$UDvvzq#kH794C=x3Kp~?NvZK{!2gn_?V3K z>Z9KZw#NTH+gX?7=W5hEV{f#ySdKwop--k=M1N;=N&R!R-w8VmW4V9GeZ%M=`fs0% zt%mNRzb#nL?pFM7qrV*VtMdlC<(DEE{P>#N7ndhA=zJkLfpa`BxS8PAJ8WG>%?-Rb><%;pojY}V?jz5=dG<^n&3OG^ z`tK3b#(XU^*zOZw^zfon_?gS^wD%zUV{+d`)lVn)?HYLJptqs+-B=vSe{&D~)427| z_dmTgFW&%t$Jj^sTL)&bAz#myZD;Gh5bw9-SI|C$F4=OuelOec|1zw4 zEZu|HvX}bzPkhnMJmRmJMP4p)f7q=u*y=9SpH2P);(V2{U$OOhRIYpe>zmQN;X}Yr zEuZ~|L9U*TM~tywPs4LzKD<}6b1ykL>puz~Gp^pAemAjZHQYOq%{^Q_KO5?ymD@6h zed(J+zaRP%bbk;>Ew}vvaG*9H_33aZoJsCn_zK>~(XWBJ$bHi2L2c{Y%+mfU@RvOF za#fpenbX1ISV&tf&%`;pfS$F@JIwL-@Nc7g9!h6)KKfGdTT{*|?nZZH^ANWA>cv#4 z-Ew~MGW2L;YNOo*e^MXi`NLQ_M|cjKe}q5tWqxD&<+{HCI*W`sbHQ`J&8xZ{saDE`tn|$>r(f0B46t4F#X?atI6tYxCqo$`)>3uyvGLlmR_C{M%$tD zz!Ao+N4o^7F2?Dr*+TXEPtw0}kjeRXuKVMkiQ}#4lK9KvUq9&PeM{u~Bk}F?{=M+2 z3E$j`o!C4Ijs~^Rf12*9;<oF2%{~7vU)_w%#vp)vUyvmv0N65347|VG)dtFWD zSoY<#|12Cw{*}X;w40*80Wpm?NBK@a?f!T;f!?WXEe$WlI|zM9uJ?pJ^yR)k5l*7> zWBBicAKo7Ze*Fe?E?h0<{m6a}%%wjCVjI7H^T3Z>&TJxE#(s}3FlpnBx0&=8L|*{Q z4ZOq@f8mcW<3}BJ@;2TT|6IIj^a1`(Ll+Ty?AklcpUCWO+a2vCO4&~=W6qv{XCY(%3l3{HFr0=ayb40 zBp2d{uX@f9cl90e;w<+~u6NbPzu3|#=gjNPb2o~w}V{T{n^Hz zBIkP0;dg2*_F^aY^8DFcDqic+$y5LNK|jw<^*0B(8GGr+W-Y$@4wy^twF52BPW#{= zpnna@SAFfIzn%8B+MDpf6x7OZJpEWO2eLZt6%>E9)J!_B&zflK8=cSWzw8$Jg^m}`~|00N` z|I!d&zGq2{i7)Rv$1fr~3td=TH=x!o>y|Yu_a7^vuY}X!)nuN6H;M0!@NssJMl-*C zCw#o-oddu99ea=AU8K)`&WoEGU5n433_fy}lryFNVmL)xt@oFJ7^)TcdIfqax*WPZ zBp!Au`>RmdiPXt&Anq+e~X{k>s)yg%PZ4!+Ah1i${?CnH0bhpfP4!cBwjJcFZ%jK=A4g? z&xF*o9QD_LIhPv$4!M8vu?@&uKbM?3FFLF8JIDBr>|QX5f&c91?B%i-J~-j4!^kAQ zdRKO=cdtfzb8g6%*zRFh4Dl0xk&VA_Bd3wtmjO^~y6u zewW9;$G6To8|*g4y9#}s{x9&&v17BpMLTo570vwc`d`9r@GCOs8&7;|1NrXH#&1Ux z%Xx6dq#s_!^jp`XnfF6^p6%xFO|Lr#)J^PlsY&zg@4(w@7|Z<9AFVm?BbR>l0=eR= zUQz$fp`UZ?jHO@Vv42bK<`emH7M=JaCy(vQurKVdFTb%>z7r&q^ZM!_I8gieK|lP~ z{)_$bOT}aj^S-mcYoecc68BC+zuj->_rFHfMfPUBCwl$BFZXWb6La1TjE`gMH!!cU z%t2g@8p-c-{hDDc*M^MM@{)FuQ~TxjnNEHm#`fQM12(N+e~*~6e)sB|@5uV~-x~Cz z8@-->e;?cg_rq_E$5wpr5BRx`w%Zw3gY`1zFycd;{R5!>>en0FTzg$u5AVP5KmNAV z{~bI84}<#aQ|o_Z@9%Wj>+s9-20xYg*Vb$1T(4c2-08;gYW|uv;49Dc>*ow(o5AR3(-zCO%jJ*cd2Db8S zKF)mJhGtJ~r2Q9&ok!_B*W6D;#XR~P9XYG6F^9d`w9f7I#!nh#3ST_UPk{dt&wJRp z34RLJqx{a>E7d7%xaO7L|25H-;52rgFOJ|;m_z5U@Hdd-{xLQ$fiIJ@M!EjSfAfnW zhOxD%j-j_DdMtVY8Mz!?3v;#aC404T^UXWc?(soBvdwaXeA?9=aI*NmYy1)8@1&pl z`Uf4kE7zAV;hll^En`ohZ1w*fe8oqxFW!>N?a)8NzXscN_K&*CIZCPJRq^c8)N_1? zU)?##Jbi!lZ~P05FF(kX`MsW>H;cnQseXo^+L!{hl=qUO%wra82(Kmk7WDga_EK0< zpM3i%^71%-6aD`fdp|wvT7L5~Cw0}o66OK(?AH;O_03sI|0H`W0DiR^Sko@+^ak{+ zY@R`GdsMEaWmRdo|u)A=dd;2nf_K0S4pe%||qPPH&1 zCx$6CSN7k76MlG+=?4Ai&gjM7({|`rTS02y+^TJ0UOFEHdFWP}^tD@coPOTrR`Y4! z&rT15&b?%@L%-Q;&>cU|c=8{6^y`fW8`US+m~HHJe9jv9^(F&9a#Qj>vX)cUa7xZ& zuib615qtHAL2Z`nfNQ|hZP$X4^&0;c9?*UlDj(%O@Q37YV8{BzXLk#lwN(erB4lqP z_i6Zy_AABoQ*>qgD<<~Yu1_^ar`v+=&(YoCt;RnJ`@+ZA5>K_b_66`o{%%H3H@>ZQ z>gaO)3)$(x+Kh~i&9VEYxjq+?E3!R)WT&2|zcAgS$i2~+`kb1N{MXU>VF5O-HhvB8 z*MCX>ZhU!6{pR^8?<*>L<@`zRr=AZlAom+^ZKxi_W2+WREf>`mLkx+#_@AuPXf}Id z&2xDD1vr=7pNw5ePEF+dr1mAo>D8(GIm4V|uZ*2G*h}q?j^}4m|Aqf*GWbPK{Pn$H z9Y@K>S|EmIZT4P2jE_Gz@WwX{{r0{1JIGPSe+_ITCuM#|lF@I!I_OmT&3lHi*zXRd zcZGNkM8%c<)C;vg3+CA!Jn+X~CUX$GWBua>{?tMPzf%Jhxeov7=hL(K`~2W1{+d~X z|HRpTaA+sq(*M9PmVWj}vk`1aX12a~6MM7kpp$#KPF$lOpl6{sq9?+!a1y!g;aNWN ztkNE4EPH}Xc^*1KKjVDm-g_K~Dfi!%TFi4&_`ST>@22;MK_>jjmiy<(Uq8_c-ACSD zM3!!+wzI!FdpP>#e1(l#9?J961MFMN#M9n~E)GkO{~mt!(SOP2n#fk&z*TTH8Fe*f zKa@ShM|X$*BIM*^YEf8>?(O`Y3fb%T8e=nt)|1Q`?jOW7z_&e$EMqVA2ch@`6 zGgjX3@Yh@f@>|b=2gy&9KTTV%N?)y&{$UeYb|XJJ0@O&SUb}M#**xpcTytW#U1pGN zUv5sbVMo{*#5nW(K92p%hj_<-!5dBD7H{8a|Jb}=QkC=PO5Sp=)~t$Nz=pN157d8| zSk!z=zoR$)BL4sIYPc7yb z_Ema@Vxzl^&ZFAj7}`@WWhZf}s+ zrOx$Xitbq4Q)H)>rTY)Iwm>uIt?BJO*vJ`AzIV?3SvwnLC--ROdG_zt$pe>_i?q~w!B-*eQRw!n&nXA&5Gz_?C4J| z4=a#Aj^6dgUGt~#b1xsCPy16NS=+qh9fk6f`{VB0@#r&cAac1ClxUxm+Zsj=r+hZo|#!1!up7e`;MFCY01 zJkL3KUN84S51_m7^PsV;i*?RB(X4m-6lywCtAjP_zHeT8fVG^m=G`p#DP4PDeE;CT zRqL%7r>tw}xuI_Cqw?LzpE8G9RS!`{a98{_=8oAA@)Z)E&B z{WXS%!Lm-^PK5%VZ{zHSoFkBt2o#M3SgPk^uS_uYr^mqz6*&&-|JbN(>33H#55=fQjvzVS*eOl@k;zcGG2 z`zMlrD?Yhye*IGDfX;sY{p*R=QQ6#f56tS2Ag?r5Sy`=v;Jy({L~eh znf7>p{L9IsV|5+f4*H|Pb)~n*`}fni67M$j#zCe($M}cg3vjOSD+ZYvez6x@OAYqo z_t`$$b;WD`-8bMW@%#(_(r=x1NTZC=AJfFAX$-T>z^)LR#F(uzK_0y>R z)KFsYcBYdU-UZpWw}SnhJ>Pwsp4#cILARtYo^~ztgZPiLu>$%as{Xns#jycfr=S~> z--`Xi(5>NZ_~L9=GuCMDq`ii5HPd`k{~kK(Bj*qGEMsyRAI<#mK0ej~jT=!Y_#NJu&(S_`=KVF<()+%!9a3rTw?|4QpHu}4U ze(u}L{riNU_V{JblDGEhM?TN<x|8*f1WBk(cUkB_ey-xYR)_rUJP z4~4_{*qr<};T^JSvv5wVZ@oT-KGo{96^h@0sZ;pqP;6yr!_48mI8hf=J$iQ3L0#v5xhFgNBzxz|$K~>wnppwJ<~gbT9T~Nd+!TA} z9h9Fz>0o*|`YQ2dL{hXncKAW-AL}xYFP~7{XuQYZqu%Bm)@vYiNOmeE9`^_RZjoQySug`tx zjBNOkZ`4-vS-1q`r_k7mjs5Ap0XAd5#+!_nbyJT|-&e9db%1%i6?QcKPI>u{u>;Xp z(Z3IFGX64nIV=myu{j@^kHbN5FkSxJ)aw_m(Yv*OkKXyrnvI_#cL*E`pCGR$<8S7< zWz7HBSa&V{mV>?KLiXnBvt3!ka$P;$nC6sPm@=m+Ip`ii<+*(b9@Liiks2ERS$j`y z^*MEvdF+H94WDLz0kGd{IcoVR`*#l8YBtaNYJumxLv> z-$ZV$fgicnHK5pE4rM=nDm7W!86%(H$~JZq&$0N+L#XRRp6B}&%}XA-t?{k#)NzAs ztL77bnG5-%f4sP?Q|f7a7ae))tXJ;S`y){6+grEZSho#o9jiy+alRg=_eyQ`*{F-m zHP3@(zu}MZv)|h6xf9?-IElR6){BDQ?`C)XjDHSJhEw$43$ecim_wPLIc0vC=SZF8 zxhBuXiEm1t%in{T`}lNibucpLk-7Km^y;mjUmS~~PqLxbvNm~6&2wzMAjtE~J%9a8 zak=(1_^tX6#_Dyv8{7z&1HYq9Q8n49&+v;Jesm+(tCRnCe)|n zbc%j_Sf}U~8!zC8?UB5W4m7^+ARD{I{@L<~LCkL&#-vpb3m}czF_$lwJ)MULM{1npuBB;@vG1jxt_o17h z@29^gET&Jck)v82Hs;)J4c4PtT%TU z%?s7o#hI{a&6U7c+5 z_YaWQDS52aL$xq0LhihwpYKBwN95}b(N)A@E-kyQHEWNdI|t4Y`>*KOUzPQq`U0@u z%g^`;^wh!6_(`$Q8?86Qk~}3}Q|B6&({jDH?y1-KE$boX%)hM1`sA%ebP{LQBlAk0 ztNDQMY61EWPwYo8`QsMRU zci#Wzy?1>RT`{!#YiH~y+HzL<;ir$6>rMAYI7}WMV)t;^WT5di#qN|i^S3%vhroq+ za$N3T-=h6ty2qk?=bo_K53Y@>)$ya~{6pNao$okeuU`UvHTnVcOJWgEVoAK^I+(au zhFmief99etXXew<&v{}wC%b59=UIE|V$d&VWef7FZkmPkcNgD-@F%jzv$NZ{Bv^HVcZ_~q=%I<$|AkxsocybH*8>(V<3P9%FWT&}GaBG+z&zb42`TTtzrx0+$lj>`95%KFHJ04Of5{J9u~X)iT*+z9FPo*rH%DKs z)Q7<8?7pz7DsfeR2YzaCmz$=KqJJIqQtzqtQsW;pj+e91Vs|O+m*QW<=NH8ERqeOK zw!>KZ)ouJ7hj%5J^R*uk$GrH~rGM}l`N&Rv4e$QJPToDG-<~K&{nx!GYvf5to{3%^~M0dERZ< z9KHM*x#;BiueZlyKi@%2nNRea1t$8jL%*3Hq8~edfIq_T^_N3`H|ZOn5_7Z5&~F=j z>-y|>|9QV(?k7GW2akb0)XbjfSg*Df&)E2n(2g$oscQ#&)vUpOX#7XE_~Uo9>(HM1 zj`_{-n?dI3>+?oJpkRz_@Qt)Tf32EE4+FGV6Ra(-7)a-VSGk@v;#Z#Mb4PZ`7+zB zSf==#y5Sl5@x_CWnOrpNG-8O|_Cp{?{a4WKVMp!T(4B_)K3irg^SBXy0M@AFQ(lT) z_NpymTM$#dHvcbx^UZ67E@*rU?Tqu)$#JXRM@zs`@De(=7}uXtuX$fK z_2WT5y7ANSQ{oXviRUNA*~@)y{TlpB^~pxA??Gz4pqn%5nyvWBcL=%X?yOnvxy$qQR%qh;+t6?B8QSGr_C2*9gS+|I zjJ>_dEDGkEvGUvV3iblBqZ*wDpw&9f5wl~|0&!IuZL}bz2rIf8soA4&jwoV zJx*X_{=rvyM>6prpNTWE3`UkG9wxkioDYR-FdPnG+?a^5)CSaQTyPi`!y z<@xG*ZMn}gQO-^4htbFBsMVQg(b2mn{k`zt3dz~l#(oaJ;AcxVmnXj}kgevL_rd7O zV9n|m@pUgbvFDj`d?xvCt3k;DUgdiUyQS6>5IEj zlZoNk{u}vfUkB!vc9A)KkSXJ0O>Oq_RnCHsKzGrfZGQKPU%YuAT;31s=lLyTrT;PZ z)MuW@Qw!yM8ERD!g+9mdCm*ZgXfD+Uega9{gj_S!DK!9 z2iczszh-A2G;yo#ZUOkKxYnWjM&ss{bFitq;T~h^GtX_Q(d>`%UC_(4FQOx7<$5L$ zxrXI>mgl+ZM$ey^Y*1uq*7zf9$c*{}@k>a=tn9zPgXSP3c*?+%t`? zHDB@d$@wPeb|9CTZ|*I--x}}XUTyQv{HJoA(N8=3GX2;p-{wC|?mui^f_L3ur|7Vq z_sh?=U-ZeuPx}V+i?ASjU!tGdyj)+Nv!1!e<~lyMmXVuzuQ;}DoqFozZt8wM!#jYz zjR(2tl;4Bsvt4xA&$Tw^aotwv3i?-|)~Y-+J!yRF32${{JDbO2Y;HE_=l7xLCvR*_ z$x(jGazkmWkeTE-i|4}yoXnc26Jc+BE|GY;3-)x_SF2_#ha;pA=_;Np9%D8!qe#hQX zV7%7OeM)@Zt0sXsXxo9Vxa&3EEi)6xF)?uH$;mjJn{R)JflR9CXUwz1_wtyF8V zn|Z7WuLU`2Gq>A8EaT_X-HVLtL#>@N$*JED{j@VS^#^wB;AgzkYji)~H-lkDuuMP5xV!kA%14|C8;+pY=-Y?3aGl!<-X4Y<`ITZg?$p^nOh5BxB+kZAnI*m-;^qy?W4(UeTAAihjN+ ztJh%bb8P$z{>@J4e+FLpw=l%pvYT(o^4r@zAN@8y)Oa~hZ+nqWwE0&`DVuLbMCx^T?|Y{yn}z|b#ru3VANy;1ImnrZZt z=n{PHKg=cHLzeTNtI#LlYW~F*pOu(%9vC0Zk|-bfyZf2*(fk%pJ&AV$h&gAj*$;V6 z>0dmN!_VI{_P;?70c$!w7hE65)+X<7^7|F}=oNct^Kblj4L174CzMS1#r2YKhdv|UmAaB{CUysU>A_5Vsm1znp;)Xci?+)9lQ$c(dy3-f8xvE zM~yR=4UDl@o`2ZNGjaa_o5rU82iL>9jm;)cHs32$$^B+z<}v=dLBF*R`3+q94%z1!(8JMtM)hZZj9uciwk* zN3xY%h_M%2&L?tK(QIq%d3>DCubk9#jGNQcy>#w}tT(yropNr!xc)}wsdkDCe(p)D zx8Ylh)YWK_!G87D!ESt1+iO1v=2H4c7_)ElY|(y^t>+B-u@n7iYdp3F#+wh(*_y2N8vlp9ITran$X|%J&Cm~xjZx5HF#%$Ye#>}U@vxCF_rh|@}2h><2Cp< z_q>1TUJa{}=VvU=w7b-te(F8A8dupKJ zC)dkn9`n44?ltJubiT#b4zLR(j>PaXko(*dm)cwkeX0Jc{L`#u%CYE5=4cKkfd@LqGRi`8$E`Ui1%i=Oyz7zLJwS>zik1?mau5eU{(V z{H8SGEx(V8qGPMz;Et5<1f#i@t5)N^KK&V4?1g+v)u7T^w}@>*mTC$aV#h0x-6FZIy%|^ z*09UkovTfEbgBMbY)*2Jcw>LsJjXv7^qQ5?>-k$AjjjK|ljPomTCeDqJkHg=fbR3j ze$&{e*nT4)hr=he&l+NAe~A8w%yP!eKQh^)k;`*Jv&!Hj-_vwofO7_!=r_jlTtD;o zLenqc^LG66;7t5E_(y76hrAEye~G3($(8eKc^q$HJo6QAeCC`Xw)6K$GvB@DoV8cO zB_8d>)ZRpwpZ?>hHP8LSc$uMH#;(*BZ)7_2%RNTgMTV{D#9k|}4V$so{f(Vd(ZA!1 zKm4+WWHSG1C0KJ9uTDo-$A1ddj*Xg5d6qGsJlB-?e}Uq4x1h(MYgiLCIQ>HHgXsq9 zKkpo7_D*Z=IkV31O?jutPtL=~9|iR?y%4+z&z$ocRG%U4=aJtQz6R#ryxsVgbc6JSocN3Z9g)98a_F2`rD?FX6M_r!mb=GNYvVsf&*1wU)LQp))NcpxfOpcr53i-GwnpdDzm43c+UMi5 zo%71-9yT*4@uXeeUy(^a_kZO#_UmZYUmZl}Y55)XcY@jU9zppjGKZk@o_m?`Jan@j z=JxdYz(2)c?W!FhHfD=!J@OZbYaw!X$?alfE*;vPd}UAO-EXIM`(x>Bp#4H^>zA{Y z)LZ%Xo=iCh`6ii*;9|Ih?dQXMumH$)YtN2f%g1G6Ukc^3I!60w^i)(X!|$In$c&QL zO^j{G{(jnW6#KUuAyHONa5u*Xp8Paf(5m|I|l`M~sQ7#B_3AtRn*i_J#87CSGQj4g}GTd^OxkDJ46 zkn5Ri{aABI?}mJa!RH(uAqtws60r$1Ix-J^8mGw0zsKd!Q` z_;1#N*Xhg0vvW}T;>ou~$xrhgdLJ2db6%cUXL#K)^wn?kFqlj8Cs;`>yc>Nbx-0%h z=wo8JPAu}7Yx(HCsQHYqG=`3>`N&#_UtNltcSk1QIObY4z8-FX?;F33?M*;lbI;Pf zna(fK`^5M^?I+;B;yhR1evfR<5N6H~a=p&Ay1ZxHjgMcGI~w*8!$Is=&u&Tja@Dg@ zY@I{@_mKHrjc-0V+wT4|_{)4F7k||+hIZme4$ArM?%I3uyP3Xtn?2y2`mt#qA9 z$%gNKd;O2Y-Jp)E&B@u5Gxsl*xXQcIby4%m`?>ZEbOG{TK;^W&t0mW5W={JJarTR_ zu?^m-=%?UE>cU!7Vysq!Q@}jyw*k5F#`I>>UlZ15o6dCBYAaYpds#B_J))ocv+Ad8 zs`(lD?$3ix?$gTIlXWZicWjNUYxvXFAI9&DzvIfIG;E zqmI0FN;@`6Upr@M=~wd5Sc}FU=vLR?64Xd7ANAP-e=Hx7Dg23i#->+*71_CwtUTo3 zXPCLqh~4RxCi>!RUQd6aK|bGK^xp+Jsnzy4?Z6(+^Vs-9=m+74gMOJW|M6GbNA-#D zIXP_DwRSldZEu#Z$N4xyTRfw^QEOR8=X^4e-&gxMi2eznR+~lm_%Yn1{~7wx-5vIX zzlgyamTQO{=6N%J$5+1L-%LEO#M>6EN8aJ&y>Ont^4!%~&pdZc&4!(fu{}P9kHk-= z#BehDVL%&sY_jLl4?kn;@v$=fod@0NRi0&!t&I1t2J2SN@zy|3fy>Rue5Y4s=Y_Bk zTV$JEjK9si%sJ-^M(!2n(XwX_GjTMhvvUrdg(t?GP374? z_a@V?G9JFV3BNf{Z0aQUFw?6IvgI0J-P>(I?$S>?HcLM>XOC1D!k5Hw4L|CqJs$m~ z*#5=Vh|Q(Y%{geLp*|sLlvv}=6e0~)6 zhri=331S&9MmBzyHNFL(r$O@0X0B7CcY)lFAH@GAo;lR!U(WH~qP>>!Z=ma#!(s3V zvJazT?&Uex&Rpwzd8pRLdlXd*c?TH(xlWYp#p-N)$JnLl9elnPm5WB6ikvv7*N}@P z@LsRICOg+^AB(S_=ZqrHX3@ErFDUQSF41PU`W^fc{y8(WD}9hQ3x zHC66UPGrM=%HJQ1tW#^f^P8F9%j}JIaqZ{fZ)BWI-qm;F?#BAbPv#{@PoG(fx!I4c z4UK(L`?u&3`d`z2fc`_;7xCTdn^&2i@tJ;PMsFJWxwq~1>eJb6m{u>{4TInK zjQ?I<^POShDEE1CU(XA-z;h>UW6i7BemD6APwNbE zvYC_pGd@f1UL!YhUcVRbdh#m{wn{Bb?B#4M_GZq{`KV!RmV{tE; z1^g86(&$p`6>l)jJExC?t`98{6v$t_| zoZs_?+2&~dOYz0QTs2CqVdR;7dcDEc_(=3S{P!aw+_8O(7$`IU&g*U z*l&zyu99_Bn^miEA85@6&uldNV24Zf+Smd&f`1!uG z=&JF^reD6Bd_CXmi|x&H!c)811F7HUE^)sFe*>5`^z+SS`Wc^*i_Y|h{J)UQF7R$V z`5&z@*h`Ifj~JWOd*u7s`tur>vsSF?n8 z*X*Qb{);c((Sc$ba4W78Xviw|?} z-_G_^6ML~kzdWDODbHwMFtx7-s|dk!{h{N_6C!@;#6{oI4i_>b?rzw5uoKDp_Q^;Zmpxb`^9V{pdcV&u;nmUhKKlZ~rg-ZTQ~|-x_2;mGj(9`TvO+7Zex0+^ePr zQ+L(lptkER^mjxzhs<@do-_UMGnVS4?$OgPYks)#7wP{4#9Y&@`A)rLtN9v+K z3XX=o#k`PaI^z z&)I6uQlCCwmE(LLJgv^B)pR*C_yGDv^SznQ{IDowUBpnGfp;tX8vkedmkj-p^%>p3 z)|7bFQ~xOq ztI*jFULdv)qYD|g*42XAtD^eNn&_NiZdv!{W!iY7y+AGJ{ypDnju+=|YyP$rqdM%) zfy0cw+*l{BS!CpS%zphQde*kR8r@(2WMHGzlJ$%4R-MInu7}BQYPo&|efD$R&9@l2 zN6q&ZNk&m)BtVOZ66}fB4i81%IwfWaCftAG& zyKMD4;;F-aC-gb=f2Mtr_B=2>%yFcaM!%Hj`6_kUtA=V>n{qSFaw%QXBc(+je0%ojvpF{zu7JBe&HXj9+E!@9bIQUca}N z)#3QozTv0YMt?In9*z^MwMc&?f6*VS&uV@6)G!`?>UHMdR!hB(<-L9ts%Goe2D$jJ zHTyRY{bF0Q*nhD`@+QuDHv0X6)(439rP`0cquT4izU=;v9roHEYyTeJ58noJE9a}b zli$-k|1GXF$t?zawBl~FerllNr!l`)jQxJ(E=ARH&Uef6;T7m#*!T)uZvJd`H;cBI0V$6hzg*5Yio-tsIypPl;1HG8zKxqbwlrN0Q7PqX_Yu*T)xf$`BgaL=o4U_``gLV@6KX-Lp~QJw+ig7{aldWGIkvPK49Hv?lDH{ ztkcgoSY6iUKzih&)9p3*i?5M+#b5b*K6%V{b-Dk4wy)^r_aOG`WAI)!#NC)nv-Hp( z%gyxGbXNv3Mn2c=T)#(Ty1P*|-yVvprJ3t`uJPfw7op-DeS!Y6`j2ZT7jlyG`NCIc zk&RsWw~geXKY;Cb%Io{#CGY`b`{UC|Oo=7mJB~V-hAI6I(%Ifzv^xwjw5!{}MDjoFBw_-o=<&iYr--CaySL)BLQAe%eGT)4p) zeq=@$YNwX>M6F%>Kkb@c*70clzmdC4e&sf6H!}C~{oKjgTi~5yF0N~_UEVXWpXcMq zw`}Lz!hExr`{45K;7K&=@}5Z?D-H6aTaEpky?ao;`y=7Ka`q$iP-AECcMf_csL%Fy z^yMHn^ZqUN%C*Ye;=kP$|9ZL)PW-5c?mMs}J4=EX(w4GPAK~TssrxR>rK8^SY}s9d zu8WE@c}xC^eR(SRdWv3Mm2>M{OY@yZWgpewwieq1AMIZMzul^b>S1F$k^2UEFnaAE z`}CQ}Qub&|No*cwpcL@3h@>j8It-G}c@p2uPv;J!RlTdy;IWPY{ z>~Y4zGZucm0oW@u-xt>MRNmj4d-?aomO#xVaZcNZ<=Vajx-*-u6Xkl3pYiTh6BzGa z&5pU$cp2~2T;8YV>?Y?n%DdX|;L}sl?mAj{RSeWv?5tx1IhK#@B{* zKwZ^xk+YljMP$U;|54kVTd}q8(ti!`J+sGSC-%nk;_nW>0CUK_MeaXJ?Dz1s8oUFR z0=3Zo8(nqqH8S_C#ps*pgmSxqqwYn8!4K6Th(+Te-I9dzEs&VjeT` zdZx{l3$u$!}+%p>wSzv=%1boxKRBM`lt_@mn2Psd!# zy3H0p`St=(x9uJ97@qyo<3%R?@^=o}S?|(kBkur5U&K3L(9QYJXnFjd1{-OQs4Xw~`^20DHH))h4Z5qfe>CW{zaI3*a@$&qr|)yc)X7J_^^3i+wXe~fOXN(V zwwG#kH@=OWHR-m~|NTT}|4Bc3)@i)9xYS_ke*7NP9*y73yBBZbFaE_kQ{UxxdUt*P z^Lt&c?RTQ$%ripy7ROvNr+hQlY-*g}mc7Ii+sQ}tOMdXXdB{FR*SgG{_cnZ#ch_hu zXYK3YzsAzn4ln)6+SYv4>OQ>udwcn}T>351Pa8WG&W6+BJigRoC!g_I{{4ci>7!y1 zQ~tiKoDeZ+@6+3Sm ze8*nuC)b$NRqCgH0lX3(X3x6j{4~$*dC!zHkNifL+^}1oe^wi8=lM6e>fT{|5m;2) z{>%H4Toap(fqwHOByVDAYkt11y*;Y-8uI1-?j!W~0qZq23pQZu`QrH@TXd=sOu;nl z3m>D~fVq_SGw~CD4-!2aK2LWQbk2ltJpA~NOo?d{Pb-I`dm($#I#f{eQ_gYZFz=hFh(24z zX6$4xE2FL&KE!BT{9yQmvE#+bR_w*r=;h?)bmn<1_o#U$3$J+*sKGotH|xV*@IkU` z4gT^@K0f0w&#NOcqql&X7>Oz0gLm@M?fneD_#`tocO*SOd(F-`JN`F+bX@6*q_Y9Rl2MRHiKFQ29VCAiSoHvAlA{miNVG^$>!9bh(y zz1;xjBlkIR@SD2KIeO0UbEc8=^qk+9dlGBh*@OK)@OJnJe{W@HW4QDgdrv=)i6Q=T z-c#{CBUjEl{zLcQ>?UVyj~uxo1gyzZT!Us2I!jR_;c>8GPjLOvb6HyV<=Ku7U5E?|85^V<+p~{Ma~t zI|tQIJ2jGibVr{>zi6(npv!Li131l?y;07Gk40Am>s5)VQMWVaf~9Yt)_*syK4;z= zr!G^Ep!Ty7+(jVY~;Q1=pgMo@lJ>R_;-!Ub+-N${?6KRHI~oL9Lt%`@%nSM zA3&Ej?%I?%5^s6`b?DH~9MaEteI5Ee{dM?CoR868W0+sQAFh(~>xc2epQHVG@{6;d zb=ncs^vrjF)mQM%H9qo=DCajhi^`cz`S%x|Wh?(ic+RRu@|}6)-+S&C)mE3?eA>J4 zBPZpa^~HnFvGq?bl9S|P#!tzw_(y+&2SE-p|MGirHOg;(FEYQZUA`5`{JK-&n_w>a zdyewGA75i@knjB>+pWhQ-Ll@B$%%T%nR>Zq{bBH#yvJXoU%p>4r}F;&2DV-@iFtqR z#D50*YDk{dRnCrb4IJ&j?ndw__~c-}wE4=}dVN21e7qTN84&-dftGKz-OXkDXi!_J zo&NpCo;S#Z-|r6AX7q7501jkN-L|WP*z;SM_olgqj?{m7f4Y)!>(@q3-pljcThO00?e;@y) z=#BdJN^NfK66pExLwE%2nfhaJ0?2FLXVz-0z6mmqtfAcG_h2SJ)AmvKTzC=8%l?vN z*Mkkp5)8bG|Xj9x3%U(w@{)Y9+bJZ*G2X zbB2>=ywTSNd(%tdzXsN3>nFzePP_cg%}L}BpXf~Fqn~(UBmT$7kiQ2WBKHgQ_r|vc zduB8b+$?tUZy(S$hxEtu4P)t#pAuJ1{@rLp|K6&q@JI1sPSwir0kAKtKN+(g<+tu; z@}JZH*OlIE%0aYX>H0i z!u6!J=NkK_-1FNb?I{z!Iu5Vjm+o=seXte$7XM(plLy)MRJkz!JUfroP5%9t%yoRE z`Pw6SKij{9Z?yEq9)I!Evek>F`6<4*@*Pv&o8~+_->+v)bFQ5@X7*z4`SSO0nN#L7 zz1v_b_m(sEqC2{UoSfu4`SB0njqnEGE6=)J?0gb^V6Yckxu=-1mwClr>}F5rdYYUi zmh7G09P>>>`8VLF$sJ)l`~|>VnxpudAO5B<&!cVO?I0KRY*1V6M)cOw-bwqi$(R^M zUk7s>U5&5ZtMBe3aOKb+ktu&Oqi%A~QY{OI!r}aGgNm!%o4yV;&(h~BWBENQ=iV2i z8;Fms`uo}!p*Na?80!YqU5(e>B#uwO8E~e){aNncUxYr-SbTj99)kVoe1*;1#We?A zQ(w$8`q7QO?r8W7p1AwW+dN}CKAyI}DEoZOygwW7#h$gAeh;}_w9~h?`S%h=yMghH zrQdC9KKHZz9I!6s?-MuFwod&kA%4?OTVBd|`twZ2R-%)AY=4$_TAS54`o*94R z2PgjcE#FtE{qYj`bnri$pb1e6TkJ0@q-K*F+0Su20F+XcRGUq(!jKtpk3#?zqUbB=svG$|q zlb-`>xjg%S3{AY|SDg;#(W=MlLtsDUxu)6|9)>@N#a?RUse3#B&qH6qulgvz*9Xz1 zm*3aQ+DE?n9sH5rw}%*VhLt$V^Nc*^xuso73_V+NKEBIX=Bb`qxgWEgbB(9z7W(X# z|9dI6=;q(6=aFQ3F`eG^~eY>%S*6L=%} z^U0#+_b~D+7<(_B_n`9I{~uL%9)Ddm{Q>;mGk%{EQc@|U36V6=Of*X&63vs85TcTy zrx8s;Nl6+_Nu-oC&vPGdr^)KOnlQucrir@5{e6)zR z*XqYN*+9q#A_1J1W>%X4)8lzoMM=G$EP{!Z~F{vAB= zPn>h@%C#}qs1e&Eu^x#}o(Y!vkKuDCba5H+XVz};uHXT&xD@Yxco5u4PX*2fe;Rm;&Ix~c-p%*u z$bO*wztAE2BiFl!fU)cve%+&O2e30ce3(9uNxeLi5|2Eis$UF}qhg!&G;KAx?8EY& zLDuD57qT|bdcV3@j=u+H&^JS)FLBO)CFT9#YFoT}!1|T<0dgKz?GLt7XK(Z+aP-8_ z7VQbPmL-2T`By8O<5_L%m1u)?j#bFqv25#p(I}V5irwPTT+6lN>Sl*vsiWf6w_!_eJ<#Sl`FLQ(h1( ztlhYk>+arz-AXRSk79SWcKwO{%;(t8e9qix_Yyn4=6fsoJ=3fY;Jp~IG3N8wSd5=X zPM>pckbAA^JEEia&>@E7)z~_o&Ww3t_YwH*+I9jT26Wah#CH!o3#Pl5o1?b@G0Ysw zc#Tg6r-D<+>ud84{#hd%@o$aY=yGr^xB~o=j;;CfZ}4d#E~EcWxjWe2 z8yJiJ7VUDi?E&(K#NNCtI@2C~(H~mskxyMY z_PQ;Aac#cE$93R8sPi|^e{^)ohQcpQ@d7d(U1Ame)dkpQ}5BPdEI15}m@Wo#4V`8U_w{gmPlJV|V;NMrt z?goo((NFKxuW9_J<2n+DT%*f#abs2;0*)lV9bISAk@4DFJ$Y~oed1T$2sT4IiLck; z*$3||G5IK-Tfs}g;&{Y6XPWhMU^!U+kD9IWTb+O55#PK&)WOa3l=q}FeK-$Xpxrno zKkD0+lOJ-h`z*cIgR<^_W8x26x#qSfu`x3$_c^)W$$m9_qj!RLD2qdWI~LsQTls$Z z+v(4^9Sxg{IeV$z1Rp@(+VC=ydg$*`e;TH%qBGaJ@_Y5G=p);AXb_M+v~{krTGEE~HuEI&Gv8~;bFcFJ>oGQ7j%V`;9~?cM zes{{981y@UZ-VfOfB$Xz`B{t6=r`(5!6$$-0Q)(o$TOlmr>;K2jxj1{7i4pGk>}at z#2`GzJ$>(|GA3^k%_ie?ymW$&(!N&JJ*@d`9^p`6dGFz7FK zRz$makd2PKKiA2Frk?mgSNZ)uo}8s;zZ?6-_w-3TlOM6!$eZSH^4o$-20h*7c&=vu ze6q$n_j8di{U)FHXv%(iU6}txKR>gUP1m)Y7v%gt=lJ>l`S^wUFHgoFC4c(RR(?w? zetDkRh+FwRy*@PN!)QLR5RfN%4mRr@+SBLvqODB_|1xK0W&`u3_?P$|4fL#IbH6?4yw3oH^VRZfIz6|dP z{y~PH)tz|OL$|h#$Q2shp^x-`e5CS@z}nl$iR@>3kv!`SwemljZv_o+10G5&hK|CSRWe z%jt4&a}q2+^1GKx|Ej~lk!1BTeHp(3ME}F+@}*vlzSZ%IWAeWxSMoplzB1^l$h7a) z|L@_uM)^JHXOX*=p5LMEp}aTv71&4nLt;a|If~4Ol%G&GHVuF4r|AFqAYZOYVv_e4 z;!D=l;?JsRTagpDyyH^7N6gm1eS^%`@o&MkW5-p7zb!iKSI=4R?`kN;a>etbXU!#3LZ zowI}do^aM)+MWaNfcM4hZ>!ySR1d*&K4+!b|AnWUho9#1cnu(@Vxv{>wg-oRzoUsy zbNe&;M{mWuGCBU{z03Z7wpP-PZ)R8Y``FT_Dt$A4V{sgRTK#3uCR#p}pb%ti93p0iOcV@p8Vr1AUnZ&pX-s(}X9ypHSC_LQ{_IR=z#^jBR8L zMzaBb!aMaVy6Ync8wK+<=eOlu13u-PtKMr;S1#vW7ts;>6FN`Z@Rops(K^wl3vfs1uuV{fn<(2XOq)ek=Fmot!NH2c;j? zNke=06*TeehGM$-3^O>eIK|Nh;4Gel>@C@ z=w7S+AaKaQ*U0mJb9^^wll%Qbu|vsHdfR?b96+t+z;@>~j zXVA$`=Um>$F6Axgq$BgM+DM$`buIS&x@0awH{Z+q1ea*H4%8oE?}KRXqn~WPMV$Rq z_G9C7!L{o9g4>i29(30FR~x@(Wpd&-eLtgFaiFDN4gYgrP~N9B?)}b)=a3W6MqX$A zO^%lJdvACj?ecW|d2k{-@}}FLT{+tAr|nZ9`S&)!&#XVA9R{Dq;ygC)^>Krq>HBAe zm!6UF9c_tcRUnqtVqkG){^x#oJez+n#1oKP<$Q|na;_z>tNX!U_<=urm0s+!KWX2B z=O%C?nla5;Y89XKE$3Bzz<8JY2y1ZrJTNcWPXm1#{|}$>$URTaH$yM&89(vpo~u7g zfu-r$b)uIaW4Tk#!}O`%5$uBZK6Lq4hh|Lboz$0^)Tiz2m2>#RV0lsgFO99tk<5>o zlLnus=kc|9P``&BK16Tf&$?rrBA@oO&9SqWwzK)mUh=7G^k)M=f1m#Ad$Bd?U%9Um zzs#xLd`d26ovrsAh%#uhs?H`=`Or!0~*& zoxbhS)P#r7ow64tY}aJgY4>=E$Qrr>lR3T>OpSUl4~Yz*Fe20me1w zOXJ8H*PJ2c8W_GjOUw7Ua{oI^x0+sChpylG9dCKBliuv98hMuInAx+H{nj7!^?Tq< z@-yh0!RqCl=&V71bSM7Z?*aZcV@L1Qey(xlJ7GtNk38x3P?y`y1$fEze4Wv!?m@Kq zmG4lN%Q+7k$*n&2jm`ACMA<9l`jX$fly6qNp4^q{I#*wV_h8uEi0tTH&&W4lM9(;h zS-xRZp3Uq_R(?fayF0iXT^!0g7z=5;5!|3J^ya>;+`pxMHMj@uTp+Ib?qbdl>QjL} z8|Z9}m6;j>5~A_*MS@bW{8rDc?%|)v(-(Z_VxM{Occ6{sR1@ zy8c!A(i-FTDt-R1`hkNF)j@+Fd0vt=H2%b|Is32pa}iyirt464j9c>=I(|)l1H7+L zz76e@LtDOs)BOW|S^WD9yg4t;cX7%)&?m$Eo1>rZ@ulkLgA0K^kLjQJJ9sx8`c%#v z?$!1HxL><|lmw9|n8q^AmWC*O=by ziE=+a`k}UrgFMVWDE0Bb!GF-mPWKHRz2*6}oXb5*`&{*`0l(y@w*I$6dv!h9Kgr&p z&gbq`{P`8&U-m0={?~JD^=;_-IM@pqlbp|vE@P)tn4Ox9|m&N}%vd6=RsvGx~p0a+f z1%DOrWBNW*^TUC+I|F^WL4Vef`geo=jBoC{Grk$W>3w+Wxt{0zxP6ZD{P;hCM;Duw z;W4PRt)cA$;{O-A_hsv|prt4I^D=GLgRK3L%RVUY0p=Rn+@jo*n-3(9UJW*; zJ9!@~`^oZ5dq?v893QXk-Q;_~-t>PCqqEzPUH#7-ZcbAE_Qdyf(fFSC6{?@0$%pvZ z%ZKWG`sHzlC-u?a={*{zqdsOLPjA}G`wsNhTaa54-kFV$gUo01sx_Z`e&+gJrGG1f zg~%G8@gvG|BJ1hsZ16j@D*P2YRkTdpp|N>SCVrh<sr>c?m)Wk2Y)8NH&__`Bj{Txvy=UL+25_MPQFoZ&Ln>Y{Pe(= z_=h+9kMjG6#Aa)dxYCt#@0_jYx)SI|8MLwTGgA4xO$%^X{x~)q-TK z0n_`MI{75_^%7*i4eM9EC|Dl6eo{8hSrhYre)T&1eHV<@tukp3?{Z*Yv@P*13_h+b zrj z-EwLAjzsoq+1rJu5sUsoe%u2d!XI0U0>0PAHGLYbudH9uQJ)X^-K>HCaBv^r&8N)! z=1=%9MEkk=tMNUpEqyRnDVP1^>*$NlgC_du&3Kpoy#cmHl$(Kd;kEGG3iH3=S7MrY zmiR45_hg>8cw0H&ihHXsS>IExFT-O^96d_UztF{_ec4bCE_Hn6K2$t%FPi(!nQwvF zc;o*8`gADx4EPW@jIND=e984L*S+*V>t9*>^uIreja}*5jg2$$Bv!wM*Bs=sU&vme zyMXLGu>NU*An^T~ZfoAI2r{h+T~Ra^AY zn_Nsew4P7dvy_;zpSa~-s#!*xSeN&mGS2s?|5W{b{Q2Y{pSfD*=Ly>HB72MakHC+? z?%+J|6EZu)?-*!#Z*X)QpXsVDqVp;6S#AF%Pj}86^PHwT7meMVhvb|z=au2_j+n$p zT+)ZwFZaOVky~lcUNL7;<+&D_{C=hR1>UF0-a2Vp<5}$=A^SEw9|dCE{|#&f9s-XJ z@yZ^p#814kCbZwtwkaK}tK%K>Cu>@_lK!2lz72fZKrj4X*Ct={{>-!Am1@zedBAhE z|CNtDp5G{c4Uq4|wimBbcJ1kRVRJt9Qzm@c$Kuc|4ljtd1YHNw^BR0R0={;i;;%S0 z55mTx`j0+sk1l_5k3JH!v0NSi>=kr zj6=@o@|?Tf1pefJqqjBAsn6n1zL}PNLf*a39xl&Pr|s2!%HO1`9{9^X!nl>^4vP-_ z;f>Dd3xDLJC-v$4$lS=8+DJa;{Igp?`*ORa5DOkbv5_rnIF?VdGf3K z5TL6Qt2|#S|BJb?IvwrtgM8un;e=-{JmS$Ut?gj`U8(#!khsi0)EhAmE%lU}BZqpv zuQvKAp7mh;%KdTs`$4w!fz0S`W5o9{zWzjTuJ%XN-_Pz6@UlSejFYRU3?9b+Zg|>_oc6&K-(7J8=p6{7yro2@%Q7C_V^!t>diWAUN_jz zzCL^UobzR`n{&W&-X}(5@rs`Cr`)^|51Xl%ajVevwVSP;92&!G!GEA9J+kK52C&Sj6jsPXtTzQ1Xo1=hl^50zXidl`%hz6_6C?u=>6|CasMT2O`m zy#sH1lJa`(vDMO(@8!4qsLR2! zE*OvOKdK+2FAG*5>gCMHdYF2-w`8v(mo+5z%J~F)u{(MZ;OFS);FsVZ;4ys0YAh}@ zJAs42L2Pb6sVlepfm_5Wc9rvvb+gw{4sYsdFZ!eVA$DI)UhdV0(RDMpTmA3qhXS!H z_w?@`%5#2SfL^{Sb`(0f@k#V90N+dgIC}Y4-JxxM_Fp>G>leZwK-0JB^UUmVnz`sQ z#^v`IJJWL{9e)A$Pxu~~$kSEh&6tm_0Ex@BLp<`Vv{_DFZgg)ax4g1k?~GZ_5$D8_ zz0s3+e}fJ>cFOndjve^RbJP`-jd95*^C8d3#_IKE;BEZc^qG2VjJxaTv$iy!rt|mk zXXso<8E^K<{TAdhU&;5sLl=*fr?Popq2z`*He%lDNAf9WirE*>qA&IS{R1uajBm!W zyhp!>GTVLhzY|RkWq;X?mCpm_=Qw`pYn~0{ecG%wGxRlLll3O&gSi(e^0Np3I!qpt$?#~Z<`!cWn28-1s!zku!M!7G8+X4weCYsc#|wIkHOud0u`WmA*f!ACC`m)v0Xr zwKg{8S@S>Xp271l{-49?zd4o|{J-2!ZhvctMPf2Dd+0;6G2VT_f$C4N!=Ky}&C;Ip zf^t^yFLEy$?8bgM$9+=WxL1GBmYi6d4l&C$IOi7qTk%~1u0m(8J4F9u%Q{kDto>d3 zvx)Lgz@^{;^{wf9lQMk`_G%q?`=Olg5{-_+vpZc^^56KjCxa95B_F;HzY(lE$ni~iFGT*fQ$Qcru@@_cW+9KT-$mIw6YeVOqFz#Pau;biN&=RzLgX!q325>Su$W4D>wrEBd4RV}RT!j|=Yn&F3v{Ik&g`Rr55d3+Vzl~hWeyQw}7H3;-P4(uUXx9GP zV=wyXNxk1jKa6d^E!b{ie_|stY0I@c*NA-IG0!4Pom}{H{m7bE_MmIQ;+VCvmD}xX zas4tl2G6m;xIX*YNX}bF?-#Fkg0}%al<(30Wg_#d0q2^Y>ub3l?@EWhj<2SFCGE=s zc{`$O{0cm8R2KiyE?_q?c?VhfnK|A*#kUv09|DV`(J?*~$cN}FW3#c?ECrSZFT=-H z(MMOtKlOI6ftGsqUfGw_@;Upjau&75z?1RKIa~K0^;OxB+u`qa8u;^lw{rdETRGP= zmlB^m2Mb@?$J>J)$&k{l<>uwbgd>Js7-Q{eVyK~NJH`UK&hI+0U6}h~BRNke&5C1pRA7=|BzGeOF$(YaO z{zL4UANA|u)%Tq5^b0E+*X*zJTx9f7un*l8-}EK*a{r4~`ex0@HLl89@iZN8hQ9~0 zUS#aZ<$kf;H~t9?fAxF#Nq~Q>5B&+?IKF1>Iv?O4{af2-;0wXUWUgapZso^dv8z^w zzoI@H90(2oe@DBX9`m4^1skvO{QD2;`k4LhbbZU(*1u4ld|Bt@UFxH^!eW#)us=47%?#nAVQIW6i#PjW;E%)$^xK_q-`d-o0PP;k2_tLW} z_z3=&0si!t>d$QatAjg$+=w3)zCxSSN6EPny4=tHY4nu(?(98>Uh=7@99r7T^D;h9 z&k_2|(H3XRIL<7}_NDm$3hu%4pFzIZU?gVQ;tbsLq%}elu^gXiKUnU-@ z7rOfBr9do4O9HtydKvg5`)>qtD!G@lhF1TpQ^+kpsn5s8m%tf7zp^LIezcqi96F)> zi>_Vpi(7w^va!s%T=Su?U^!n|Lz+JWGP&N5)9t z#ec{%yv@6nUk}y+_;XE}UKes!nD?oouf2eM^|GJ3oe%nweMhc^k;}ISaxDpe^Z9`u z-*WyIebH5}HLI~Nho&|<_451bd+Cwi`F(ZSOUSMAoZ|p?w^TM(%}VrqR{iD5`kQB| z{VV88?0*2x27C=);a_>e|F=O$=y?uN{u}X9<;C#LmQ&_>nRD_y`?lVggtu8ySsqn; zv9&B%Lj7^{|Dh!Y=0>hBBXKBuV|^|AV=~=R&*Fb_usOAt>ryGxTZvuKPj_UZe|!}9 zBKR^m8tuj8uhp0BVY;)w&b~V5pFN*P3#z|#uvfmnca~VvU4H?u{^b0yKJgiz+((xC z$+v4?8{lo(nBGrzf5Ll*zFo?O7-a3sbH2hm8-9znrzZRh@KHVYn3dSpe;Ji?n(B14 z1JS+(9tPH}ti5>;ZM?90#_Z04R$s-&gM*!{_j&$T*4%duc1Ii2$;N2Y!LJd0qelRp zGu!av4dS3rdG{bb_MZVC2Ok3a4SeAr-#_r@x%RW)8Hk?J{*HmCzlQw}gOB1fAG)p4 z<9Gb0qr7Wn3~S|nXR`dsdqks0$*iXw|JMcPRGwds*={;md!C^dTX@FCFnnnbJ!^D- z-JoZ@nYNdyUrL8-P~Hp8x5D!bs#;&$uiy>H-KKm7{Tpguj8DYp_`#>dvyunp`u9EU z+Yfr<+jLyxf4SzyXX8-q1cK973Ukg@zDN5$`mU#6-^Ztdlkxmj+xz(?4&@o;0eo2= z-w*KJ4F8l)x!vxeye}~B**j-HT%JFFf2g->OlS*`OT5no*J>lv+zl@d-vjPL=U;t3 z+Sln=UHKQv4{6(*{_V-{&o6zi-lR>A=lN>6mwh!K*~|6i|NZ9qpJ>~m9R|cA&)(WE zlQ|pwW74Wqc^CLZIu3@#w|t+E z-_N#H_UunH~PDK@h|>NEE3!17_@c4I)L8ZxRqzd8Mj^euqwC^T+A1; zBe|4srHt;-Kl7?Q_mYdnPyV$xfcShg-TIS$)VssRq5gojW5MMBE$=9f=^6iNXm4-A zvod%icoQCD+1|_ty-{OIt`Ss#p5)`;o4F?vFMTRfLdbi^qg}3 zCD8fa(cgauCYR^XrB3Jg^tFSE^^?`#i|=dN=biAH zyQxPmwEAcG^sy7qat|P{rg~!|`@5{)Ih!o+2jeaI_g22G!^bz{KTi8OgWi1asQn#X z&j-(AUp`jL%0c6LOO?RomX`#}4J}v-AI3`7M35 z3|JcIL--2+3*ooXJu}E;UCi^n(azvfK4*+(D=!OP1;l3j6rCI6lS`f48gDVsN4G0q z2E?L!37yvi^S1mRRort4!A`Na zD7&XVV>h(a^WJ2AIeYxfZ;D1og80gxc0>5D^z5sz>!`1$ev&%hD}Hw8tIMw@W24`# zc#P%;|D*E|w3jQt7SEf3d}uy_=gZ{uCD(@;zUKc}`k%pK&^_?CF+NpBp^q8J(kF z)1^=SQFt~0KLBDJf8*Eq?R4`aK4ssR_cnU{%R2%sRlWZ9uK^c;9gN`{_+_3?zt@@f z3i?&aiB11}0t?gmE$~V@k5OMu+joIEFj@otDZVY)Cs)45_oj)j#-rnZiHGv|WdnV5 zD!FTv*{$_|{2^doq}(1h)Uy|#?#uH(NO>mL{h6=tLH`UpV>VBRE4uj6)!LSa)4>Jl z`sl#d8H?;Ib1qRo5B~;q$-C^)%X<#y%Co<1mG1+Uz5gFzb2od}>2)D{?+x%+p#XEy8j%7XB1~&fv)pS1wC+3giUt!>lT<#y99lQKq zv<>g~VZ7zO`ff5}+uwn94^U6J*>R|su{4GmzuKG|uLE0?>OJw$-@FXJeDBQDtXI`p z>St>gm)MUVGu^-&|0C0W0O(Wd?P>TEKQU^TriXvIUX=gzFka>U!Z`NwKI4<;0Ug^# z<{bL=2M2)J-~{j_czWQS6`FX&pW;VD-ei5UYh`htHLtRU}wCOn&`>`j(H zJ7nN5>jD3AU({N!%GtE}mbhh%%DS)u5B(7G51cKZ;&?mip9A6?>_N&bQ=U z-mC4`g4Y*^`(W|PH!Sk~i`&6lGt7Ej*6JrKt30}{Z`PdrU?3>%!bnvO(1s|X4kCVw5{%yjO z_HUv;0&b!IRQPaUZsa$S<@bzY7y2AOj~d$hy9b`cuS&kLQR_qQPjaR(Jx_?Oa@LNX z=hx*~_-FBo&CKV3a-JjCe;(>(ZB1O)L6bM5AJZ?!?H}>I4)8x`_|cm);oOhZzf^xN zx-lvG4;u6~`kQl(yf@O^k0$2jtlYfKxk$A+kQaIHKI7Cc3O@udj{g!m&G+nw^Lx7N ziOYEqzFb@C?X?@%oY(c2iMs5 z6QAkqUoi3Ot@?5fp554yZ#hfM+)llDA)tHoJa~b@R_0DwZ<60vf@{gmjdr9yPxQyv z*cfH3t_J50_8Q~Yh)2%Ps}7B9?!$8qUw%*UZ92X?@Qlx3Z+WsuX#cbFYo4)Jktxp) zzQl$;j*ix^7JeBx9lSzau2$CEIs1?F#?wLc&I!iit}Okd0UP|^EWAitW!@$sP& zr)FUwZsqqMKY;mIiAn!;Ix^SD+=63JXi4NpLmQx z=1t~Ho;wyAe{%nw_btkr@ELmd8rt&gF*3PFAO8gXIB)`e?+0fCwDw29*q8H4<<7YG zkFb3g+5!5y9v!cQ|G^i1%siWg{_MRmzUlhdh)J0nXw&y3TCt0+=2ZO4z^_&R ztnx+T{Ym&@v{%vlpz^)sFNEb!hdy%}pR<;{9c-e!6<%@azcA>Dj$Z6WYlAmT=-Tt{ zdw9~Gem3jUcMRbF_-TE)0o;ggytDVpJ#qa!{PL{$$5wode>wlJ#&BfBuKd1UxmWJR zpxld|3!g*gHoR!f=7Zh*e?-T(#4#~Qz5cFt@tnq^qr0orC;cklS@(1gJ)AZHlR=5<@v~% z{XAzY&)f8&TbP{Kx7#V7NluP7VqeZ2c0zwQ`uAYE(mv<=P>HvkE9=xH_!nbmSF~#e zp77`S=lE9ebMPBF-Z$vWv#IV6+QldLhTYjP$om30yUICL^Ck70)lUZx;XMY=KH3t$ z*=RSw`vZA4Lr4F5Ainv3+Wh9aH~#s(b@rpJIM2Brh{fn2fL?ze{hfG?PxSO++Aa>3 zU|(*vd$4;J_z^Isc|Wk+d-7p=|JiOz5B>cS?1m?6g7{}I-9E+sI_kzI_k1%Q8ox^p zZ$^fV#<-W~kB`E92}Evsztp~kt>neB_#a1?Ysvp|MoNCXG~FLV6WelML{ILGrq3Ot zzx}y(_CoK@fM2C9PVI6qeYrkmua@VHxnAXLGiRJR-^{r{o4EXzt#i=Cul+qd|G=Mn zw>(>zN!*NSw-+7z!Jk39oPN2J??g3nr+*P&p9AIrVwrWS;#>7AJYtvc=I1^=>tb2I zHlEP&XARBzITD{rpK7t}J`cn`*NFO>fnLs+-iF4%tm`v#DK9k0<^9o4o@Cu@uGD6I zsr9w&2lX@glJl#c&;3^cpQ~>S_34>?x$j>JOvMg{-aFqv>&WFAl{Gc%T==tY)L$6nbHAJQEMuGd-JG}0@G0f&XJ_shbTnd} zHF89Eo`3Xb13n~9xyQ|3t^EEg#k`IL`v|{i_>hLeMiBD~8N5-l_8_T2e{dV-6vDJL7#h`m1*bTgWu-Si^t|tMW zvVN=pPsTgnH_o~^z7ZJjdS5z!4aoFs!(T$Xov!1+@n~{k%-{L|V7}A`;o(!su@m)A z+|#ez=j3c9*Wa?f8MCrZ$(QN*M9Fu)Hp>99&s<2JMqk#V=#0MPbJnA*MRV4x(A1~- zUFP6d)i)pFGyWZ&3)8a)T=P?oWxv~Q4XlOr26P##l`C3%|I=ebt*H*GH?b3YK@=0G$tm|1Gjk$ph+DBXJMC*e6lc|$V#I%^HIi@+uP zpr`EXR)UQ~joz*g;^RYftO(yUwB>ho*$+lX*+Yt1@+`TZcM6hk`F&7Xum21$hyO|R zFT!#==PRSN*$|WI{&0FWI?eIShiMK+X7n?>YYsNb`t@fEujrQ1>>QB9txfXk6 zzi6Dxe(}Tbr@?;uZjR;tr{!yt^|_VTp(lBBlKSrGm#8m+iB?*J=~9 znfU)%wmuFYLgsID#Q(#zZw7xGd`A2Ius)UZ+<(yVD0mppqV#s4SC;R+zIFWQP5{Ox z_dBgTZpq}{F#FBqYyV#L6V+d)Z3p_rJZCcPj@tD-v^n*y(YC`sAGt;F9zpKI>aXL^ z3&qpi%zJ-XGy6}Gy_js`o;Z9^Idf%Sycy3`$Sw{y+J8UDPw(q9x61D$Z)e&g4g%js|b0a!n)+qC~1{w-{bYS7Y= zz51-}(2Z3q$ENrD^-1bi;FXivzX#`eb*@eMenaMN^CjiPdwu$D*Uop z!?*JO(^t@s1z!d9G-6ag1^->UJj*)<>1(?-pO%F2$ItjM>mXokni((|=P^I(Z}R*4 z!R9RCN&gdv^uIn({m5tHku#~B`-GPE@P}5(!_>zQ=-YAp7Pnkaa&J`TyKySN*Ti39 zOh@?3JUIXlKawAHa(6lSeP~yK|AO=J@h`tO&;C1mq3jE?UX^RFw(0dZ^;{!Uk4&!5 zxh|LX{rJ7A_P>F9z(aKDN0<3`3O;@9@8IAI@GT%_;kj8oIm-X=jbgJO+QVPkYw73E8R=MUnb>O4E4MpRr9yE&NT0a4+h2}&+&7=I5@%8ld8vuP9eSzlkcU4zu5xlN90Ss<891|G6(d(V<&OSZ?I=RIpD;wBbRz-ZRuA4 z`r7Y6PCUz;yF%MCeAiau_d#@VXyjeZjp(7H72DjOPVJKA?&j>aNe;5x?~1Nm_O|Un&wljTI;(Hd^&Oy}<@X|Q#`iy|}G(O1qtA5l);?4)gFKyN4JIe%*Ag9@*W{Uj_dMycXZ>>Y?ul^dZ--@;<`z*<@>mZ0^14y_JvVe{7}?#=lge#K_uy#zfOTVq(he|z>sUccLO!H=di(Rpv)vq^%*XbN@I1z2S75Aj<{5vRl>q-bu5Pls9-(^F&GZ)GlF?+zxB6Q2+{y=`hGw;NEyf*#HUOM+~`M=0&QLq8P)9r#c zIs9YzRqAY)=P`6ecXv6uaqi{qFL?mj3cPoXuh5UDlGt;KjA^sn_5BVele)--IR?%DWSE*K#lCU-hkI zcTwJwoOqYLZSF${E^EM&&*#ee1uVUEWOh!-YqC z=_}pYTc^LxF9-XzI3|YU(}6gSuhY+CCi;!(RKD2bYpG}Md{Zo!BWrD$IrSM`c{d~d zDeK*<_>;Uo8t5MRYSdzcd6%k7uj6%vYwZF@5kAF zjD5Oto=~3C-H3l7yorT;EALCOllhjpm^s%sVwLzA%UXW4uLW|X5$~Ma=6&X@k0m~P z;?Mj$c92h>BH!2Q>0kP(e~D-2ccG^)p5@!@#wawLE}*pdDN(GqX`WiLfv?(;i- zl=Fi5)mP!8F&Lkzyqdmjp?og9HQBS!emk`1Hv{dj(LP4@N%$0ity%!^z1^E1FTyKE z{c(Wq>?_(_uj$S_js853h`s6mH+AnB+H$X6?C%1vMDeb$9Iv&P`6yR&%^uy1{z6zB zb8ebvH95n~^OiRGlAIOS?jUeG-?Zl$csZ}xNBNAQUY?=eghyO+rZhcID*s2iA>GDn z*6!p#Pw#zr^da9{$vIiGINC4pEW!5|J@WB&)W7T{N`~%R@(lKKUr~88Z|61RYxgPGciFGNXg)jHFb^3CH z_TQ-=HIWamya<2fTe(>He=w9AF)7z{W8b|7JfdCv+NEJ*Tl_cDo&UjGf_KbLW#Z~RyKLc0a8F>chGzwyBsH4hBs&~ipq8OPk4LusJt9c%}JT80jjKwMXu?+sZCjI%g_8rObvwZ(Y9Hx7n>?5-t^)F@TG4QxpY_46r zGv?7#Sy%dx1M!Z0d#CnOl@sT*Cr{*R&cdg5bM{ug6?iV&YY)CeF3<3*o50V|k5&H# zzt@2IQTC{7YP%Qcb7k&zVwZI@xjntdDd*-l@@FgX5I#9q_Rf>}Qs&|J_%BAa+{pTo z`;e?1Id9JQ!^*u<>g<($@g;+e?2pTRi?%7>_#1Sb48%2OS-Gav>g8Nae{xoov!k31 zCvu6YJbBkL1{R z6`OZ~Y75*TScv%lWbo*iC)O!Cv|PK@u2dDFIY`&G>_8g~euc58jK`--jkstb&$B1j zMmNFys858Kg0*#IYVCPGoaZgM)`U0DT}E?jlN;F^cCUn&81zlg|GM|1$Cv#9UH$Ir zX#MO7?MZkozC0hSubjHMQ)udqIhOrq_RQss)x62`#`-Zdwx_@U%9&yLp6$Q2ZK+?& zuyddCF7Q2g&C}HT2hnx}_);(XTfXO7+RKyJ%DcML{cZMpId`1y4@cYTbK=Hc?i2d^ z@siIOWqBTKuIGLtb0z1e`F%<1IaiIpvlhjFH29M8ODF#9Ko_5K578Uj=qm4XvOCV4 zcmkH6nTORO;4p9mI1(HLP66mSU&}g~wJvL3*1P<-Y*{})gBCe+D%aDT(dFEt(O%9f zHb*y(jeH-Ufv;1Z1>cOmHeKfeV^O|c%=fy{&foI9Uwd=8@+|{@StsR5_$$2aKjANH z*O%$~S>f%Dp-23(H|g2V^Pa55Ilsw!gt>l?j9cne=BIkiR=c43q42*Zx|6eXMSqFY z=lHW6or#w*E%W}huyrA4>)meJ@T5KOqK)Xx+Et#*9L2_pU$=1K^L~6_0Lj zHpOD}Y4~b5v7Q%Qd~^QRo-%1WRhfJXhj)(LUFvt!Kh~Ch@}awd4)Mbg5F9!_FhMKk0wT$|I>A)T|~b& zWBWbucJy3_7f=0_iJY+AGQu=kIOZo zTn{pT#U|%lB|h>e*U4Ppnj_$Q!T-QhK>wNuc(fSI_gT(iUAe z0{W(Sdi^Z_Yx)hmA7G!Y`aj??@Ce?y(eC4)xmvEN7oZuKaxSQY*-vCIP_99X;eAkf zF8!6WSwnL_J|kz#^S8}mcE%s2`*i;841W`rk9qeu`;_SGPausKV%P^-&TIoy9j&l}X z{vY6Jy!(QU>HCYecYwR-yBg+GJFjy3vOfNO)Xl|iRru@hn((^d?I82(V)%LB`DDI_ zKkJ=(%H@7H^FYjU|CuxTTrcbSfxg7oa)0?BZS&!iuQ^+L_O&tJut{6`7@6=_2M>I6 z&fnxt$tQ6t`6BMQKBv8Wci;%I5ZC%V^|$Ebk0)3?>)UuyusB$Zo!jwg&$GMm=lR~q zTo`W!)*|;h7=O!;$YdRz5zBlZB!-Rlkd%dy5WlQH(Vsnj^w*!D zcWq^3GP4P}cdD-fw9k4gyaq6yy>ZN$T={<)@tgjSZD)RF@7dprCQkhu==lw}O??|} zWP0mTzYh4X`V;W76Z(eueyhF|(1+M7`o%Q=Uz>f}2y`ucjJlXLkE_q4{k33E{gW>} z{^~I}enPKYDpBUsBSgv#9L&V@5Z~;C%Wq)R_lzDVG zEZ=j+Rq|v(GAApWSJ_LK|9d!3`OkR7w3QcG@5}Rjv23qk^X2sFcezLUoFH6DhnVDj zu3q2Dy_z_+hlg9p#?xv;3b6?|;cJ#m|iGZ`r#?eOnOU6F0VUzcbd) zoW)Jg<$7_ghW?d4%a`v@Q2cx$L7pLhp9KI*>E{%-Q;bgO2tE^hN$I{gJ=9 z#^(Gs_a^O+)z<@?YJWeVKW#H7urnJrH=1Js|MULM=$zfiGj3IFF2NdACR` z+O?GzndqZy=DB$IlD%hi<@rw8zsrxZhyMoq@+0=+N9>Q!9m;wB5_%`@xxRH5Xt!2W z>$4+XrTsSbMJF~Ve2qNs>CIX8tnCNh@j37+gUt9({P_SIe99iWT9@v*`GYt2i)H`0 zrt*d4(aU~pE&S%wcpG)`EqkvqUVZC+1RJMTQ}_L$T(Ggo_m=u^0ppW3Ebkk1A5y*; zHs1XcbVc7$;7gPG7sc&$Lp}F@<^GrM&{FRYANX>QSndxWqU##`e}~PVoUcV!L(lZQ zE$e1zsgG^}xAIeLb0%2eQ1~!#BOQq!9n&+rQWuYI(}C8AdET9mj=bMk{Eu!nO8<;s z*7L0ES?DJLfCq0i9K8J{NO_hYiwmB?p(&-&5)7mqoT^SYedjsHh3 z_$hUi+Xco6!D3Z_l51v2`YXvCr>Y z@-9YWT#LN+S@^?OWZw@Pk8&Ss{FBoioO{<9xs&^kYQz6eo6eu<7y1{)QyzE!8F1Fa@s9`o_R>LS%AfV9WixA1)}tvsI`ezsS*{OdO}~cx zzS=K<>Eh`C)y|J65Up+WQ@c`Y5@_PWLsmo#E5K2}3>fymubi z)&%V2QoS`WPwVZpEkeh2U?p)n0+!#^$-vmu#-UkP**Mf^!sbApch(uV^?Ib@zw zmi94xgZ}Za{TFz?GP^lnpU#c4Klv8B-v-~&{&Lvd&m5V~kLiA9T2KDZ%nRtt@A0xW zl=*SVAfNv=>Wo?a18_FGU!LHj@vnkczjL-YeJ+{jnc7O~Jcs`H$6obf5WkG!_&s1t z@NRlyOTRkt&2=@`-C6RZWoulc>Bsm?a2EJJ`f4!!(LJ>n{=z3O>sQk8bMOlwe))aF z7(MN|Cro?vM#s1t^mOwM?a@=(7ZeA+4owgzGvTJACW74W_Y-hn+j z%l8W>^umMQ^EGGJJ^guppYz&A+;fhd_f@++`Ed^T5gz#;oaX`UmEbC1eA}hL>Ew^& zw-}ZE*nId;RNhpH{pwH zcym3AeA!=z#^2&AThs4fv}fqghV)8>W}^YOXVPOG>-Nz{`PUo)Zd8^R;~#>bfb;Nv z0R0BG$M~M4)V zqCeODobQxt|9kZDmt4@S z^itoRKJmlX19@9qrvE990N=ncO5gZLNL&!xdK>T;&s zuj)^0T-wJcb@2{QxvxE(o?oFKz&4(IKWF-$THaa9^WEIn*2bj%DBfKrvUG>uBv#jJ z`zd@Qd?DIqbQ$;Q{jt!EI{nWxjD8dCcPM9`-3gxuKLCFU(_Qc(c&|Yd|LjNe{3iE6 z-A&5#(EBw!OR5{|S{zC{-j<)4gJoWw0-uhDU*&lj-t23q{L^`#v*GN|n~!K?vwA!H z0y4AU=c60H{C+z1?qIZeC-eoiiF32i&|Yyp*Zy4Vb6qdI^t5s(w2JT9FHE05X0O*= zp>8b8^G|W91*vY(6Q|>~@vYVG+(YDib9@8Lr<`Ba%fYXMUk$JFOk4e8_1R#`zp8R% z;G7lZ%%`+Z=tXDvpG(&wK%c^&>qD*!S#PuMHue$iR`6x&w=4e+-yUEm{(nd3*~=cQ zUQavuoR8-Bw{!jn-h3Io}O$!M}&!s(pvwhlEP(k2dh z=AE1OSwy}MkVLV@9B(LDTk)-k&kTnVrQDC zCBM=0Zb#mk$oXRK!KUYrIX}!f;;h9dv`Kw@6yC3D)2IG(Y&-`Kf3si9`%F!IS^(@c z(B^z6{|>h9L^n2B3vy4E^`K6?4_9B4zVD-*2-DyGSNR({@kaKJ)t=mnk7NAg+O=Wv z8hxG*@1*A~Ao(u8b2gMSqMQNsawPR~9`q`7ed>(K^#5;iU)9LD@lWWKAI;g?ABBH3 z@Qv1?e@npMJpXI?RIah+L?y2qy!CI;PgbUTibKnJS#vQTH^xhU_b@xP@~_~{@rqsA z%UW>9(4KE0j`St(^X9$Y(WdzLkTc5i`yBS`Er9&Ux>wWJe?i+t{QD%`e@DNBuG`W7 zqdl?SSN#b*dk^Int$Tc+<^6@}S``1<#6jP)zv}kkr}%X8Cb7wWs{P*3mOV_`^V_L% zPpO>y%kgpe_5v>i?3K1p47}z3^QUOhe*u~?E_<`YdQW9z*UEu%KdOJN{BQOL2Y?eM z^{*-)3)m^N-QasCe*O>7Heg$E_#wQVHgRj_rGF>!iH)?Q=UtvWkDNX?=;j&PD>0}Z z6}JcRy+V8ZGyyVpTx;94fo&QCASfM zX8`s?FZE9k_4X`$pF)d$eQ(7f@46%wy?&HdBfm9lta@XX-@BCik&VT8 z6Fjd(7n}Y==sUvu@&5sQYp5sxw=j9*&^%wAZzabTB=<{o`l7eo->GN5hn9Lf7at9J{GZwl zu9uqFUvrS1`V;=>oa!j|hS%uhcfk#GT~GEA@E9N1Ou4)_N-ob2r|mf}OFhqx%DW%$ zeTJ{R2eRu>pE*YRvC50Wa-)=2P?uYI9x>f|c=Rs|+Qa2v$tI>={&U;7V*_@{SHMSzZk2uf5GaFt@JN>yHI=YEz{W7^Z+8%0@y+^M*8Rsv-C?}KZkE=u!r*UfIl;@Q6J;Yn)w9$Gw=)Lo#D*6_;Wd)3dS>I46|SA`INm=_B#Ei z@LPwfQ}Df0JDpR#v61hQmw3vv@RatCPvk#2=o^b~-lrO$fv1C0Ph8u*5+95Zo3PT?puy0|O>f;&ra3GVLxy>Io*P56G) zQ(fBK)zv*cJu~O{d%)fAsp}E+iEH^6;zfLv=lCseY}!m)VjV^9UMS?~#lDDfXleIL z74t3jVvLQnWqnrC#9N;g?F)a;Q9rTkyC0;V<$L(0Z$8f~HV5DZy*HRKDVCdpZoVh$?_*`vTp)VCUSQ+BFcHGtnUy-XCU$QGl% z#nGJ>_!S_wz9Ul|2pojYR`@4|^(w&asolO;)E$iPDbSw@y+y%4p@$#87501Z_`c{# z_{7QgwXy3{ow%Dv+ur+&|3E5@`UPO<(yh7NISf6uXJ1IkAu+YEdR z@C7!TGD*7~hM$1>am+pyAn9 z#<*nseGXI7-}rr>tH9Llwb*ZL>X(4$&_Un(>xwp3gD6i4W}I@yAU_s39{mf6Sv!vK z`smNme=5;oI~DYLz(3#(Pqz9}Kd#O2%k`mYYqcVB^Aj7td8-*q>HP7;Q!c;f4eH*9 z{F?wDjA8XDJm;5dDYibh^Lbs#Tq>3U$mjBVV*4HCU$EO9f8=r3v3nNy2>Wr-QLgTf z(8Ra?gu1uD|GW6xl=9}t#s_bS>^<<_fHs>!51@P(bw2^V8=D!xnj-BtrX|Jt5 z3Gb5V?U>xgtfmLZE zx#0d<`ws2s%%1E+PFq|n>iLu2*lSQu{(0t=K1zx%CfG=9m0_)mt9|6J}JfX>DA z{a~Wo zGpza?=mmj=knI6TQx4w3^!@2Xx92(jZ-!@Ko_X~SZpu@QMeB>YN^HHR70Xd3KH8Lz z;*Z?)-qL#v_e7Xc>&Cjuv>ay*xLoi+~z4h7BwZUWB07xTq)lp48fa{D|p z%gL=Z$OrPn=QZ&=X6k+hd=9X_IR8BJaS!DDbMCeOCzWr5dl+qEDZ-G42)P82g7)@bxo(o`N1u8?FS-MNa=K z@nWzYKftExlLCXQfPxvyZXg8u>loBY>~4B@e38;W2ND65Rv9>p^1|Jj?xQ_tDtX zAKxYQ_Y2~E+u6a>01G8~@FswUUyg%5*PZqpOnYtXeUM|HU6E+-=i_}<;^lpNeHK8> z;(b)dk1>uqW^8zg_~jl5VH*@3{dz{AL-w@PLAa}~1SU4;#F`@dM8@sx)k!)KQq z_1vf2KhZwB@x2V+|4_del>CG~V_sYiTnUf(celjuJOJALPPGBCA;$H%z!C7f@D{<( zJILq3&YYVCOnvSCB;OtyyV&38?_FSL;5~ed?!;Vb=T$Lpk{9zMBNoclmoHsR25bQ^ zKHl?mCZ@g*!Nk$~`R@9_hO}iSV82Ai|8cCHX#bx>otEeGg!*E9u)fCggz1rQlz2h^ zHI>zquGeKuAEG=IAeZ9zEOw-PDCJ(-N?hIlmY?HuDfl}yn3%@CS6$YURzIHQF-}3R zOb&g7{p{57GI&n<#TdkXe^zA6;g|NfPjjtu{}%7-k-PGwl`C^USJIdIF!1O^s}uU* zxJNpizJ8o|EnSc|k<;X}=U=@uHgt|Iyy8G?nMJ|pg@mw4`zS-X-s5ohpC|Eoixe{SsP zhc*!}bc1i-h>zppI7G~#jbEJWE60DiBC?ez({A5iiRYDKt_Af_a>03h1pOHo9mb%u zDZD3Xzw?H?QNKpN+9Bz;`-IqwT!XFSL2TT^_+Dr1k9wdN!XNVNHT*mXex3RU(7w}< zeFBh6HFG>458l5M-`_*2*GhbO(*6&(I)t?*LCj*WkAs z8h%TMAKDxH4gF(p9rEj|C{GDY1wAgYw#|!Co)g%$)9KJg?`4!1{m1B+>cPuscShW@ zHGxxsN#Ha7@ywiYtBHAabn;PO+qBQzqRqC)I2aFQ#v|r8^TIjq{EX*NDd=K$i+%B3AoX|I8;UR*yJul#}J!yKrFA$M&40Di+CedreOUj@E^o&tIy z@MOrB1z&>idw?Z@rGR_!Wxh4#-h-fNm+!%Nrd2V=<9x}y-I@MPjqZQ{%0oOLR`Aj@O~j1CNis>(Ids4}E#@ zY;2okTc4lgv2Q;q$$js@v5h|NhukqZ65kgiH=i#8=u50q*7JNS$C&_h@i08bSb5ks zxRr+tpRK!T?FXfv2sn!59R=t0rJRGp! z=K|zdMO>>TfXkXVkqhyTg>6PR`wWb3y$$kz0<@=|7WgaWO_6_@bd=Y$Km6lY+Vhuq z|FwcYDP?rskGmK5JSNk>_(FK6f!6{U_hJuV2<0PzV<;1cSpUhnc+cShFyj}`<;~r> zplPqysqpzUSigY!zE2zP!^{Y8Cg`iswaol+9f@~j&@GMA@#szn+)cd5TVq!qMR_9h zzQc~VR@4{&cg1|nohQ?wb8NEH-gm~UTWR0M=rjJ>dcIoEg04Af{ANY}hD6Jk?qxjv z_OG59ye9I~0qlL>CBBc6kG$QF^z4J~JU}n-3w5poo&&rdHYZYEnRa!-s{pGdEbSRc zoN+t{o)?%C{dWN7Na$ndexdc(qaHe;J3stIkrM~^$;F27Dc6I5roMK69rqfHz4sdB zcwlrq7x9dwB3JTHu^EVuNND=^K4)UFZAk7oyC(2p<0OpD8!-i~cT#{8V_qHa_TwW21lTFJGZ; ze*q66ueS#iqiiVsA(j<3;-KG8bT%pU_%gc&wLu-CwMzT(;n});w;~MfL88aOLbYO}yLua~|98c6{QxOkW(|m=B*(rrq&BOYhJQVqAmkZQ+qaaei+-^xb=ua$@ko z@UOw1x#D`@T2P$<|9{9Q1QR!(IjUEXKXIl{SA9NE{0$w(T%L3VKjic)zm;J3pL@{efGM--i!u%gd6z`{nNQ=+Q3s&DDkY+Zucr`ou}>-q(AE*zY2b zwHTd{WA7PutmWt7X8=H-%PE1c;jfx}guQX6pMIxc9lgXSBM;m=xA!$ZAB$&NBf$^D zUxE%VNm)JGJa*sQuSb8W!}}Wd+ZpQC-M(Yy_~iEk4*}%61fxa$jGN&=kzP|;R5t;haQanJGA+1 ze9^z+DtN@JI6m2U9;bbQ->}Dzu`(_taq<4avz~Hoc*M)|9^WPKSwZnL^xwzGmHEDv z*Lriu95R0*R{Hn^`P|5<-}&i%m-Df^4!mEW$-R06Faz`t0P)JK<2iV90&`HNFRtg# z^}0XwiS%t+;I9Ba@?YVRGw~bg)aCWg>rMD*?A7s_6xSo<#U{X})ZeAO^E9#}z#C$> z0(!{&PvCgo_ATX-SbPS&hdyoYIS^o7@EwErzcu{3-sH!^I|ewYk)x+Pe;2?u{{VWo zPN%ac{j9;{Zcg5IR{`Hcdj?@gJnL(aF&4h#S6_<^J zOlovvJ>DN)FZD1kzL)9!X}q5~B|2A)ML!E4p7IJ`u64fC?K`&dJnl*4QxTh;X~(Nc zH{NGKKieKX{O2D7p8yZzXPjiGk9NG<=X&jZul1FzHR{GaH2$r>-AlIDS_n)FnjHR7t&eu3YIEs3gftTTjbjhs zDfGdy_iWl^Jz+mts;^+~nU8UgG#lmrHZ=Tr{zG0W^BolTtC7D~qGSKikNxZ;;4hFp zN_=*re%2`0CfB}Vb@;@$#NPMuLrv@`$oX^xtgJ$F(*D)HrcepY@Ad;*WY#d#NF)un%) zuebMy(q6}udj?kx23|#H#-yvBXJnntfi2-34jh5aAnG8F?e(kNi@KQGaX-YkXRIlf zy($oiZv?yyIJRej_47^Qdp4gDGtcMqotwHDvy%Ed`0fk@mQOmK-(@c_R_OWtTAT;o z3r5fTz48L&+cfo3U;92l2U(5J>?L#>-<}5=5APv8OVnri8bI!suj7yL?CIC=8oGBb zeE*2<{m6(%z5;UM<@rr@IW`L?egDVO{b_k0z&O_r0wWt4IaZ;k|MDW>WZ+W#5wCb( zY5c^Kw*AU{ry<@?K-Y7=pw(xM@(j@a>8Cmbd}87UeE>XtYy}{z(Dl5r1HYr4a`MA^ zq|2)S+9@xdPlDq;z+1o%(f4177r9qL$NLo9QQjK;`N2ET7V2<6AGG|Y4%=xPi}&zx zEASs=w6|@y`+xgXjsRu^W*|OOrn1jDYsN%6#%q6YlYgCe#`sb%zGr_N{VqBW1ApM- zTEG}U$N4DjwC?(R+T&cbPR1zgH>W%eWn$d^E|lepy8S*No)2#VMn}1GFK0ZRd%1nM z5V#n6ed4n=m^^nMS$%~*ZLWs^n5h$T=7r^|Uy^GV_VCs3c@5c@w3FD?$g+F!*B_WI z(Ro3+LWi}*?`PuNj$D*iJc*AId_VG~!HjEm0eYVz$4(p1`?T@Q&oh8nU#9}oKi6Ns zr<1RJoEOeXIRlXU4q!=qrG1X-`+&uQiS|sueWdSp`)s7z8GXh)^o=hz+81Y29tu#8 z=h^uNVEWho-gCRY`#i+^2km>*Z|d(d=EcImFVuG^_V=K(BIVBk;^z5B?0Klm{YaNF z$-V}!1IDIf|7J$#QslI$y9@S=W#yR7f&J^io4}C(@v2Wj{zNK!9$K!34`}u4pP;EP zGjCS~oyE=#*=)O7xeyM`s}HO!#Ul_yYPs!b0(u5@T8;mxiyuY$j~Z1IWvG z=h6C*`@KN?Mlfyd8IA0I@LS-efC0cVw2$_BA6o8&KI7247G?6!d7_^03;K*s9n0~2 zk+q?{KXpG_Yz|BYVC(b70(sDrCtiCW(Vj==U*Mm3m$%`E{D}SFz2KkmKO4MRv3mn} z9UaD_y9sqK3{8mRJQKS58~lwEUE7C~l70LBP_-*Mk2d-bQvL(^#n4w#{+;sGfd2Nt z4|301)KTvG7U$NCq3czLdb*2&skeI+yaSOFn~K=`zD1m0IX{^j&Qa%QPTg@niQF@> z&?QIWdxW9rjSr9fb$y8YpLNlD2pXC9PV%I^|LKw|?g3)o@iKV+#FLKuWpc#pf4&=S zn;IEDyXs#ETtxepL$3=AMsEQ0N9bM(P5+9ypr3$$CcIa%->%c?tU}wE7u_wu^t*dD z?YJI1oVHDXdhTMhyL1U|Ik9|0Z>px0q+Gvd*?f%=Gt=U>%- z@ijNFDt>1LmIGFTJ`o#Y;90cK2Rwi7&H=#dUV=S+i2HABh@)`JRz*~|s>sNa(P~V6>xmz|k>+jrjiKXAu$Z7 zmQk*VoqqEfl8*Or-EHyn06KpqHg8kMFyK(yJ14$Yro2CJAaDq}j9(AyO))6hmDf}L zq|rfMtb}jeXjiO4nf%OYyL-|Kna>NdZ-F21PaSdJbrAB0QvWOZ9nTZKOY$5a)ug~> z)cY%T+u`p+0RK7beMa1Up62@kzMs}v99RPSjD{vY*$1@sGxWBm{4xH|MYaz9mqeG` zt48B%1ekU?f1EoV>i68CI|X(#&^~ghd>&gmS7+$kA95js7r*y?3I6s)mp0Y-D*k{T zn&j2p;8EzI)1{x;5ai3@?{C1r(3>3obztfedvE8nT=||iNQWF+eR+K}ZSZ%1<2j zBY-iF{lHh?0w8ykSIYoTL*Gw(Xh(bhRg8pw3)#}hD2JSwibMaYq#yTh^dWQ}q+Z%v zeV*D}zYKjAvW0L zzJdSOu_OMOd37jo81jMG(3Xlh?V9JgUv@3Jw*!o6eF64Yqk9Q(A@vcf?lkDm47~z! zaWx>-U&+%hS8L#&FzGrOiZC!&s&nj*J{)3#hR`ZU9cc;7uvYV2;I2{_E=WE(|9_IO4 zoWCtk`!@ofZT$V%_{3kAe(9&05B(XT|Arp9mu-U&a?NIkTx zByV!^OWpW?V05$Fp!Wgx9fNDeEzbAOhey4w|NKR0d=&IgKiMIaj{!aazNTHbz@Gu% z%uTN!Ic==3gik%*Z!446%8T2vqyC;rl73uk`cY<#ogbGlcpl+Oj6F7P_C(|Mk$h z3fcJRYz2>T%7{h#u10SS?~|nK8ISkGJ);xteWvSCIVUg|ysN=;V^2G?p^0zIl#Atg z-q6b1cxL~E$2`q8r475F{{njbz>I_Uf%SuwiD}K69p`m}(4}wgg<|jXJNOUe9e_4u zj{uJ%AD4QMLv|l!awzsqiy)K6wwxTmXZ=jF_rA1uFnyxV_18-paJ-}RyxxNQ@o~GRJ^B1r^3m^1TAMJZAoh9){Y)j(h^)s%g z&^7U`$nP4vcz^K=>O{Bvax8t~ppEv*+^e{634h4ES7_xqxuZP%|BBugz_!3P_$Th( zpE*|EpVjXHjGgyp@t;o{QND>X@%CF1e^)5vAA;3U&bY;YJTa!h+ki0{2WaTXwNLT? z4)7Vkc*ON(I_#*|>xb8Yf-#Bx@K?~Y(-(5d>r=iqGP>C(A5Qs7eB4i;c0x{GDpM!y z^^fm%Kiu1oae4xuiy@x@zvNc?TN={&-tfpV-?0n%=}AXkL~Ot z0EoN%?r7>6A9?`oqwR5hyAk{!=*59KfVrXJNoTiE{(x~;fo#qJznIA!#*r&GB)ttme7n0Zg<^{!kR+vni_kMifKTz&=~)zIj)d)r>()w3mh`lnqz7};U)W(6M( z-W&c0W6Iv&Rwn?b0w)6Wr$Rq;v5EHuS50(9yY-Wu3q7pi(N~`p=h*r!n$L@K;!|7# zRv%u5jb(Y#ah-YxOzwI=)H4FRWr6vCjo|GJAg?}b{L#LgI`tth=HvkI%h;|?{UhNM zue=}q-JJS*0M@R|H4L53KY`7FP0`x{odp5rkMrL3pt=v+MF8j2TZylaSTFEzSwAfu z=XKqo3l=(%ph`>4~y|1Qa0U*q~o+xq-7Z`%62u3Be% zKkdD-*SvWCwm;bkXadxY`Fle#VBl+!cT?lcmVqX zpX&Rrj&s8Mfof{#i2>SgeHps-uBm>1KfAb#@^RpMsAsvPub%C!u5Ik-gFK&c+MnoG zLuZGfga1|@|6@8nx_8pvC4qsI&&2n8W6{XuDKC#ib}z6F@IAnIRA&Jf0C!N=O7MQB z4&%dMx9?B+?p2J}_F&4sQzhNKnlZfa&-#vSD=#ji&Igbib8LKOQau7Ziv3K;&@Hco zCPvk6_*x5Ha?E=|pNC`_@CP~%BL4+o>|0%*x%m7f-u=d2+WTtn(cANc%)XrmoP(S- zu08LG{m`%IehB=A{CwnFQSsuy5&*G^Gn<)d%X;V>Kzn9Gk2bkpv};I*vB>q0AJ?Di z?WEHupA0{96Q|F>9{}Wq&vN4($^qDtL)z-2weL)rc&>MGUX2g$VZ48-R!h9j(}@@F z%Meq~w%vz?{F$UvtpTRJ>J%@ca~JJ6k-DY>W^4X; zuQToUL)ACf5r_8qmt$xAJC{-ysJjWeta+W~sf(QH48w;xvvKmFulPRWP3$Oprs(yn z7>?g7lJCfi68;E)`Rp3**^1?oxVf%-KjHqgWDeBtQT_q^F*+9m*hLxKuK)GBjUGPY z_dZSsUk{vt&Oh;k&z^y_VV`jj`Cd}kPk}Fd`hIy$TdhAMp4lk)pP(}s`)lxpKig2zhd8^q7yX^FTM{6C z#n}Myiuc3KN!EZkw;-0;3&1wO%SpffH@=?&tn+>Rna7txuL}MNyLA%3q}~2*ayBKg zdlET$uH1WZ>3Amqx?CN=rlkF@WuBqNnsyKNwsRwBbsD+zwkWB0e=zen8woxhAb+Zb z0qyV?YvT9dPw{ard~ocKX@Aaq@*J?D&;Gxw`)c>s%H0>M8~66m%Hxa?9p%OSz=O#~ zx_SuyBFqnR*5`xeN!Y#)jGt)bH9q6}m{zWA@+4O`p1U^s;YWWvCV9J_mbX&ZuEcH$ zfN^sz^K81hiZ&Ay`LX|O`0hJ{J`ufZfVa^b2ff9TZgmQ_6VbLU=*!*6kE6ULSbcQ| zLsOss7g5{=?^xh?`u7)PCj;1fz4LeFEPE}Nwl3?*S>y7Ju_d3pU&!f?_Y2-f#C-zg z^0XxPY^*&e>oFHuSIaq*T|s`8d&4`1x(=ee4`tfo*_Cv@ODebLX~h$?;Su0rHm5udeP?`PzU>eHOZ3e<>dU^O&I2ivFU4%o zmtli`b|rXr@T$mX0k00W4{LzwgXd21e-^~Bngjk};Jp&xxgpQ_QPNMpoAMnP^(*4# zx?Ixs>N?ZYwbR9#_^TP(Y`!4riJ;X%)pe^Gk z{LM=)(zp1%z%Cft@h-ljztGCMR{>WiI-_j=^Zo#RQkF5-`s9?gZ=dH?L#cB-`t>Au zeDrpt4)VWpzAc6Av(#mu$#tJ^xu0;qk*@=O6udolN1(F-`YUugowtGafp_7*k@Ver zsO$bC&KGF6XAqtrlmn2B3;r4WKj3NW5@ zz@80_Jfoe;-T(PKwmtyazX0;O-XBapYAa9sawE$6fLD-*{=T$2y^LEqA?1VNe+XSu z{u=m}@~*&cl$`_gHRRB~Z{YfrO#&vS#nX-4IO0S5)~=U2lv_vZU)r+YBt(5nV}nnh zNyPgoLqyr7ZGYw7SeVe%RN7^`|e zfHf%o*N8Ex&!#;K)0S~4BbQ%~gq{*Ua^LfomLK0|VQZ|_?_LkkXP-USmr%y0I}Q2p z7IwrnBMzDQ^geC+HTltR`}^_U@B1vfATIHJ9qpG6{$&8XTTqir`IEp?iS~Ewsuh40lTOf-)v32nI&poymHyp^&P~9L4ZZ=%E7_XqtMKzw#U?-Q_d z`cQnL=ldeX2s_0F<(%440vzWtqA{fBS#lt*1Bz-#<@e^Jw> zlDvrfk8e`BUKRdoN#?!E|Cf8c^SamGpIDCjih_Dd%I_f~2YlWz_J5khzP}%J%>WR~ z`Xk_D;y5mPqf)tNL@LMq#}7#s_Z7%JEA|Yx?|k@%MAyuf$U*Y7{l;6J_PqB``skY1 z>en;lOCN0xPnUdar`-46yjS=B-uKmfe;}TH!}tC^p8{~~wn9#v+W#AGZQSqnE&>1E zq~FW>S1kvuOl($%=i12pkSCqp2`26x;$Mx1zCD$LkGy9%ZDsvvf4`<$9=(C^zQos# z$(O$o<8KFn2(K47^vc|AYPvPUW}`T#)GeYWf1&YF+y^GE*%#nLfx{C&Xxjr_e@B0b zdn=R9J_Ei?cJx_mA6WChdJ#F&=jKihDBhth^-IYolJV z5cFk~Gk`J5Cxm7WlmoH*h;bSQ90mV!;0nsb+IOGTkN02BrMxrn4)7t+1(3CR-amNX z;Qd3n3H*bQ1D%6u)5P#-r@Z12%EU1458s78k9y8YwB>@>x?dI-)L9^tpYH@d8#n{M zyMvX(ubyo5xkknPRwFMTq8@U?x}Cq-Kk%^@Kzw7rdj#c)0Ce(6(CG!pS$UDqv*Hi^ zVrlx%m^n9!kzisS_s7J_InzFOiae(+t$lR^ZKF+ITjP35|BKHllh4v#OT8w0omS85 zXfYgYoXL;!$_6v%{rx@9soHzx)?aHYU2F&J2;evJWli+SpY|PP!1BoBNk? zMd+3A@hLz&+V$9HZ3QuNz4AUfAC=0kSFT%Q%c^&jO$BJ7b@^CuQUOZ{SqQ4+G3m%kjJoz2L(O zeRTaMr`QGliDUe^pDm{(Pydb{`Q5I`(&lW(u{*kvLHFhFQIx4u9rHY{4<(rToiF*# zw7bSPG4y@X{8`{R;CX0r$N7{`Oqux-_gvu6#YTPk%JTtI|BgbNuJR*;|txpH9i=RR-QW#p?hw_M>p|ZXG2ch z!iKu*6H>Wa6CcpsS@F9km^tZh8)V~Szcb~NkRL`{enFqHbbRYGlf0OmdW<)6^)0)8 zOLvJyPJi+(0P9;BIkI{V$NnDG{YcQ{ zQ?)n!ZfL*1?dgZzYv8}qW@z8Z_IY!>PsMoD4*>d~f*5U!?g7C5z_6s7G)%8NiR<@A|x{!*#Jk`|{!RX8HWy)>;{r{7mDe33;Dd%iYJ#K1~bKK`l ze!o;L27fhRoG~)n8}xOF7j*AfI`}D z^4<8HIMMNrrt_8DkMpuQl3cn69eHs+#(0&J&<>y+-syBk0OUf4G3Y!(TyH~0dwr+U z=LkNB@)=h9{Hoq5mHqDA@6CdK8ohlIUCxV-`2f}x?}y3@u}8OkPp`dClIQzM9mdSu zF`w%Hpm!_2Hca~7Pb!x-$CQ`nC%--;(_a5k5Bzxli7|J5@;tAa9KRK9`GKuIIfmp|`5o|U;%Qf13SEF%kE+Yic_H!g%_wg}`7cRUR`{o%-Y>@e z;OEHkmA?yo0KAV+a?^5r15LSSSK6=(^uGY}!8|(%9&w5D=-t6>f0m&gw8!hQ?Rp`V#U=FnB zdevOm&kv1G{R%oCp@U5gR>${{J^$mVK@) z#4xk3@QR&)>!F+V+iQce_WICXE99xuWvr`3v8Av25Br^yEd1<`Y$;%G`Z78Ao`&8l z@iKVXP+(8!$ABS;U;YdIDJZK)xwVhy-^`bI20nL+PkiHGpWz$7oN~-7;^lai89@L2 zJ+z3AF;gG8@rk|13iw)_{-D=29|i+oP|qLuS`%Q6sz(6dBFD(z!BHL<-SXo^m#i)2 z5!BO*?l3U97rDrKZ%ueV%kW!q8!&8bMF)YUVS@o2X@;7I{-UU=g7oY?wGW4pA{+d+_7^~()C*&$17hA zSQQ{v@p~_uqB|aSt^ppOwvroObLttuKj9a-_an-^C&`>!l=H!f)_+a>qb;=0xnI8r zrcp89PoSR7fd`?DEqvv{8v%{)Y8QN64rZJR@~ylA9mnAAMh-vZk0O5^V9vIBmaE;+ z{V#AYWyZkko7XR|Z|!x=Yg#-{_zs;F;7RkXJOLyREh3EKXmb{efL*% z9)kA{@?$7JMtL*JCnMh-%$WIKRzdHBY?DULS`h!^*kEnc&zK{@Cr)b}2smFHg}-;nVjhy8w{b0~dS4xPd920&kmd?9FxzQ32x4a@_~ z3w<52ot_wO1guY6E(Sk{-HYIdk@ZV-^#?NSLyoTe3Y~cWp1QT~qi;^Op8a?pq~Gw5 zp8CFDolgVMU*8d~=x5*aUfNS12^@kAuN?jd6D0NpvQDQ}Ey{-o!1 zH@{J@5?J_M`njK+lHVmjF5G*{bKRo*&1V6z%X_D$bL?ZFthQ zZ!df^?(sjU(Bk~Pr0+R~-$i>~;`xf-Ir$z#&D`;OWZ!QHdPaELq1WhE6GFo)j!12Z zHqjoRGkZPsn(qC0xfW&T>N)_q>0Zt6;IjMS)35k_m0o1T&+|9WvtxZB?!ki|Tc_T% zk;C^4&icx8Qk~Yt1`m5&Oy~;Lk_fh65K+X8fwJsA~z@w<>t{ zh6d-eQNQDkj_<9t`}>NzV^6;d82`$Z#XSHy5qtfap|^oQDHwfyg@4AO`i(w4L*2c! zcMrSOe3c79Uqd~_*_;jeVf6Dx>faH} zTH^bb&VT29L0hFW{Q8W@J-Kw0(QWBU-frlTv)(UeX8>o>#)htGpE@m_5nJbaaU}R+ z8u|tL3sUc?z?twKqn=B_kJH}CDPIJfj2`(K{6=10l61uK%UK$mH?TVaz$UK8(r+eS z{JuJE2|2v@eedJ3TM6EUjot>}W9Z9fNw05z08gLs-siqxVo>cv+aCtrqYSUwkMbYL zMvf()9$r8CwljU6ggU26Hm!caeDHZ}xi$9WpZosU>+X#%{V$fKEl(pK4L$W3`#R>pC^|X~%KbsU73OM$U!G9Nc zpYn{<{~dLcJ8}PFpP9p@`PvVihrqjnSr0uwtFZT6xLOBrty&ivTg&wvfMc#NT(;}2 z*Ry!nY*z5{jXri^vk1K9fWHCEk9sa(9{OTgJ~qB@=6j^J)i&GSXglqaSCfnNgTQ|H zz7~D@Yun2ilHB%3U$AZa6aE**hWhoNPfht(F!i_Z3k7cKANyUS;O~w;Yk0LWm|Vy& zq5LxSe}Fyl8(Zf4rM(&QO_1*eKwDN{d(T(m9PuT}(<}h*Wi3dZd@bOEMMV-vO;#K$$qq_(AQFLj4{Sd$yIB(@iTkigp=%Baj3R!Fhiin-BP!w;<;!R@>ruV}w#H^Vuxk(NZoB??)?IIn z&H3Q180XIb)&zMzzsOfXh97%!l#~=${i`d0&2zFP6;*^?jBU_)YL%Y13TD?+5Nn{J59zhu#bLeGyE* zx;KMgZg^+HzXP}(V19NtNPOk$tJ}Q=9%JS?LTe`-@{N!`NPQPm-&M%*Z(Y{wnL$pj zAcKYE|Go;6mj1i2d$4iRXT}&>o#)SmK!@p-+B=K6x*#Tz&n796jZJ zTTp#YpPxoP7`?qyS)R0V^S_VYD$ya^1>L2Se%b01qxkkg{xaB^@7S2r=C}DC`7ghr zqfOGpFmj!8tKZjOdGsUyx{0adVO(bh=tp0ikA;6{igW(=Mt_z@kGOZnrMv<#5E=5$ zbigIhn?YYk9bbZH15XT|lQCqB;vNlN+>hN$JJ(M-(miV>9eF)m54>M4en*EnP)`BS zUUA%KFGu-X{C&~zpo?FVzR%^n_7v9;H*%Z6T?xer}m z34Ie~^x`|$H^FzIPygEAE>gd}j`u=@x8%X-mpZBzu_2+wO*>EuPJnpNA zPn@Nk06uk$Jb0%i-L_nvjvRgW-`T$#`#qtV|Lyrl@o=Im<@hV-fIf!0&!#*#ZKwW% zF_jnROGn{rvP8%A^=Qh(Sh;6T<`$<1^k*jan-&L{f_omvn&mwzr=v9&|_}GtatN*cmhy5b( z79&4D0gnP-3p@mn7jd2`eI0NEZ5cugH$-pI#M93E-`sIA-_K0^VtHtCS9yI8U`}6& zKk`M|vvYaU#p{XocRcSOv=ptXN3@mfF5C+C;*#radS z9@Vrv)?emN)o)BW8eWU##rJl`jk0>N zpOJnP-wP%>{`cZN{4YcMS=TD^x?aOno09n+yNc z-Fb)dHo%tnIUgBqFL%J^R^%r`zXknoY#A?~I~Ai7FKGQ<58MP$PbHQ{S6@4kl*Ou@4t-2k+H{cd-uibCkK>MENK1-+^@-`uBvTOJu!0jV@y%?fWkJ8rw&0 z%=EE#vi1Mm;-2PB+O{&V5-flw9EcleY->KIEuvOMeUwY;z9@;JdVDESSJx>Gp zl~zA|>KmJk`RhGTMl7^1Z9DDt9Mv-*&t5${%%_CkOB;zpO}-T;pnpixuMbEzp0oPC zm(P#NACXg+IG!ghmFW6(@Op{o^QQLwF!No#Y&>k<#sB2!9R_AD6pX3w429osDbuHd z_Bek$$IssfK4|D+v>W@FPv$B)?EKQEg3kX*`~M0|3rq*^FYq=4Pl~SvlRV!v@j~x~ zRF)U}_f5d?>QN1!7`A(v_&wLV>BBw9X>a{If zgybit_Wj6IMsnG~J*Xk$O* z(7rzq_cb$s_xiKUxSDVAe%j>VEdlIX+V`?UE+2X1rEK zX8>mc=VJFb@GS5I{_aP2N&0s?a2tM!O?5T=?a@68JQu$Agug#{2=FiD%%8YsQuaJh znd?Wa9rET$dZCZJeP6DmPrfhF-3m-O-lKqydr7eOnBHHO#3tUo7)056r^N?zR9?uj z^`2H=^~mI3nYyKUzdn3y>tBcmZSj4Oco)R-@&J8`F|?g00{cRvA7?h$c)k+)jgLM) zwEp7EVRQ7UJAQ9ICmtnGK*RTWuymBkSKkoS9J{`0M8NF}7z>eeY2*0-cJW)hyMy-tq{YyFKNm8_)VU0Vy@ijP=<$HG3W&Fy2 z0OU-$KCe-J`y>8@}r?wO=Yor(wex&{SUPFKkfaJ^7j2p z?ejMQVl2Oxxf%DyzoRn+Ww3O6e;x9x;r-g^QO+M2Ls#_2>rUKr_rSl6GGiV0$#*3z z?e!t}}z2t(|y0OoUiwU471SUp@7)i%oiL(2p0()iZ zXzz3GSj!mu_}=3kWLFV4=4){a_;BQlQqRRn?s}S$*Um}jkoQ^Df|NG^m>V&l7+c3V z-sf8&mF34CSQ)jSOjCMUs8%EK_ouJW+ zbC|to6M5qOO8yN%9(h(H-R^x$_4mdXIQGJ8CEC55`#-O-@xGBXW%qW{vA3q~zWp`w zkYN+@lh8R6xSTqlCMNUZ|7_|ehJGj29RzPFfIRa5=#`b{0q4SFeNkWCdd^0FW9m8u z`e*cKqdXj4e3#^i&w|?Di&O6Jxy1bk{$f1v=Y5E}algzMd7qQtgs%BE6SAg$>-0U4 zwyhQ8?DtvL<$G^Y*Q1mjYy2vY@3_cI^RvBwkMkaQkbVs{sE ze8xQ%d6SXX8S=~=+86z)fa!r5p%;LE7%&WAOiTO6T*w`VN5Sua>6>;LeXV{O!_QAg z{uvE?4q)zgK1ViBibpn>@)p1c=-h$bPr$c;dP~Avf$~JO_ZjFB(4&E&fc_Y7<@o{h ze`WxA-H*1Bo9@?JdBzy4Q=N-^Yk-)0{~7(EFZpEHQg8M}l4oCnzk^R7+k08>N29J) z;9Z{D(>{M{{dr%jt#;n;N?Q(p)Ytdk!G4VYl(g^N#Pi*R`VHdo3K*GtwV+4CBd*2x z@SeoaL-;e!#+&(??G9cPIk75;x9dcp_ zqPH{rjewT{V&r#v-CN<4+m$}fhqk`Uz~ra7uCC`_>iV3lQvu|N=ct{pfD)a@0PJ0N zsx{#a0GJbg?^`~b=$`-LW3EQFTq;*Kuo9h>!VL`~_SmUgh=TPW*NodS5W@SKk~~KV)O^r0YEC)CFx>o^pTuJV3k` zryaLLF9yvu&G%P2*8=yzzW^8x&|cfxo+HG21l!Ob`WUg?zVY)Dcz^n{32nwjPAua0 zSJBJ=gD!C^@t3U!rakov!0JhV>^WbcQ?iD|_3%36LxF3sn;yT6S4OP!wUhs-hyLWo zikzwzL5H~=zfEy2m_FHG>+TGse}_|MT)l5C&xGD?jK6|7l>?G~L4VCF^}F!9qXBdM z?ZzJ4$e-chKj_B@Y{`?}p|s&%c(#?fR8dcbUC`5^^S{I|`X!#vkCpolsXEHzebNcW z$eknYe`&k_az7R{`5&}CM*(|d|2dfJVATuW2e~R;K1|9syJ19R=K8^YvAM!0nmXk;MPsj&gk34?~`+1?smGWlb7WC2adK33m^sR^X zIj_5W0Vf0a^t{`%?s{k1J2ho;HR@V2)i?IsFNY_&Z8D$Li|I*r$FbRux+VgCrA%JMwQxavY(klO zn*=ZLYg+8+)(m(lHJL!1Gc6k&Qm>agFzS6xUVyWq;f+#ynw6L!bCX zpN^vLD=5E%K4W4I`AwzQZiYBre`&X6^Qu^d{w|VmoXwzH9*Ew9$tI%@Uh^~7K4YA* zHX4U`*I`}!5M$r3_rA2637DBalbaDQV}-8Y4>^vGt>aa{hWs+hKO}pf^GB?SaY?__ z_iWW`Ra~P0;7gKR|J_}YQ-}J>ZJW6yZU2kU@V6yE9Gp*HH@%*EeU1FMk@^Rt zw+1>RlFaL{@-8un7&QHF?Ung|BAq*c_kmB)y%S7(JH*xXGwVm0`h9NG{SWn?4}Bta zT@Hrl_{9EsFJ!P{|JUY#_Y9U^jp={mJQj zem18$wSgUwGoHa$?sbR$c27z+Iqi<`W27n9M ziEZx?$_G*}&4}dy5>Sox#if?SK)8Dhos6V?KU_KU?Am0-p z2Htadzg7Ni73|9W8BQeQiU?!Z&0{66vAI~2stx{GDtlQ+uB z?~)&BeaQ>Irzg5S)9I{>-BbWEF&?dddD@KayBI(_sVBbGBOX3a>d>cbUSK}>H>3X{ z?cNR99N^vIJw%!KMUGqnW{$PLMHKJ#lQ;3(PrD{N_3O6*a<^vu9B+BP$0ff*j&|<_ zM$kU;&g)&VG4N01jG?qx+VhZhUy~CD_s9M=eEf#bM(AvU{K|ymoy$$JUm0NTxE2@x z0ArVv12wU!8OMCuglopWUJ0G`!GpjXfYA*aT-*P7h|3Syd;-mQ`1^RBRiQ@!T#Jf* zk)ID<5rAJD2LD6gBLJJ~aP+@LXB2HFH{<_Tp-cMEaXjf`hdy>z2goU(C%ax0bAuUk z*NB2#^xVZWn9}~fLYcOCKT%GH-ZYdC1P*{dGj+WW-Wu6u)VDu!+UXc{zeeW~U|8~{ zPyKbtC+l*~IB#uhxdLGO2g6?rAji7IvP*p3ujCg2Q_$W;;q?I507J27?dlMxKiOP} zAN*Ih)1PyZFNcqxLpm=jE!ZHM=fJ@)|b;eScs@4yn!|4sa8&mq*uI?_41;j6n7Wo^;3 z-F?6R2~XO#gin0=u6OIdu(^vyoKl0-eFGnZ7>-ik~1@L;KOIcg>lt*sT*K!@;NcfDS^TfH+vv;DoDG}>oP+)y0PW5{#*Wx!w6~rPAV>VZusSsPtLUreN!?YFO?NeXI$w8z z-j=#2z~*J}n%Lp1egC7RPHFkQLz8Y?3(@s`pzhlEVD4t$06*dL5Bx9()URn*tPl5L zXP!`>^S`3(Tz3t~A51nra|t`=A-Q9{<@(45Q3vgF|L(rMyA7~4w$mnloc;WQd|~AD zA)dX`XP?LVe73t);`!WHUY{>?l-D_s(WV+);OBAL^iJYQD_7>3h;&t@^4R+AnUr$N z>g0@5*uO!XrUb}2_nRI1o{a<^MQ2>vb3Je~a0~5U4EYEES?3Ytqv7Mn^~g2QJx;8H zVAm%1U0veo^}ARE|FhtiYm|Ep<-NVB9QXI=_R+*sp7;CiIg2Hz3)=DTjE~P1pwTxk zGUiE!?~M57%OYQn@>bX|U!0?z-=IGNJ_J4mXs2s#M!e1KY$oi`&)28U|A4QdpRT?1 zxtF+>6E!q^X@(+wm+=gI;uiO*)Y~%x`9=uIwQ?YBWFD8)-z5(+;^TUsn;*Y}pMtkI zHpij=1?5G71>vLToXIW(h9f7}vQy!g)H#y=5NrMG+vk|wNs-eR&#GM`y?*$OiTkwn zdeS)_8~k?h)%`5VV=k|r^gTZ*_J%(cc$zYFd?&ms@;&g)ShwdZ?ju{e@AvO!NB>)N z8~w3;m7i1hJb>-CufrKb#w_+5PlCzgj97b~;{0@88LL=7h=cui&P0qCpbp~P-3R&g z!0EK*MB2;R=lN*)9`YXWYXIw9NnTeAp*I6?6EG|K=K=Qv|LLR$M|=c zU!5o5pAXzknK_Vem&%@Lc>k?D&N;BJK1ecklm~t17@K@3Jo=oe{KQa06c>H z)@1AWx?Xh`1^x?=|Jn4&_XMvC#y%%DaZcAmov#w7HQ|2`&w2S_ievY9^k+o(D%uIo zHV3u@kUOus%<1mK*t~#`e&7WG>Mp6r`|WahUV?`4&l@??O8l2h5ez{#=gl?}%GL9mUtkSQkQ{Hme`+tN+;8U>o`apvjeZ z-(z0dW#4zEAL#onZoJ!bJ$NqkM}g-|<(f9e`QPK%%nS^KKNC8{zh?wMPB`CP}(abMKFA0}MP8?BN5eR`%v1R;xYxh*E&Zw8rEcei#xm*| zolM_ozscxKVm#TZwUipWr81XC59@?E}z?`ddJeTvOHIcvP&T~n8%JKcU z`~%94PnI8GY-4M*sO8HlMKJgtUKY-XiT-l7rJNiDIde0PdKV!9qcvF*~C$A0TH{e$CDcXM;jBDp~ zen%neUz_`XPto2>yzwes>k4_}+cF3FU6|HoRX)1BXK4S9PXL#d&Z)_02i|9SLY743Dv`=e6Qv>%XzY~yL5;$ z=C`&k+ql|wwsE}pf)D|7rL&AgQPV2>@wLiEi;wNvb-SmpOAw&Z&-%vs80{`>P; zzE^vb&fMl2lIus_yLGg`^$ou_*iI!s%r+MmU|)$Xb2CL{kAHlli+^2T>W-m$*0!~f z--?QF%H{n_{zjm622K}uXFkfcMvx!GZmqW`l3EAdX|#Vs@(XP0h(7y_{WQAxbhfH| z`ug~nJbQUwH81T6pl{hPsC}x=+mUfTu*x?aXXU&+1Nj5_^zSq{ej3KBp>6Taeoc8k znpN!2wU0jQBI~2En|@?{Y^*$eZ8P#D{5R0X5#?8unxEWvG&iE(MEiFn|13W~`>&N> zu3wGIv=(K zAlDYh5?CMC;$HP#z;7Y-?J50EYMsWO-&u;Svkm=;^5!smyV(z_r491Yb&W$k?Y4&d zd(h?m*0l87v(wj7$4h+H)UJorA!c(KSO?|bd-$5}Tl~WRrz+oER(=cp{iE{h94h^y z@^3q4J0lxs^OJ8hQa0a0q)h+ckLbsW+__)9)?TY6KLig{Y3@}!57IX(TdUdAlS`SN zfBdpfRo(|H-<-WCr#!iQmteg#(uOys`ypd*opo=jmFKtC4E&5!#;C@(9-qnJxXk`- z8RytPr_;ZtwV(UPydx?7GZy)#qx^ls)AXZhgSFBgOmCcXU($Y8|HtD$QDu*=JEr`c z*b6U{53ZH=lxN(;*RIr`Ij(;r*6P?9Ctwfpwq#Em&2w!^D4*w!)+N%LwdW$KzBcX= zdw%{Si?aZh(ibsv&Fep3H1AgKH8FmZ8mrpx)p~A<(HfP%wLV~O_3CqT5Y&}#cGLg# zy=xBB|N3Bjq`za)rS1>eFT^G4H-|NAsJ;>$H#uHPtS{9uVHK}=U{7}#-30u`A=5R! zBda6vOI)^cz1V@Si{UUl7UJu8$$Nu*`_g~!*fq}Oee+%VvYQx(leHtqLvv!~PLP`O z9AC}xu>hQNay(_+>(3~YaVBRyWG$5A%ed#>H+y5<>-d@X>_g-|Q2u@S>^o%tA-e20 zl=l(lCeMhOr`i~Jkvxks+LU#dy@5O*C#72#TR|NS&B-@<^}ofuR-S)(K0a5uBjm*` zdj|9=AA9GVDt35iq0$vU`QkHJQGN0m3X=C%fp8P;BPgm^s_k5M<`?s_y=g7$A+)B>z z6}i5z@(W@n?Xh0V`;*_LfACqmCns+_hRW>8cMq#o*DC9&c4V!5+mLHlVsxey&-~=t zmE$J5A}^`Vjp#3tZXz`v&CQgZOquQJc9l1dWsl&KN}uQA7JKU={?>M$^V>@!WiwA{ zr(-1d)Ai%z9V^W>_)p!_-z>J{uiS4Z4sv`XUOB$_mpaI$T*_KU1N5Oe9?VtK_;=Nr zd!3eeVv1 z2+Fk5|FN(ul*#?nP?=xuXX2aZh5r3mEpu{``ra4scKH+K-}*;a+kreBd64u)skzVG zm3g~@ZapyqU+6PbFg+j$mhGBeR1U-chTj0uHsMEeyEb` z%gKvd_K7l&u|;0Rcz;&O+5e6%`%KMy^~3QN|L!l^HF}jVcK*4CD&?Jv@*97RNt9Vc zdXw}#^`|eV;uM&#+Cr5s-xubb7<=|xnhmkcVXnW~^UFKz^8R{m`48#mtK_^YYwUVAW~JJkK8^iK0{4D#>2 zMAw&#Z8fqwqZ^QZMUG$O=uBk9tcI(OV&50|yN!8w8ealJ@*3L)p82c$WgKk&6BepnYKXuE>FVEh2A61^k z+57U)_fz}Q?I+g#>QR@WEBloV=Z==S=^jYVdS%b|Q;i|gsif@D#lO3ImCrtBcP;hr zLuvhIKcn#g-Sx_hBQ=H{>m>2ApOL+czP|RozN@S5ywN;OIce@q8qP1dp6A?|b7P)0 z^88&J#CJIMIVzvnb6$;4?0KIZ-^k_f10ugs<#T`1OiXLEX0j*amn%6wwI}GzQ+dXHSAMX#j@NSkepV$XMq`4id_PUu za{s-lvSUDuJkR%k-#YI;+v6)UEoQ`G{H>Gz``Gp-bUUhl8(5{#u;V=dRy$UUF>^n5o|&riy~uI`=WpQAI*<^DEn zTfg!=)SADF6MOb1a=vL_j@#6A6Rf>q^Z9$O<~Nm3Yp~S0y=@&Njoi6Tea0f^%Dkg& zjz-q5q(y$dmzTD*A@57e{i0*N^^o@6%3ohvi_`PT`^}tRb6!pPz8qV8BDWsIvv@@L z_mm$IBlACzefz3hGv{pf)-!PKX-%cS*Xl2O`F_j%w8mF{M`_||OJe38HSwC8Rk8YV z=YvYl_Zf{5s=9{$z2IbQbBk|WvcAjxJY9~HtnZq&U9;Ben<(cv?w(^D=9HezevMS$ zN=hEMQO`a{(*?Ro1k~epyoU++>DEkjPE7v=p=X{-WV0~U_OMO1P zuADJx9V`7x-xfC(>aAtHjio&^RB~$tWsOzj_742^#y+^9C(D<=w;`A7)O38cC;km< zseD8GcCY*-d?)SsE0=qn&Pv#teGBz1BF2;d$T`k(EW}>)@wKKqTUEM_F)I1!_>|+a zmruFImHIZV^a|yV(dQfo+815k>vfM(ueBDx{JwN^a&6Q1j<$5q;-5Kdp@TK5eAn9P zd{g;1maod>no`On?qXP4-%ikQUJ z$a7V58~lpjdpIYR=gZ;A`dn=Bi9I%BKJeFF*Ji}(}nwx6_UD+QPLhrnidCoaA-vc+km0y-l z?CiNVjCJET?VK9ZRJP6-%3m(NW4r9#_Wa9!>kpNG%Edpv`3|c5zN@}9KE@}?HQ6si zmyfya$Ez9Z#+mGkS8Zs&!8S5pCTHEhROO@ZZmRv-l|AyhF)91qqsoh4UxDwMVx`X; zN&m;bqP#xmTdkJkIrd@mZS&szLVRC}> zj&bVyrA)pbtBMw0mZ@wAp??;w>6*0PE z4Lc|GN7W-v`w8vU{`w8L1@!gDunry(D`hWMR{N9Bxh(gcxt3>r^?x6`lnZC_Jf4BC2$Y0FJ z}fR*Q^$JR^NjRa z^*cwG-)CD+oJ;ARCfE7x#(zQbcJ$ZDFC;eK*22<{lsiLx(?Z|!+&JvLM%jOzl5Y1( zA345xZjA51Wym9lHI`I6bA9dCmA{eC-@n()SDv4SUa!ZO7qhj1Hdz~u>70zLHtN~qr=FBg zn)2D-Z4Sc0%1j7rv9@s~M<2PKV@!W@uFtig==r8h*}regAA*C#L%ANGEIrAXE!vY0 zt?bd&u94qNyNqA%W18Aoo|}zJdA@yHa!no^s&8o#Wg=HYC{wY5I1rGcwRm1(_!*Y)RSDOCAb2o4-hBsPY4bkdgCZ=UwgpTwjb&)_&G? z*Bmxl(x>?>CH=aR%d)uS%RXw}H4In>TjMPKor+uSt#EWlxy$4(o2+Iqmq+vT-cLmm!Dg? zti$y2Q}u2x)}hAl;L5-MEojOQ`|O$XQ}$Q$Y?@=TzMPo*@cB%6?a%eHwlLC%23yvV z`1RXxv)GQw*z#=H(Wl(UW`LFdQ5!RN>Tf&lla{?&~prKuhPhQR}i_eD-I%mPu`RL9eJ^v+g0WJ z_kHC&yDr}!*}jneQmv1n_cv?tk3HuQw&Ziq)!3T9`O5jb_zq#4S{)BmKC$J!V%A*l zQ5z$%t&FMYzto<|u{g-}C5-hod`84*e4fRWm2a-Y`Fp6w*y`Dhj+}ddq%CVD`COlK z9WJ{0)ps4=7TR$9wH_9K^(x=rCnzaf@fn5Bc+i&ATb|FYzoP5O{qnhX#a`aUZpP;! z{drCwrU2jcC+#f#J65_F`($)G!<@90&HYq8<83{(!o1{^=UZ2%6?^9I6HLdiDZL)| z;0D~wXBKRsuhx6wHFU9Uu7~aqzbT*o>s$6gYSvc1>8PD6_DfRn28i8yLAs;zna4}< z8r?MH8SpW3On$D+arBOlyi;qL=V6b{>_gT^ zBiFCRqm@2;r_D2P3Ua>sP2aRH$4QQl$l0qadsItTa%%%^SxdYbdv^6kSL7?@*QxB$ zm2YU4lsZP6#yR^U>9MAPT)qSw`&7tmp z>Caqz%|Ur@ct6{d$}Lg(WY4@@53TWXUDb|(W3Z<^&QF$3DPQ)}^sB2}es7|&8rEcA zm2O3`tdF*}G4%H+4pW~#H!qj2U-`#3-=*ccR?e?SN>9?>x9IPvV&@!}`1OskDK^or z`T4yMZOS#gZoFz;sigL|G@1Qz0IY*{)`a$@uI38r9|6Xrbsn@c*XM>g&9}Y%`=&fY zwO_%1*(atyTlyEw*T9X`@kpgtZ8d+!KKb}&KI_Ic>$5&Y4CC8*Rt)3Ox{#c6)^(b@N8|D*D0=;MG7*>)DgxaYlO<|}2| z>guYqtm$p&jcN2XWt;obk54zX{4)I1o$E&KPinu3J)`t@cKSRgmFFe?-L2%a7K~vd z@lNMAyS${XEv+TRc?#-jStDI*AkWYFyVK^g;_p@Y=NY6nC)>JGZEHM)OZkjd`SpJv zHRT%SEceBUQ~o_FbCmag(Kn4-)4a6AZHbrr@0Rgte~stJ8&z`NCFh-Qk@=Qq@hQaH zMg7)!XK`_|F2AkP$epFxw`E_h@`=6qK+n$B*4NmJ{{G6pyC&bX`Ci;jcOqH8`uCFg zy|4O7I2GS0`=)d$e#cd1x(o1kEahIRTyMmvWzNUrHytja*T-^AQb#Gb2$^5rb>#g= z?rB>aY2U)^!?WFkp6}53H_)l0m3W8a7#z?4TB$ZBUa^ary}0bVH7}NKsx3dk8mX^j z95;|!A6ZN7H`Jf?VLdfIr1d{qq+!vXC2 zoBh+sNwcq-{nOU|GbBZu_Ml7TO7*dcxhO# z`Sz=29CDvljdUAI_m@5mV_Wux`YBz0zpB0<+mX^7 zFQZg)Nh2Gh`U&bA7ZYJp@w(C#m01|SkynLSjTgv+r8--DPSLO5<)7kz0oa<~)oQha zs`7b;ON`nARoTWm^f&ixD@obAlc|4X_MD?;gE`9ivSoa7zRY>EZv5)kV+dXoZ%=9J zZHoU$m2X?e$>%(rYh|86bDoWyb74mxJC5m&am_rpw6p)dtGwUZZ5Vz0`Nn6!rP3#= zd~}f;SG@ z{8yfDv@zG2a((%uDwF%#rm>7Yd)wJl&pvpr30e19|E)u$bCI<-&z89l&ODW8tOL!- zlk)4a?F7eRdoX!#`5oo0i}w9JnLYU~pV)IQ$evM-_u|hU+fZ3PF(cQ$#Mk&u-Jgo1 zf93b1*OY$FZ;1B4D>b%}Yd`Zbe(jaX>#OHNT!f41-dEo?*cNZ&d;Fs87i`l&-&4Lm zdao`qhT7Tk{FnO6-dyURmER}5IO0ZM-W8uAb^NzxknWB>a1u_#h}Z}8jVUp<`pswm z8L4KhvlkHG>@hT^#dP{8Uw*%2A#LPSS4Zq6Z|!C;A$tNf?P`q+vCH#Xhu#?G8LxY- zGUW1{Nsd0xokd4(J)`{URgBJ2RrwsJx%bRHXzqc^&Fes^`OWd3d-vSe)U!UVnT9sy zS*Gz9y}9n62eYPfek|wK98*WIpDxaPJsj8gtxbs6LAhm`wO z?W`S1wqByEvqztN_D#xO$$NC_%=c(H59VCj*t{B_VpnFUzcRV^D97)cd{)qw5tLP~ z{NC6@Y~nX&g0ZPv*V&`08^7}Rq1!9tJX)Ti=T!e2@(;2`Yx;LjD5fq#>ZHf^UKA2jB)lAT92^lckP-gpZ$QWtH$$u zvIZB|h8zbk^<-rtXa6Ak2JtW7AB86!V_>Vo`B<0zr zZJpL%k>5m{Hsv=q`7r6l(!rH~%H?@Ga=t;TU!Z>@N%b@S<$1UvaZz-RF)_Lm+ z<+Q79p8EQdPQ<=pW$$cP`4qkKZEK{Zy+u~8l;EhNT%*b@f} zWUiVsiub1SE3uzRza!mq%KgSZJl&#FW7Ryr=RXmh< zo0OXk7ecJu%jW$>eK{;cZjsG#^JzSTXUTI_y4u<7b@@5?8t>$b-!Q&;KFqt~*52yM zd^m1vgZXMpLw|B#QQyJXA0t1ZHo9g-PQDy}k+-jO^_?nR?ng5xxgX7aXXYcenqwsQ zqA8#LrhGX*`K8Yp%k;bUXysS#SG6Jc_W3=8mb&s@Epq28seb3VviS-7bmV!Y=DBv6 zcq5A;W@FUKKhLBoAODn3zUcPizrGk3NH=8PM!6r9)4p7D8`IMpgPh|UBVsi984y!FqCnYa3~{O>geOUb{iUtKX~lBRy;Tdp6i zaeDo^o-Sj^Fa4~I0BxyFK({b{tn}%B#wYum@lA~QH$UvzKV>%$xo=3{%KKkqpL+Uz z$?tph$1%DhyT+8~`;4KuwTs2b94~-%$;Pj?fqINdcaSlh70$8UE0v#`?NWYxhJII{ zvdZNdr97XAQ=ZGCTe9+tJ-Ym!Yt4AIo7%jFm@AOik{Yl2t)*VF$R0eeyq%sWPQl>ty}}ARemC|t$|wF^{v!e$a7IG^=!-cbNyIV z`OT%;+W3zBaI&?N`@eF%T!C&1h*xj%$=b5s%J*DT@;!i!f7jZGy?ad0M}H#M+vrr~ z8_P+jLgG!s_o!jw_2d#;-Ps>Z`|`J|t<9=-#(!vh_S&D7t?yUr->dRT`^xq0Kt9$- z_7{hK*T0(hTPVK}oqWx>M(#dY$>n>0a`}F4>q;McXQj%wLl-&m5~F*3CFj^I&;L1| zj7k4EE&3(NC&F=+d(h_U$UH7A&M7#VUabDPJLmn(Uu_b)Ct&{i-?_Fnu0IC?7qRKO!Y?+eRx5P;KzJGip*Dj!26V`t2smpa+tiE4E8yeb`eX^$YQkzK~<6|5; z$6CIJ$zEdl`|J(accyz9B2m-C{Mi?)jLH?1ksqqPf3xYGb+^lrR6bySd6fYc2WQ$3z}_ zf1^xapR|8{FXg7Fe6xR^*yVep#3N^qt+BXxOXEzWJ%{5k^R}M!bVUC?KHxhi7Qx+O zU26Vck=L)jocDpPfv`^VeRIxdjUl*S`>eml<>FkVf16@6Dpudz=neO)>o{aLsG=|{$*r;ktexQpI7qCOZGYs3@ypS*Tv?&^c8 zGR-%{%eX4vez(eZ$7B~f&x74Pv}Yt`CxbOt8^rb^|99~|9NU@y=3IzwUeIU#47*0s z-VRbvV&=V5>o6QapZ289gP}jEuTkS`-ZS5AV-q?1so7T@aGA8u_B5VC=6f0Gv(mrV z9ea6xDaUC1ZV}^Sn3v|YRr$!JEIInxNy=(>_jdN_$$KiV(!86?o^kC2{#m0}YKL=l z?ZnDI<%++)G#29fgZ|9S{usNtsAn#BQf3tT%(4CqbWC@~md+s^v62U_C!MC!#U8n3 zu8NLa?)`pN|GM`7H7p z>{m(BYR@vgFtvs@ed$7;Vn{lCl2H#D6;^xybqkE1@H_^tyrYozue z`DXT?{*h}RRl4leXMeuYlp60=PoMk2_(x8@B}U{tdo=mx8;|TW<$Bea3i^|4R_dwW zhP%~&KK&&0i{Lyl;)`-kv<{<-Eqekv&$W$xIseT=&U$w4sx2wjM%aYBm~>3+g0aY# zg1tE>W<~tJWfQwTE_r}>+FtGtz92W*2eTaqZEZ|Jw;Wc+O4@6D^Ugc@{x@w|Z`~F6 zE871(oY-31R{mvNvxfCK{f%Sx)bn1Z?5}n;~;v0R+mATZ0$nEKSerHS1f%z-twLLLnFaCV9pPcdoX2z%1wE4^X&pi8NAFOd$ zCFee&+%H&9@#(BfmhbBu?~7|*`uBwOtCdfTOZXe>vafas`QV=ZAZbr7-~Z;^^Eti{ zGF4j zUF)bXCm)}o@-Y70iF##}FW(;h-iw?1rqmAo?~YZ)tBt0fE%oCBsea~uCclG{dztb* z)dV!A*cj$K$7fwz%ePo_ zO7$t{ueQE)9Ao8tG7mq;d1G<9;iYqt%|kiIEUJ!mupZXO>peMna~wIpr(NvvBbV#S z+VYY4G=Gz>33J@q0Lv>gzBU-Qd{5O>XYQq1$7+vQ^e;idPsh9XihYRGvC|w>>2eQ}=c49o>Y7fu z3&c88N}ua~{stlMT5^w@_a*)J(cMccTiTj^!G3$&&&u=fek|>%?-};V?-IGL?#M;Ij=VC_=ilKh_Q+{pUzX2) zO_AfD7<@VtON~eNiQ7xETXT6n%Xuj0v$pyhx{zZp$8wIp>@R0exi&rhUzNSwS8HSY zdwS>NrtxeZhQoXQGgSU5*O-Ogyp`i>QTj2&p0tw7^?Nq?IgsOX9(Aa%IU{Dm-sGL> zookvG;7#SHA}@l)a5s5FKHuQf%3gOYcjwpFs*VCyTszrHkBL zqRKbTL!ObF+MmB$i+}ljDEjQdmwRHzPJf=dIgT9Hb#>%6W* zN=~`xBG=e!`q|K~#(wPDopVz1c_y#DL$?%Je>>JuJ?&Fh-aC}{4GYLG2tH-MSz6W* zeUW1mvu|$=)-LC!oR4x|8a8(KFZEoGE7&$sej4e<(7*CLyty&CNZYNizMTEr?4=a_ zuj0MJrfl|*vv1trPi;@E+{f(Zx2^rjm;KwGT=sPDsq8sVv=-$@&iL2o$MyU#p)(%& zPPY57bOw5Lw%;Z{VLX15pS{XQSHAbXMSI2)Z-vS~`i^5Ywt;E4wq_rx^PzIDX|HjO z+)Vq)O?~cu#IDW(L)14FUDm@Am0zntKZW>hNSo%ZHM!IrM(&)9kt$u0laIf0ng7mJ zRhbflzBXUwTjG$jKiC{jdV;>aB=0!wyj9S`Sd)FE*>y?~1 zCEoj$t-hYLzaH3gerrrAHD--Xq?_rhHQis|%|FC*?&?m9-(e0)e#V}xY_XHezt28A zIkuFEf667__wSYOtlHB#pAOhdK6*a2L$qUYbhUF~@?kh!A1*ge>&iRN)vm*}aE#RX z)s0tupfa=58IyX>Gv6rlCi!6cMWGF?jgWI@*3H7kRa=`YR{7|6hQ_(_haz#)xAp0_k#3;ALE62M zHZ3OIm)$%>?#xX$nRI@B#=E|uIBU`whslHxetyl_tfQn`0C1Dp6B>CrZqkXvsusO z?^|~kGyc|Pbd9Oic|43uo@ufl(P^mrGO3ugMfLF%oWV|?ee>+eHqBk$Ip_UG=LtM6 z=4AYSqC1Oi&Z^$jpWk6FZCHlQIA&j<^A!Cg{6?tK{_o>P-|f&jf8-mWzP;$wTmM}Q z>TXUt6u0cGiJdLsPoMsC6*_3o84TR3B=)Vt2gDe=}@>$GBPxW#7hnEc+Mw z6S?ePI2OwBOwRQ`_q^So*~QDfLAie-=f1IZ2o6=PF)Xq^M;E#IX_fE9K2;^>`LNh~ za`Mg3#O2dCuZmHQ^TR5+Ja6W>S65@*Dn_0!Q?7lga@T3w65>xrH>3Ow(pjV*v;S44 z}nIemqI3?Z!JzsquT3)<7yF@PEpN+3gr{iGl+Cv%+!2V*G zlYZRt9Mv)hA86ZG;%DHTMv02YdJ=9tmNCU{Jmt$ zxisHhwH%}U@2!d)z1VGGI*y&T@yeLy{b9;<7iM=X_pbwu!Te4qUx?@VEKWX6KKi8e z#eQCu?|)BGeAf_nZSiiEuBq%pc$oYm-?Nc2)=$dUE~@1Iob)y5f!0^WEbgxpt2_hZpk+sqyN+C-3~l=W71eRe64URO*~j*XO(o&UrB3 z2PB_+zuYsH`@j1tTl9T<^s(oCOZ`8Uy&osvd({u48ygq@V^8^$uPNUb*IXv!2)J>BnQUwwwQg_~rVpFEz1qjW6%Dzm|R@?rC&0DCfLe$}dW9 zjhE-s$;7`-xl8HR!@A@-D>?T^(Y1)NHx{e%`ThJngXB4308`(;?|DE3Qn}h86eX8h7+KX4pe5dSE+HtUSY3)3c-?+W@E>zi~&og;H z?ar?qH>zt+7~j@j;!dHQW3Tx*Uu`PiPnpmD?*``krTUNT^YqFj-2;18<=cbw<1jw& zD?hXHx6>#7?^Ue){eJC@UJUi*?~WQXv42|CQQim7SLK^eYR}Gy{=^^J_2B=vm4AQ1wKn^Z@y+j1G)BR8*j~M2)`tf*LK*ei^s)Irlg9zuB+l|C#n*_K%!*X3=#W7yW$a zSGrI58PC3dYXx~@SiX-MPG0;Xi#d?oJ^LTqz>U=JnCLpL%Dub${_OIe zeUr+k`1330&$+Ad%kxlcU0kpI@#kBf;l-?fsa=<_Ehe@08~Txa{$3$+&U^7`&x4oc z@5k$Sjju5(`+a=+_LM8J#4P2FSDwwIi%(0Pxu0%nW6sAl>#9D!Sl`i2UCGHe(`It~ zH6~OXb$2tAtuHo%3BvH)A#S6_shRw#J}eFDt|||VpYDejklKWYaELc zkpAdP@zbBAvDEw@jL|^jU*w-F zx#(kO>!v^EEcV44j? z6*ljs+L-hBP}zLtdeHq;nl)lf;-CA9+?%uql6N6LSLJiuw&x%}U-|Uyec#;o6np#! zRAnM}oGas-`=RnZq%mnshDp^a&HhPkY>Y)Wi`e|iey6d`IXL^7wb>zl&TX*`{dX1L zp>w=MF8Y(S{TOoQ?l|d%%86Hh5ASM2`Xg;DjD^Ulqse!97|Zf}MXooH*eSQIc8K!fsgQo%RP#UV0d>_Jx3yQO?l#WpKe2zk%6(J0XIezMSmjgf zJ^#iHboW-a=vx~ppRt${>KnQ*vnX2~RPkwE!tWDpbUw;^(V@@HR>H7PLwc(BV;?S?=`8xG569eK~zc!*!xqFrsrK+dblcO4hq)O`q_A<`q& zFQ5DUa=vlQyrKa*y^PJvr|an$~6ZkGj89a^58*KVT{TEA)KWBiEO$e49hmxi`E14WP?j zQ`vt?fB6>qv#NZF)AOq>_fPrGyXH*(uWF2>o&_-#jD2f-Oxcs^ z8zWZv#%R)KD_i&4N|)bTX?FCbFK_?Py6IXE`Ms)~gOe}MyRY*9iO=+vuKb>rV>EKs zTm16AqJ9Z^67AE^luy~%%JVW?KW5~n^25fgeJ{ojV$6vH$b?L3oyid$GV(oXOi?EMLf3PulLLFJ7UqL%!FVDYXG+Odo!q}AWu^e~x1I7Hc zDqGIaGxM8QSw7`H_!#~lRQ}~Wd~9VazaJ34O!V81WO{P4f_4vBws9 z)5>0Zs^=5^FlBSzD(5e8N<4Dc@!ow?T`OQE+*s)v1ADrj+_%?vQm6A%XSd3)Ihj~# zbFaPSe&Q#(^yO#uJ>2t+UHqH_^L;||Li1z1^DZfCr)Au-zWU!KHP%zlVDe*pPr(`D zICirBvi5Q>T;69J*Q}qc-T2k5huCt@oby)yUbw7d@rOQt@X7V1zNR>DsLL_j9iYs< z^45LhAgMm&`Jw$b-l_Z>W3lObgFe5vllY09_UC@PZe7%!H`A~Bz5KMbb*#1xFV*kH zAnC_aZEioQKgJ{X`2F9ZseMAe8MonXe!coyk5>NW{oMz{#2KR(Pu#?7tgfyVVXT|3 z3)wr!vwfcNBWE9B*gdzJe)j#^3-evgJWYm4U>vfxYkw>Eo^et~KW>*#eow8`C2q<_ zm-()559=grEBS`LXU#-zA1bvb`|GFg-(QFQ`pP|#`kO0M^%i*@eH}shPOp9B?0*+q z+B>XWKEFSf`>Whr6(4eId0a(joU{J&{dBHrxwpvQBSlVrK)aI5_0Bmq*RJySO7kke z5TB1Kx&3418(r*8Yoom#pDndB>u*W@9}m__p401#;n>PvzE|Pb{Rc2^|#+}0&Q}^syw`Y^r)+WbAxt|$>Z2S`= z_v7XMN}6{howVm5?aDmwpuLXa{`}6FOZlX&qpR`_Ycj`T zj^lwjc8o*02Q^Na?^+!VB;SI0u31mDE{u20d9OActl65eD}M_&lGGg3jD2lXjE2#n zZ?!R@o|3xYq>o8>?++2=DR!(?J3<0dt)D%|Jr`o z9|zz-48lP;7>D3c9EQVj1dhZ}I2y;`SR9AraRN@nNjMp&;8dK3({TpQ#925S=ipqN zhx2g(2IE3pgo|+rF2!ZI99Q5d>#(r42OELK_`)F#rQG9EQgT7!f03WQ>AQF&ak47#I^{VQh?paWNjo#{~En zCd5RT7?WU9OoquZ1*XJQm>SbyT1i(0EQZCg1eU~7SQ^Vw}aN>~}IU{$P!)v*TF#9CMz|He947wcht zY=8~15jMsq*c6*#b8LYvu@$z)HrN*1VSDU=9kCO3#xB?uyJ2_ifjzMo_QpQg7yDs< z9DoBc2nXR{9D+k}7!Jn~I1)$UXdHuMaU71v2{;ia;bfeGQ*jzj#~C;iXW?v|gL82n z&c_89j088#yz+f z_u+mF!2@^@58+`vf=BTf9>)`S5>Mf2JcDQP9G=Gu_zzyhOL!Uo#VdFfui@fE(tH~1Fc;d}gmAMq1@#xM9Ee#LM29e?0Y z{Dr@(%YOboDBl<~nrNYo4!RhCffx?MV+4$dkuWkw!KfGwqhkz=iLo#?#=*E4594D3 z{0kFeB20`)FexU(SI818ZU}tc`zT9juG> zus$}xhS&%jV-swO&9FJPz?RqwTVoq+i|w#IcEFC<2|HsK?26s6JNCey*b94OAMA_$ zus;sKff$5?a4-(Rp*ReO;|Lsyqi{5i!Lc|F$KwQ?h?8(KPQj@-4X5J_oQbn=HqODh zI1lIJ0u085xCj^H5?qSQa5=8PmADF5;~HFx>u^18z>T;GH{%xEira8I?!cY63wPrl z+>85gKZf7|Jcx(zFdo69cnpu@2|S6X@HC#mvv>~A;|2T&FXAPlyo%TGI^MvW zcnfdi9lVS8@IF4khxiB|;}d*}&+s|Ez?b+6U*j8mi|_C~e!!3T2|wc({13n4H~fx2 z@F)Jl-_x}57z<-#9E^+cFg_;0 zzc3*t!o-*alVUPVjwvuDroz;i2Ge3XOph5bBWA+Pm<6+9Hq4GWFem21+?WURVm{1| z1+X9%!opYti()Y>jwP@pmcr6l2FqeOERPkiB38o6SOu$MHLQ*`uqM{R+W0rt!Ma!v z>th3Kh>fr@Ho>OY44Y#MY>BO~HMYUF*bduc2keNQurqeSuGkH`V-M_!y|6d-!M@lJ z`{Mu{h(S0A2jdVNiocz+ha6i*PY6!KJtim*WatiK}omuEDjq4%g!b+=!cSGj74HxDB`C4%~^ma5wJ3 zy|@qeV+bC=gLnuJ;}JZH$M86wz>|0iPvaRpi|6n>Uci6wB3{DF_%B|;t9T8s;|;ut zx9~RJ!Mk`5@8bh}h>!3wKEbE>44>l*e2K5{HNL^O_zvIW2mFYi@H2kF|L`k*!|(V5 zf8sCvT|Mr%>e2?9XrYY`x)^|g7!Jc@1dNE0FfvBLs2B~SV+@Rmu`o8q!MGR?<6{E+ z3lm}@OpHk|DJH|@m;zH`Dol-OFfFFT^q2uNVkXRtSuiVR!|a#?b7C&cjd?IH=EMA0 z01ILvER034C>F!wSOQC8DJ+d;uq>9t@>l^YVkNAMRj?{n!|GTAYho>|jelbutc&%q zJ~qIH*a#bA6KsmjusOECme>kgV;gLX?XW#|z>e4nJ7X8@irug~_Q0Ol3wvW9?2G-d zKMufw7=(jxFb=_?I1Gp52pox{a5Rp=u{aLL;{=?DlW;Ol!KpY6r{fHqiL-Dv&cV4j z59i|o4911H2p8iLT#CzZIj+E!xC&R}8eEI(a6N9ojkpOn;}+bC+i*MXz@4}YcjF%1 zi~DdthTs7_h==en9>Jq{43FapJc+09G@ik;cn;6w1^fpu;w8L{|Kb(Air4Tu-oTr9 z3vc5cyo>knK0d&Q_y`~46MTx#@HxJ~m-q@_;~RX7@9;f-z>oL|KjRnt55M9!{Ek2H zC;r0UwOYG|IvQxA1D3c9EQVj1dhZ}I2y;`SR9AraRN@nNjMp&;8dK3({TpQ#925S=ipqN zhx2g(2IE3pgo|+rF2!ZI99Q5ta2u zj}5RPHp0f(1e;q9kCAPxW*aq8TJ8X{~up@TD&e#RJVmIuLJ+LSC!rs^i`(i)r zj{|TZ2H_waj6-lJ4#VL%0!QK~9F1deERMtRH~}Z(B%F*>a4Js2={N&t;w+qvb8s%s z!}+)XgK;4)!o|1*m*O&9jw^5_uEN#02G`;`T#p-YBW}XYxCOW3Hr$Roa3}7<-M9z$ z;y&DuA$R}};vqbYNAM^f!{c}YPvR*&jc4#Ip2PEa0sp~^cnL4#zjy_&;x)XEH}EFj z!rOQU@8UhYj}P!6KElWN1fSwFe2y>hCBDMf_y*tNJA98H@FRZ0&-exZ!>{-azvB=5 ziNEl7t=6rfjs}`&p^Xk0y8|!~!(n)gfDthgM#d-@6{BHvjDayR7RJUn7#HJVd`y6U zVM0uVi7^Q##blTqQ(#I=g{d(Orp0ua9y4G@%!HXS3ueV^m>qLqPRxb5F%Ra&e3%~# zU_mT|g|P@0#bQ_-OJGSXg{83!mc?>d9xGr)tb~=Z3RcBxSRHF%O{|5r@o%hyb+I1S z#|GFC8)0K?f=#g*Hpdp&5?f(wY=dpF9k#~~*bzHnXY7Jqu^V>B9@rCmVQ=h%eX$?* z#{oDHgK!WI#vwQqhv9G>fg^Dgj>a)K7RTXuoPZN?5>Cb`I2EVibew@RaTd@fu#o8+a3M z;cdKwckv$H#|QWjAK_zsf=}@oKF1gM5?|qKe1mWC9lpm8_z^$hXZ(Wy;aB{I-|+|j z#9#QkRvS=59StD3c9EQVj1dhZ}I2y;`SR9AraRN@nNjMp&;8dK3({TpQ#925S=ipqN zhx2g(2IE3pgo|+rF2!ZI99Q51-ysbg9wT5xjD(Rf3P#0f7#(9^OpJxGF%HJXco-iO z;9r;!6JcUZf=MwMCdU+*5>sJnOoM4L9j3<&m=QB!X3T_y7RM4;5=&ueEQ4jS9G1rlSP?5>Wvqf#u^Lv#8dwu+VQu^y>tJ21 zhxM@mHpE8Q7@J^IY=+IT1-8Ui*c#hlTWp8zu>*F*PS_c{U{~yh-LVJu#9r7N`(R(} zhy8H?4#XfFgoAMi4#i4oS z0RO^-mJs)Gh-IairFwb=D?ho3v**0%!~Oj zKNi4(SO^Pa5iE+uusD{$l2{5$V;L-q<*+*1(!r3v1)wSO@E3 zJ*ar601x6JJd8*1C?3P(cmhx2DLjp5@GPFg^LPRO!HakaFXO*>1+U^YypA{U zCf>r^cn9y|J-m+(@F70J$M^)F;xl}XFYqP4!q@l)-{L!bk00gZ_zl0~ z5B!P0@OP~?d<}Ip&_oMubkM~B48(BYJp2e45hGz_jDk@y8b-$$7!zY*Y>b0(F&@Up z1o#&w#6*}FlVDOzhRHDnro>d38q;7}Oo!<)17^fbm>IKRR?LRkF$d0#?LISQ)EeRjh{9u?E(}T38$Z#yVIR z>tTItfDN$`HpV8{6q{jlY=JGY6}HAU*cRJid+dN6u@iR2F4z^jVR!6-J+T+|#y;2= z`(b|^fCDiI2jO5Gfz2!I#cwr$(C zZQE^}#|iIm*v%gHvXA{7;2?)M%n^=qjN_c(B&Rsd8P0N! z^IYH}m$=Lou5yj*+~6j+xXm5za*z8w;31EA%oCpSjOV=IC9inR8{YDc_k7?ZpZLrd zzVeOl{NN|Q_{|^w1_Xo+AP|8GLQsMcoDhU06rl-&K-h4ECjt?PL}a26m1smK1~G|6 zY~m1?c*G|G2}wj^l8}^SBqs$aNkwYXkd}0$Cj%MDL}s#(m26}u2RX?_Zt{?qeB`G9 z1t~;ficpkd6sH6wDMe|@P?mC(rveqJL}jW_m1+=(3WAZhTiM2TcCeFO>}C&p*~fkkaF9bB<_JeQ#&J$?l2e@K3}-pVc`k5~OI+p( zSGmS@Zg7)Z+~y8lYxw6A~RXYN;a~SgPi0dH+jfQKJrt5f)t`KMJP%! zic^A;l%h0cC`&oYQ-O+9qB2#eN;RregPPQ$Hg%{=J?hhdhBTrvO=wCpn$v=ow4ya_ zXiGcV(}9k3qBC9ihkxlxH@eeQ^rJrm7|0+7GlZcGV>lxi$tXrMhOvxe zJQJA6BqlS3sZ3)!GnmONW;2Jm%ws+aSjZw4vxKEAV>v5W$tqT}hPA9?Jsa4_CN{H$ zt!!gEJJ`uCcC&}Q>|;L%ILILmbA+QD<2WZc$tg~AhO?aGJQujgB`$M?t6bwcH@L|y zZgYpb+~YnEc*r9j^Mt27<2f&Q$tzy-hPS-qJsKlsTne)EUF0RiCy z2t;6l5R_m9Cj=o0MQFkhmT(A$k3d8s5t%4NB^uF*K}=#1n>fTJ9`Q*)LK2afBqSvn z$w@&^$tANeUjK?+frA{3<<#VJ8aN>Q3J zl%*WysX#?4QJE@Kr5e?#K}~8=n>y5`9`$KJLmJVTCN!lP&1pePTG5&|w51*G=|D$1 z(U~s%!@qQ;8{O$aPkPatKKw^t`q7^O3}g_48NyJ8F`N;MWE7(r!&t^Ko(W835|f$2 zRHiYV8O&rBvzfzO<}sfIEMyUjS;A75v78mGWEHDf!&=s{o(*hd6Pww>R<^O79qeQm zyV=8D_OYJ>9OMv(Il@tnahwyJA@ASSVhO&sD9kN6}YA&E##5|WaP;a|Ga zjqdcIC%x!RAO52+{pimC1~Q1j3}Gn47|sYrGK$fRVJzbq&jcniiOEc1D$|(G3}!Nm z+00=s^O(;97P5%NEMY0jSk4MovWnHLVJ+)e&jvQKiOpA@ASSVhO&sD9kN6}YA&E##5|WaP;a|GajqdcIC%x!R zAO52+{pimC1~Q1j3}Gn47|sYrGK$fRVJzbq&jcniiOEc1D$|(G3}!Nm+00=s^O(;9 z7P5%NEMY0jSk4MovWnHLVJ+)e&jvQKiOpA@ASSVhO&sD9kN6}YA&E##5|WaP;a|GajqdcIC%x!RAO52+{pimC z1~Q1j3}Gn47|sYrGK$fRVJzbq&jcniiOEc1D$|(G3}!Nm+00=s^O(;97P5%NEMY0j zSk4MovWnHLVJ+)e&jvQKiOpA@ zASSVhO&sD9kN6}YA&E##5|WaP;a|GajqdcIC%x!RAO52+{pimC1~Q1j3}Gn4 z7|sYrGK$fRVJzbq&jcniiOEc1D$|(G3}!Nm+00=s^O(;97P5%NEMY0jSk4MovWnHL zVJ+)e&jvQKiOpA@ASSVhO&sD9 zkN6}YA&E##5|WaP;a|GajqdcIC%x!RAO52+{pimC1~Q1j3}Gn47|sYrGK$fR zVJzbq&jcniiOEc1D$|(G3}!Nm+00=s^O(;97P5%NEMY0jSk4MovWnHLVJ+)e&jvQK ziOp;a|GajqdcIC%x!RAO52+{pimC1~Q1j3}Gn47|sYrGK$fRVJzbq&jcni ziOEc1D$|(G3}!Nm+00=s^O(;97P5%NEMY0jSk4MovWnHLVJ+)e&jvQKiOpX|(9XASSVhO&sD9kN6}YA&E##5|WaP z;a|GajqdcIC%x!RAO52+{pimC1~Q1j3}Gn47|sYrGK$fRVJzbq&jcniiOEc1D$|(G z3}!Nm+00=s^O(;97P5%NEMY0jSk4MovWnHLVJ+)e&jvQKiOp;a|GajqdcI zC%x!RAO52+{pimC1~Q1j3}Gn47|sYrGK$fRVJzbq&jcniiOEc1D$|(G3}!Nm+00=s z^O(;97P5%NEMY0jSk4MovWnHLVJ+)e&jvQKiOp;a|GajqdcIC%x!RAO52+ z{pimC1~Q1j3}Gn47|sYrGK$fRVJzbq&jcniiOEc1D$|(G3}!Nm+00=s^O(;97P5%N zEMY0jSk4MovWnHLVJ+)e&jvQKiOp;a|GajqdcIC%x!RAO52+{pimC1~Q1j z3}Gn47|sYrGK$fRVJzbq&jcniiOEc1D$|(G3}!Nm+00=s^O(;97P5%NEMY0jSk4Mo zvWnHLVJ+)e&jvQKiOp;a|GajqdcIC%x!RAO52+{pimC1~Q1j3}Gn47|sYr zGK$fRVJzbq&jcniiOEc1D$|(G3}!Nm+00=s^O(;97P5%NEMY0jSk4MovWnHLVJ+)e z&jvQKiOp;a|GajqdcIC%x!RAO52+{pimC1~Q1j3}Gn47|sYrGK$fRVJzbq z&jcniiOEc1D$|(G3}!Nm+00=s^O(;97P5%NEMY0jSk4MovWnHLVJ+)e&jvQKiOp;a|GajqdcIC%x!RAO52+{pimC1~Q1j3}Gn47|sYrGK$fRVJzbq&jcniiOEc1 zD$|(G3}!Nm+00=s^O(;97P5%NEMY0jSk4MovWnHLVJ+)e&jvQKiOp;a|Ga zjqdcIC%x!RAO52+{pimC1~Q1j3}Gn47|sYrGK$fRVJzbq&jcniiOEc1D$|(G3}!Nm z+00=s^O(;97P5%NEMY0jSk4MovWnHLVJ+)e&jvQKiOp;a|GajqdcIC%x!R zAO52+{pimC1~Q1j3}Gn47|sYrGK$fRVJzbq&jcniiOEc1D$|(G3}!Nm+00=s^O(;9 z7P5%NEMY0jSk4MovWnHLVJ+)e&jvQKiOp;a|GajqdcIC%x!RAO52+{pimC z1~Q1j3}Gn47|sYrGK$fRVJzbq&jcniiOEc1D$|(G3}!Nm+00=s^O(;97P5%NEMY0j zSk4MovWnHLVJ+)e&jvQKiOp;a|GajqdcIC%x!RAO52+{pimC1~Q1j3}Gn4 z7|sYrGK$fRVJzbq&jcniiOEc1D$|(G3}!Nm+00=s^O(;97P5%NEMY0jSk4MovWnHL zVJ+)e&jvQKiOp^$tANeUjK?+fr zA{3<<#VJ8aN>Q3Jl%*WysX#?4QJE@Kr5e?#K}~8=n>y5`9`$KJLmJVTCN!lP&1peP zTG5&|w51*G=|D$1(U~s%!@qQ;8{O$aPkPatKKw^t`q7^O3}g_48NyJ8F`N;MWE7(r z!&t^Ko(W835|f$2RHiYV8O&rBvzfzO<}sfIEMyUjS;A75v78mGWEHDf!&=s{o(*hd z6Pww>R<^O79qeQmyV=8D_OYJ>9OMv(Il@tnahwyJlYxw6A~RXYN;a~SgPi0dH+jfQKJrt5f)t`KMJP%!ic^A; zl%h0cC`&oYQ-O+9qB2#eN;RregPPQ$Hg%{=J?hhdhBTrvO=wCpn$v=ow4ya_XiGcV z(}9k3qBC9ihkxlxH@eeQ^rJrm7|0+7GlZcGV>lxi$tXrMhOvxeJQJA6 zBqlS3sZ3)!GnmONW;2Jm%ws+aSjZw4vxKEAV>v5W$tqT}hPA9?Jsa4_CN{H$t!!gE zJJ`uCcC&}Q>|;L%ILILmbA+QD<2WZc$tg~AhO?aGJQujgB`$M?t6bwcH@L|yZgYpb z+~YnEc*r9j^Mt27<2f&Q$tzy-hPS-qJsKlsTne)EUF0Rf2v2t;6l z5R_m9Cj=o0MQFkhmT-h80uhNsWTFt2XhbIlF^NTN;t-d3#3um>NrWSblaQ2TBqs$a zNkwYXkd}0$Cj%MDL}s#(m26}u2RX?_Zt{?qeB`G91t~;ficpkd6sH6wDMe|@P?mC( zrveqJL}jW_m1+=(3WAZhTiM2TcCeFO>}C&p z*~fkkaF9bB<_JeQ#&J$?l2e@K3}-pVc`k5~OI+p(SGmS@Zg7)Z+~y8J37{)S=@l0SMlbFmDrZSD`%wQ(7n9UsK zGLQKzU?GcG%o3KejODCgC97D?8rHIo^=x1xo7l`2wz7@w>|iIm*v%gHvXA{7;2?)M z%n^=qjN_c(B&Rsd8P0N!^IYH}m$=Lou5yj*+~6j+xXm5za*z8w;31EA%oCpSjOV=I zC9inR8{YDc_k7?ZpZLrdzVeOl{NN|Q_{|^w1_UGxAP|8GLQsMcoDhU06rl-2Si%vW z2t*_jk%>Z7q7j`K#3UB6i9=lC5uXGkBoT>8fP^DMC?-QJfN#q!gtoLs`mEo(fc?5|yb!RjN^)8q}l~ zwW&j0>QSEtG^7!YX+l$)(VP~vq!q1cLtEO>o(^=R6P@Y8Km1Eqy3w5;^rRQP>BE2Y zr62tnz(58um>~>h7{eLCNJcT5F^pv#;I&HLPVF>)F6YHnEv4Y-JnU*}+bBv70^YWgq)Fz(Edim?IqJ7{@um zNltN^Go0ld=efW|E^(PFT;&?qxxr0tahp5b1<%RTP%fQLNdF;95PGoJH;m%QRNZ+Oc)-t&QveBv`- z_{ulF^MjxK;x~Wz8xW8@fItK$2tf%(a6%B0P=qE7VF^cgA`p>CL?#MRiAHo{5R+KM zCJu3lM|={HkVGUV2}wzYW64vHl2oK74QWY7dNPoaOk^etS;@0trU*qTMsZ3|l2VkW3}q=tc`8tmN>ru_RjEdGYEY9})TRz~sYiVp(2zznrU^}H zMsr%wl2){)4Q**hdpgjOPIRUV|L`we=|*>Y(34*DrVszomwxnT00SAsV1_W1VGL&k zBN@eL#xRy~jAsH9nZ#tKFqLUcX9hEw#cbvq#cl3zmwVjj0S|e^W1jGoXFTTxFL}jl-td-pyypWS`NU_w@Re_T=LbLe z#c%%bHy|KI0D%Zh5P}kn;DjI~p$JVF!V-?~L?9xOh)fis5{>A@ASSVhO&sD9kN6}Y zA&E##5|WaPHNAm8eV=s#1;W)SxD{s7)Q}QjhvHpdpQDOcR>YjOMhUC9P;p z8`{#2_H>{lo#;##{^4J`(v9x)peMcPO&|WFFa7Ax00uIM!3<$2!x+v8Mly=gjA1O} z7|#SIGKtAdVJg#@&J1QUi`mR!F7uer0v57}#Vlbd%UI3|RfTJ9`Q*)LK2afBqSvn z$w`5ODN~V}G^8aR>B&GwGLe}qWF;Hf$w5wXk()f^B_H`IKtT#om?9LV7{w_;NlH=yOIp#IHngQ3?dd>A zI?UG8z8 z2R!5vk9opVp7ER)yyO+HdBa=Y@tzNSt(vyLVWFj+J$VxV{lY^Y(A~$)+OFr^bfPxgFFhwXzF^W@yl9Zw}WhhHI%2R=g zRH8Cfs7f`eQ-hk+qBeD?OFin-fQB@pF->SnGn&(amb9WZZD>n7+S7rKbfPm|_=kV# zN;kUGgP!!FH+}ezzVxF%0~p941~Y`A3}ZMW7|AF`GlsE@V>}a>$Rs8+g{e$qIy0Eb zEM_x@xy)le3s}e^7PEw-V?7(#$R;+kg{^F3J3H9PE_Snrz3gK@ z2RO(f4s(Q~9OF1AILRqabB42=<2)C*$R#dwg{xfSIybnQq$dLz z$wX$dkd00k*TVTw?cViczYB`HN|%21Yal&1m}sYGR}P?c&_ zrv^2tMQ!R(mwMEv0S#$HW17&EW;CY-Eont-+R&DEw5J0d=|pF`@DKmem2PyW2R-RU zZ~E{bed$Mk1~8C83}y&J8OCr%Fp^P>W(;E)$9N_%kx5Ku3R9WJbY?J-EM^HyS;lf!u##1*W({ju$9gufkxgu73tQR7c6P9nUF>ELd)dc+4seh|9Oei| zImU5LaFSD;<_u>!$9XPrkxN|W3Rk(tb#8EzTioUjce%%X9`KMyJmv{cdB$^I@RC=& z<_&Lo$9q2TkxzW)3t#!hcYg4bU;O3|e**&21Q3Y81R*HF2u=t>5{l4-AuQntPXr#VAe*N>Yl_l%Xu;C{G0{Qi;k`p(@p=P7P{Oi`vwo zF7>ES0~*qZ#x$WR&1g;wTGEQvw4p8SXio<^(&>Np-U2Gh?u-8&uocDb7;KRcEDYQt z7AhEE$2h=H0)sOHf{op+C3fA4>-d)K|sdOt6N z%I4%g`|Q2Xd4L2+fed&9A20>@0zWVnOas%w3@{VS0<(cXm;>g5d0;+R02YEpU@=$% zmV#wqIamQ!f>mHOSOeCAbznW%00O{9un7c$&0q`I3buhDupI=09bhNe1wz1Xum|h~ z`@nv102~B|z+n&yj)0@!7&s12fRo@9I1SE#v)~*!4=#X)-~s32uQX5DjjFJK!$32kwIy@Blmnk3cMl1CPNI@Dw})&%q1u62ya7AOXAviQo-* z3*LeE-~;#wK7l0g8GHd>!8ec$zJnBy3erG2$N-rj3uFU1Pyi)R0X5)wJOduk0@|Py zC=JShvY;F&4=R9)pc2pll|dDt3#x)@pgO1lYJyszHmC#Yf_k7nXaE|5MxZfh0{B1= zGzHB-bI<~`1g$`8&<5y(wg3e-Fa$=x7_z!bCx9Y9CW33LW#pbO{c7k0X1ndTTz+SKq><0(HL2w8h2BF{xI0}w|m~0b{{9Fdj?*0x%H>fjw{ljz9#QfHQCbuD}gU0`9;Acmgr- z0+WFRNP!G^10OI2_yRvL6-)!u!3;1H%mTB4KbQmNf_Y#*SO6A+MPM;l0+xbhU^!R; zR)SSvHCO}If^}d$*Z=~+Mz9G4g3VwH*b26RAg~<-gB@Te*abqsZmiy#bygG(R+M1srU3b+ccf$QJ~xCw57 zC=d;9gFE0ZxCico81Mi*1dl*0hy#zo6Yvx~1JA(=@Djv>S0Dkr28rMecnjWv_uvEg z2tI)%@ELpoU%@w!48DUDkP6a3I>-Q-APZyzIZyy4PysdIcswH>&;r_^6etbKfU=+* zC=V)til7qE0hK`&pbM&kYM?r(0cwI;pf;!j>VkTpK4<_Mf<~Y*Xae{^4>SeMKy%On zv;?g{YtRPhgSNl`7y=aB$QZN(CcqT52OU61&5+`uH@4m^M-5CbnT8AyN>$bdKS0aJi4@B>r9G%y{^05icXFdO)T zIbbfB2j+tXU?Erp7K0^VDOd)UgB4&USOr#tHDE1R2iAiPAOLIxn?NAg47Px+U>gVm z+d(kc0d|62AO!3Nd%#|>59|jAz(H^b90sA_2sjFkf#cu=I0;UH)8Gs^3(kS_-~zY^ z!az8<1R_8rxD2j#~Gv)y;pbbia(x40|3(A4=paQ4}Dghl(8B_tfpem>as)HJ!Ca48!gF2ut zs0ZqU2B0Bm1R8@TfDiOQQ_u`F2Q5HL&4@B)*81W17l zcmp3W1^5C#FcnM#)4>cd6U+j$fj^i7=7M=(K3D)2f<<64SOS)UWnej20ak)lU^Q3+ z)`E3lJ=g#Oz(%kM1cJ?A3)l*_fgrFQ1cM!5r=z!rho8VhES8D{o?=HKD*OMbr&%!% zPxVHAqph_D zqSY^nYyY-qGrpxnB$SC9`SyN%>%oI<`|z7#tsiU9U>kA%BW5*s_a!c}cm3uaW)QbJ z{qvE>__>~Q6RNrFBlWW(AKN~)AkL%T35)bg#5D@D?paI$oAI{YTG}FrxEqa(2iMIY z?)Ld5$vQQOh@XK&p0rX&vysWIHAGjTHy&oVJ`C2n^at-2F0 z6Zdl1S^KzK#4TB{{CKnKd}Fbf%vk6pc6S%&elf(K@C{x0PU4(VCGZhS1P)?vFL#ln zkt^TOP>6p!#n9W+TZ)!4H1rf3Iy>4M+6x_wjErcKOd@m;v2ulUP$a zdxOWQ&zV)5E?1TkcRl>5^7KYhzN~Pvwq6rb9S=Dh5i*5T6U2eb?dFiWVnVA^El-oW zuSDn}nj)4=(g>1x2xSo3m8aY=ckVrPJY}_P@wvuzf689dqm#CFH_H5cBCh`-3zFZ@ zayYr%l+>f!rPO=}`G$e=`dMmH`{s0PZt1%63m#`z8Q%eoi!Y82j*eaIg`GsEeAK|S zovEo|yDo<9+wn;06{HHOYDp^oI_0P;uSqqz`5;$&Ymw9?ufhc)O++H6&K=Ddnrq>r7g!_VUQ z{PspBonWtd)Zc-Be|v4^%5lUcRWuw^YB6!@5POb8KX2G)UuxWT^lxPKzGX4aV!dt8 z+79Y7rSPO`8JnSm#q?3H2*|ATbto&-UgKY-uC!52Mfw7bz}6zRf8z& zY}H{=sjo<7Uh(Cm?K??*F6zy*GohrebRZ@4GseqoXF+^MFew6dH5E6hMatD1W=~$! zh*Z3ujYkDoK@LgRM`%&zxyl=+l{!k9p9XdaT(y<5wGS=2dK14d;d_hD$GelFlZk#} zT@@*G6Hk}(tw}2Fr{9}IOe96i3Fqfmj-f1nHb<;Hy}V`ozOJY?o4<>RxL#5H9_WoG zW!m5tZIYu%SwCEBwemhGGpiqY9o&)RQN30iwQNcX^IbJ+^f^RXJ`H)xC%dCx&hYH4 z*N}RfcJue0!bpAj3;$DDqRf@!9=tXRrfkcMOILU7C&hv8p`@BQf`vc?j1e6Hj~r` z?4k|k9VEq_rrjT&-AL-5x=~-6G$!@!8at|#=|HO4i&~Qr#_1RPH7+Sri2Ei@e8J}n zyggkfdy51@2R4lbo|xMO6Ohk0=UX^B4imX+Cb`tb)yrDwDRdS|c*JE*xo6Q{P28LF z0mqJOqrX1we5mAO!g|UiVt0W|=qxQPDfhEE-^yl$#UQKRy!)|1T6V*U+Y$7!jKrU~ z`56hX#*HU#!Cw7aHSQ4iWPii6OK0-=uAZ!HK1GUENU%A-wWnC%C~^{dyUW_}DEsh{ zsAeg>Ns$&DIa`4FrX=0K+jEFh=zn|Cc@Z&zt}<7lyTC~z_7FIss|7O58mUa=r4eh+ zA7o+I$JUPL9CfCR0{vP3c%!}dDSLFFz;0J}%FNu^CCWrZSx$#UCl*Igc5wosp$m#w zQ02o_-V>+)$!W-(9vD|VvRc23)Z=aDE{&T(YX9&W>P-_#g-+2Zbb+VH8O`n^5=@>V za&>mWl9KzF^G(qHjtdsmdYwV)S8en{>y5)YcXZ*vZ=HyHJUKBeassI@m38+MVLd&+ z8J*%Sm7%is?qY{Y`C{_Kv0g6HhR=@o#CrN6Avij67IB#aVII8;Y@mG^dMM;z`;h1eQtFQxKWU|_bE&zHJ7 zihfl*NX->U+;g+tJ}P_S-iA%mO@;p8zC`bc-9qZJW;c}v=A^6^V^Tib9pg~u=k=>W z%}Qy`?`JXG)|Mv=)-6A-8L0wSW~rpTNa-W3A~v{9iVJ$3&l0DAFz;w6g<#Jy-Z*23F&gizwj zRu$=Z-Zk&*Z6k>@%pOHryGgxYI=rGk?2O0{uO@9nxwpHwcN`Xh{x!3Iy$kKw@1@;^ z+GeCOI`N8kd^xFvaU*%Y)k!TI>Z#~env{`89NHZYBCf;8q|*JvNtIb%t=+LFsrP#H zozKH~e$edfi_WnaC-oZpK2In0vO%Bq`Vpz$kJ5Tn)`wJ)0p1ukV~vb+&3Gq~2h=U4 z9qRhF(H>(;iF`cKvkITm_e{UoY%WLN)8;z89AZPM2XDw6Y6Mcs<f)*Y@v3s(CFbpe;_SX9$uFZOyF--Y=O2pS98vD%-12acMe)3 zBh|VTPktY3%#R_@ZN74(7FaF1`}`utA)oIg^l)|eW1ot7m_F<`%)+K$AD;ZU1#!)- z9+qh;CH14HYqg&)Aa4EJ8gc%5r25qG{m#bPgeBk)I{OFZpw!9G-VeKJ<%~WHt~Mub z&(y(}B|5O5PG|-7u|mJ)2+YyhsJbIQ!3He!6jV7Vow$9I(#9-KBJSMM4EO#R5B1-f zYQH}TJKkM4Jq>!}lCDOebg;df$U&CV-i3s*k4(XGiKS|H4?z2I@-l9w*NGdxxPF^< z&4>${v-4oZj~I8tDT`w65jUXJ8ul~4)i>sR+dh_qZF=*9Nf}ackL*MODdwLl*H9fy znb+iezsLJ2JK*4yhC00|L%WQDMxfL|=TJ)7>wPFI!L-VW8WPH? z;n=XTyB*1e-QNxBR+|($4;*aunS|f!8*{#O-#*rPvlEAlv&zlrHzY<$N}Ey5x7Jxo z@*dawE==4<%ChP^BdTDLDsJ5?w2>5XZ*1@$|2&M8w%ulmZD4nrH?LT& ziU4-QHBXi0UClWBd1WrNkQP)~;OJ&SY9~eMe$%Ru!hK#?)XoIT9$>XD*8KrxG(M{v zJuHpVSqXC%Qb%l+Tph5F6o@odEi-iRU+!;1Z(|!lnU@yKeChF-vie0G?H+=0&T(z; zS&bs@@}ddvI%W}fKqF8h5&mkTCN4O+9tGlYCk1nD-iio|;`iVKD`tH8X`j)0}T-Wew}A&k#W$%$Hg8y-%G} z2BkbH?Ox+`ZLGCO5g&edbD9>Z&zBBq{oyVX=p>SQVUJr-s=}Yl`4E$e{&d(sHDF#E zDR&(*Qi?1{*&$|Go9P^JD;f;*nVU&!KYd?=8+UT_p;+P|5_pNR>+$w2ER20-Z5WtH z>X`L?$|l_<)!I1cZ_(bQj6LSt_+9|1c4?)jX3ZjXgAdZGlY7CBfX69EAencM5+x|1zc}IK-6A15yz|mFe z<&Lg)6u@A2VSk$YuoAZ0ursD1$=i21Ge+8j7}Rrh@d4mgrx%ZCp08a^k5)FbvpZH|=7z8`7F!#Z?r#NCnY z+mheVezkvwQxwc6L_z#go1XT-jTlx_NYYuuPg7&nQw%AswD zOW4vP$dAv)VS#N^;G!JQTNS>(`t+07H~0xdRogKRQ@=&~?}OdnJtVcyQjEJ@(F3l* z?t2jXXq2c4eQ&n#vS0H^N~y})>p!w>#A3LrMEP#huN4d_ZFBF~3KyRfmt14u8UHu1 z6ZdQ$HZ_Ih&zj5oU67LEMQm@$yll$;up!#qJ&NRIZ&coU^8{t5+IKy&9Db-l?i%Ir zm&Ov)_Z)|LtL)!?&8@EKq+oDy*(9b(9C-1EXIZxaYM$d$RCO?%=-*`93f3cWttkqP{hvBYLjp0(6VC>8Oz zv&+^deIG$wSkkGUq6mze6B&!oxlwjA?+hmJXWOPYW2p_PyO(+>@+MMdjnj9L`;)rk zrT67)>Je9W`UjoiZ81LGbeoN#9PhZ;>t?*C!>rNohx-DqG{ zlK|}B>?8fwhckh~KiM|@Dn=6aWxWC_2`3U~abGv3(p~H;2fc5zlSf=yxTuvepVYl} z?b`0zlnK&}D*V z9R9&rGU1hqgxz0zU0OEmgKYQ2CL8rgofNw0h4eA(uen<%Ewd%Avt-uVj8CLyh5Dnh zgno<}_i$Lb+r&wCuJsy(`Eh7%bQJuK+{oERrPwBrqyDn$b;oD0qcnErAJ=7hovl6&2J7JGnzUa> zfN^rV>6@S%(Bt=`E?(5HhIqrQFtaJgiK`kkk(E&FErW}*7@rOM%YsfJ<$_UX)jpA= zx>a}b=Pe^qzuBw$3>KqYRl95tvc^75+!FiczgR}!d3Ub5j8s}zp9@ycCB-tA;qhB9 zVjm=_^UyeqR1;^kz3x7N6x7Oem}TBFigs5{of~;=0;vqr8a|1Ee&67+V$%32q&&ar z{OR@Z!!Ez1H`3z-DTW=X@?wF46sF6pI{2cWPPcwP*8%<<>@zCQFoIX4RnWzRaQwTg z4eE6LPRbfLI&Qdy{bp^ims9O7!`_Iu?e(%A$(I^7_Uj5eTQy8;dfG!$y8BQ& z_0Dbab!Nc+{KKludO0VoR_GV!Y=aB^0gpR1z23~^R`3^XgKF@Wi3MH~QU3P3=*E=o z0@AD=M<)&5Nf{O9Pcf(&!PcpB^M(p3b)@Hv0A>$wbu$}1t}Us<$G`l83!}(5RQp(; zx#)}f&)vSX=`zIi)>ZG;vI@p|=hgyYL#!`O*DVJBVG(5li+DJfLoe(|@07H;5&Wl% zPjARdMLTABFV#VPW9z97B|_lu);uQAgm<;&S4&cqcWkN^?@g-LNt|_(J|%zkFExKy z5T%@&wO~NhG)i5*@WT0R-~X_pFoAXwp{LXpTR~oS@5_|l)#rKK@Nw`fH9Xj~b8E_2 z-Ys6X<2$8KKizhoZyNNW&|WNo!_-qC6}!Vr>?Cw8V#+cLwxcDDGe(967NinpX@0|rxD0^3#BRiwRNgl2I`uu7o_}P5yrnSO;rQ59BaVT{35qcK8 z-78RE0mLPC8B@JUdFbo<*DGFL%l3=Yoc{9UuBALM6L8=i>>Xz=eyn{GWt-All$@~Dxvkg{usrH7{^D1_@(XvN@ zz}yOB02OIVHn459IpRF4G~0g+{?q6iUHd(YhrjiG!j)22;Xjnw%dQ~KdZmul+EyIK zA+xX%q7lGbB@#$QLWzTmK;wA9@NpM<*gFaZ2qm)OnZmEc;ZemyzbCcwFRPD!z@y&c zORB5tb`pEo55)^~mx=R6cR{DcnKQx;P?l{%zCf>>h*5#0+)o81#Cm=^y?gyu@N3Iv#8>O~9qqT|xcWN$rS>|N z2W_iF>ZYw~1s;A& znPEN&<%XtVJofJf-XSLaW*--{PSX4;i?^vg_MGC^Z`6}z_q?#V7vOX6=iVyJ% z&p#i|>KPs`T}n#r^Dfef=O{BmBha-tr&q32O)s0Y=UI)5=trrt3rc6TF=ecObkyfG z#`*EL?G53_%345=dXEuOR^NfJUw>zA<}6ZN5?_!R)`Ym7RRZ+dgi-RaG_66-qbRxN zH3C>3Ozhw z+}N&$29%O`;O)@`7}pmCF)9d@NW@4~@D!jii>W))Hdku2)`k7s+i-ke3rEeocz5U) zn0nAZ+~p_pE7QK+JxD2ErV0&b24NpI zI=Ed+*l`5rJ*!`zLWxfyL-BO{YM8ZK~={$=&C-<-(3qa*CJ3-qbsk zI`7!LMzMtX;#<|S|6WpLE{Cz?>WnrMu}r6&XrTZNiB(l5&ReDnRP2_W51(ber_9GE z`(KP&OWCW|&)^1;n@!c z!~fh+(DhjurKxvE)r!od)D>gATdZdSi|L9Y0^8x?QJUV!7Dm_~DpMtr+Ttdpe15ID z+4gmqH|J^%kRPSgYY{$QJ3M3pi_`r15_8(HBQN=EH~SR+97;)F-v31_#1(E=oid}W z6{)8fZs{C@_{_uA!%B6G!Z<9n9_LFb^ue5;n>4|@Iob~KqtThey9u=^`~J2`HR6%C zBYgi%ZBJ~ypCFfDKV3wi01o#_NCYV)51QXgB$GPuIPURPtnaET-$&g+y=@!$HB>z& zMVp!7@9$%r=cGhp9Ps(91$_}`6?l6&B0N)A82fC_?_k=cLzhmSO}ljDaaa3>Pv$33 zviYMkYNcz$r`@_s#A*<>`V9v;P zboD8A{IFrumg&Q+W((!}YGR(fh?!X1{2;0A%D-E`E|ao&HvW1q(eE#t4cH=x&lkvw zSDZvv!bhWCl5$*p_nWC$SISpCwQ=`x_|3MAPl_2z>Th9BgUt~a=%+PyY>n?2hq)#E z)#%m?Y?N?d?3>FxOW5lb_mna9B(Cq5X0ggI#C@taLjNN4_Uz5NT{bFMd>I0NRo$Fn zgDRV}<4tPsG6(DUp^CfTc(u^T+Z~ELnfH}1E5;5-o>`(^_`G1mA2k9sikfXse(I7O zqn$EF9^ZG;pNKP#SZSl(5&c~K`F7(y7Oxw=Vo7@BMHZTXMjb5qA%$CkXRSc$#gJokYR2xj0=bw$Ae)kph+3f}EPjDFbr)I6v2xN--cfH)y zb!7Sb8v9&zz7Azrr@S+iNJ!nsRuD3<2mCYo;cH`e!0+e2-vX8cN?45M&#$|tm$3wB z?1r#g;hMPKxNB!ARi~2w*NXm>9;USJJF^PrW1FR26WkyWizXuAQ?aKIyL)T0(;Qu$ zoR9+xThrbT1_i2Z!pj)9wz78x#A7B_Dc@vaG|5Nyv^=tPHYq#|t{z$5l$398Ii7sK zpN&Ir4}r79)v>r9(X^on&-XrMc8N)T>{njX?(YXhP)42BcaI@1qDoVTUkf>jczEjW z*bk|iaR`CM&f=U}7g1kqoQ&=kcpvLam({Y=*&2P(AoMo-Iy3uGHTbvTn?v;+U4_nK zPocXMJ3h^dSFkf>Q;)J8_sl z!jscYNZrV%-PN%IjO)j9toEY*VQuQh9BhpIrvt03`oV(D-Jkr*e8^K@+<@AXwpWKrd6GqJvU47vA;?U!=}=59)V+CvtUu=%3VCM?b)uitDU zWt8FC_IEI0`Z}~plOrtN)4zAObMP1B2`t9e)C@#6Y=$DAbV4ifm^mzdvWe&Rjm1y4 zY~4MXRNQCD_#3+LXO=s4!wBtan=kNJ1`eBcOh0uWzMu_d1c*2HSC2#9qK?yziHH++ zF+KgR`D^IccL~$VUnNd-J73_h6hxkK*l-KwF^YQLvdd6XjTy8k>mBUvEe~G$)g4HR z!^;*d{s#Z&Asu@@ACiQ=8jlqGUJf#`Bwx|wR@sC%Y@|#=!)`51#ZH8ZxzfiWaH=e^31Teup0tLypUfawP6F><6SpU_C?A5 zI!+GI6Hlr&@dJ&uIEK02d+NI2HxaYU)7PBhxc1Q!tldPsfcsHu4#% z>Rj9Oqz3Hk&aY2S9?^_aYactbaqMzRJz7~0J9;U+C`D7S3+jtc=6qKVmdxZTGZcBd zvpj6&@bw)RC8$YpuGP5dI_8>nrfu?FjeRnC3ItAa^+Mhg^X#&`ryM6uflSth=_BSF zP{!H&-zL>vjd-$g@GPxh%38F2$hk8)`%{=Gq*nG`HXTI4;HOI<6mObgg^qN(JbP7w<0EHfMQP5Gc)Qx8m$!O{e5|=fv^n*gifs zy5Sg%4~>8GHR2~$0nzO)Q?_-TV@;k}v3;&aV6pCy+)}bm;SQ=g*TMN6oQL@0_u(k? zUQ_o6hOoC1Y#+^c3&**kviC%K*N_jL$~r|e@mNH;P(=$qGJy{!&T@W(Jnon0JP%kP z-y_a$@!}}#)0Cbcm(+q?%yHrBy7#f(%xqMd2^0w({n%y&zGp{~49-LhpL~f-;DXjw z0@sj2zTLNmmkwJGdNpbxpv<~4%VT0sPQ*X=XvQL1pZuHCh!(-%6F_s zU3nd=X=A?K8{T;JWccfPob%Jh{IwW*-KK{Sakgxawuzg55QxnMA{2!^*?DUU>xbH> z^;rGbgLNQc=7qrTlzpe(68>Dw^Domq_9&b`-!5_M>@IFl=xx#e`HJ z?!WdcWe>lmiQ23j)&q6q9h=S1vEFyc(nTI7#$jQBni>}sSs>8O4f!U+c88TcvJ~sp zm$G`gQIyraMV-vKGD`clexyqa3)qcC1Qr#Q(=P=AyK7PE{$Mn3zni8aSpl0siL%n_Kk1^A);m`F_*R}LKU1=p{ zj5=7Ueyetr)xLao?9o}6-_!dczN`@l%f>?!i;~KaR^}j*O2xUS4t|L1jlGZcYr+5XnyjMWk1s}805YkU_uehi^3|11gOGtSK6$*NpV8AGa$J2zOn-9oz$TmDLaGUhec zJM$Lo&WZ8!o^?hZ{`t~#sM3XxM$0 zf9G?1&=q{G)^w!_^kH15$F?UPF#n;CNMet4mAp>)@hcNJ5&QN-b{=Km7tmf_@2ofU zf}1qUUXAoCY-q*@FHh@wCOwaTBHKz3Ee&rVHAddBIKuSn8oQrzZ)1itT z@&UBNh1aK_LfpIjZGK(&@%NgAjM)*nF6#5P$+a*}D&CB-+l+Yku9=Q2p!bfg++Z4y{mG}4 z4oPbcfHuoJYQWBo7NiK` z?|6go`<$wtSciOr`%xF(>Rv?rbk6a5L3=gzwUswSzM-nq##$ocUb)sX=pM)RWeF84 zPtg3mU0JO6tb~7=jJMKnH7RV%Hu^ASKHL8Ux~rVwzj}DT@7A^~4*t0L`Gu4L@7y24 z{y)s+h_l{L5I@=0@BaA>Ebg;>o817MjG%*N^Rd5u zP{FDN^uvVBpW;4QARlu6%+*2U_sZ9s5xc~8nfukw)P?Z&5TV}F$h}J|v|1zseHR=bkMJ*l9E3LQdXC^=Y8V^ zsBhOd$6s%OK16sSw~^TApB~ujhQ9i~Jj=-O-6d^E?$i9*pt#OBZ}4=UZ0`X|KG)_{ zyRj=M%OSo_!^48y^C>yu1#fn6&^KkehhtZv9KE_dIT^5*lr_tD8E1EpxRm;ip&YZL zqQaQKytR&f{^>z1;HSF_S~i_MOZz0Hb=kG?(taaS1wVW?AZQyY!glW*nU|*JHiVKb z{mutX5+g5o_tw6311R;`+{*`pJ)keTJ-qfA_W7HkrJiNJBu?AIE41ou)RRB4o8eLH z$Fv6MPF5nHsd9_Tz(i*1sZY7qQ41evbenUS9H2!`0C&Zif4ZYXe>KSF7 z{4(M7nRY9E}h z=-^^pv*G~g`wv4JpS+B`lZG3whoGPDud8)?Kqzs%In_qq7|HaUk?~Alluv(kxEao8 z&7St!>R3-wx7oC1QEwjlw?oFG{qU>wF`3t)?+E0Tc~{kyz&?7c=h3@E8gb#f?IPb> zk{Vg}Nbq(Ld%=W79$A)wn{~Ar$m{8G^Ys4c-jvC`y^!*c>a@6LE#Bi|&2tk{h>X0!xxUZHYLFCf~0vo8Mn& z=tYpS$MWM7nhap=vb4Eoru;VZi%q?<3svy*48Ob6`(7kv*S@l-lh9}imk}r%#X#(iF+hLFSNJXsVt|lXH}Llq)z7fPHya~ z(T9J1tf{MUp?DjMyB?#IgiviaSB(EFf_;tKG|AD2e^^sYc<(8FuiC1~=xvm`;fuIW z%Q=+BX}v2uJOz1v5j*a${77k^0~=mShabU=RT;;59b^)uRbepV{stUlc9rF8Sk{Kj zUi!MFQxK(U={D_o@*8o9y8UH4XR`fhRimUXgkhszoZf@k6@>*N@d-u*YpX&c5&kgh z(n-{|U1#LSuk)F((kz(L?CvNlxWeBsuj9mqt$Q;+RgKY+E|l53a;!$+?@}jN2|b&> zHXSp9(iW@K0ea0TU1yMR&nI2zk4>%lqwiDJhLBg+bYZ{i+gNLsfSj{se|M~@9>($g zt=jFD4rO}ZDm+-1xR`+1g56Q1+I_f{vG<)reB>xnumQ-|IQOve|-V}f3|yJ28Rid>e+jt{d!x5i`M~jrGnR=veBc=L zTau`wdwm#oT{8}7Q;yE~~vb~f+{*JABwvgi6ark`8c9qz#5 zwic1LElAmUz6;`dx%t??J0~R(2gr~oGUnD)vo=SG+g`Uyk_h=(h=;0$S4nkuYVdrw zI*2n*JA2tEZ=tV~uSZgLTK3Ca0sXeB$J^*}$TM74y6uJ5@ViYJ{OEjBA*oJ3j&0vs zjriI8)d#Bt=Zs4~*a1m;%j(`{S6Iki#EurgU%oP0ZiDu{zm?~7*@Ep~r^t3SK)skh z4tdjyExX>n9YhLstd1b&C1r1WA*nCvNSTr)mV0+&ecfE{-tz}C;=O-=x7;`QA10^F z+8nAPF6w*P7qc#Eey`o0Va(3xA03BvBw6QN)zb~IZVI9&Hx9$^UA7|ZQ8%2!e9_ff zyi-$-l?g$l9?R~I8PDU!T)#K+#x~0Qrfa4=6wLe^U!7|`qV#Ro?|&`@JvFSFy+16Xte120v3uwB+7O8tsdgT@D=Lb^ zs{y~EKfl-dOC(>*`@CTb{$W-A zse}hslRD#_!Yto69hABHs(Xu^}!In|7?Kikr=F^BPH z)OhM*>_?~9ztN+`P0F6}sPw~IvvIy;=bTx|l~@TK+`Vz71MbAY^h2=K*#!qa^S#Dw z>UD93yei7ab@!rveMcRfT#)TprrYR)4S z$jSdy&?#ekHzf7=n$O)VZ<4ylnZ>0IW}+Y1xrZYxj$Mr&9-(xUFh}5zG1g)PPOL!6 z_b)oP*T=nTzkUj~j=v~mK?#2?r10Mq5?Fj8OD+(`f>b7fxggNo-{I~mMSO}~{DKSG z(D(ROqht%0;&-3?$hii7j~ve-?lk_Q4=Ov({9q9!CI5h02x)7Sc~P^!6N|YllKn>BKMd^O?o$3`rr3MC zx;wJ73c1QbJVk^9D)~ptOWr9CIK3kgBTSz^7BQN0Qt?@vmV7QdxU;N77SP1m3Z}At z)HWrZdIkD0UjgRm!+iCKQvUtWVWtRfKKXUdr8$4pXj~rp*AFvAauOQy2Hp=}*_{|A zdH&#z{1<)5?hN~(RE57aFLH;Y3`r5j?0-^Y=m30V5i%#-nq_Qc?97h6^V}Vc9sJP2 zxJnCY&g}Z+|M9^hCB&7K|K(iHvyCvYWjNj=MOt3bDwk9_xQjfUWiHISq}et#<7f|Gw& zJp3yp@Jz)s*3H|!he|W`})oM!H`~ZfxitcFoCVCY^?08ECv<1JPq$3DE@&->??Nk{#6Syfq%aPV84PL0L0PY zpOZoJ+Op&`#o6OO?i6QF+yW>rI)U?w_fMVTg8N_#3Hb42$*cU^Kql*ylFk&|+#r(R z1jLU;%l*FOz3e6}lmhy*)RGVE|J=sT^})J2X$B(;s>p<{1t(QX-YJM1IU&1S=vDZ( zxq_;fyvhXv;eGu1R_l^?$`1nJzVLu#c4@xmfk2!z`}+sGfcz?JN~p0bd5X1SY>TJgA66YR1z)RJpLgykiUn>g-%hx!Rd@lbXAYAgP z2Z4Xe)cvc*%l${J%Ei0o*x%sEy&wDMaqx@Z!hQyM)taal!plEf@c+_=h4!ONe$l6- zGll(hA%Q<{aQ~%*e@y-TMROJV$E<{GL(fjAu+Kj||5n1^+;H?LD`B9SA65<5g13O6Qev)}FmN^UviTm%ABF3$$RAr*EZgDXzu;I}~_ zyZGd(A;l+6vn>)gUQYosglO%|9gkz?@V@$*bcT zlrQfe#^HaT_mz9% zky)_plnUN3D_}36gVPTQ3b+8$FaI*rzX^mCN?R=?P?KNvuLA%3tg4(BB>pNpx#X+f z&j-^Bx)`5IK5Txwb^I6QP+HkHb58PgPw=U#0;Xm|p&Y>nYO_02lFDL&) z$;Tm!%X{Z%OXmy9`(V!R)2lE3$q$P8m)~Oh?ZYn9{z(-S2>ctBP#_=M@0`QNY@lc^ zb;}z)xe`lWM48 z7%4(5E>iL;Yfdh(_Va^`CZZB8TQ>0pajN-ew- z@NCDY4_lMExqq@e{WYoH$d8n7p-<`??~_dfR*-7vzP1&@x8NOn_2=*E7D4J&(?414 z3n%rGz7cNKaHhBSfVPWPza*~x+n()j&cQpkY@Gr=;tqfdPq@y_*AZu=J=UPXHsbt8 z%xdoLOI&2{`prAcz#VDnpN~Ao&-I*}P|al@shgLsmU zN;;_+b&|55?%5l+y(!5W{k}hQ8kQ_%Pl{Ik;Ow8v))Gv~v8d&~+zJuW`D=Eux59 zJI&tUG3s+>)uzjprFchT_)+EQjih{8;bd(++&ytTwJ98NAbCH3fbDK+0gzG0xeewLclz9-JVJWQn4OMT;6GXr<6?^d3FkU^NRxW*Xo*g5j8fBEQ8O8e65Y*1h*ajX2@rz?YS7GHHbqzdZI8|4xc_n6e3*IM=e zx((w2kg`Nu~Ytdy|NXq-Z(e{QSx>l;xlC-Touyz5n-a&&ypT_4UlH0gH*a zUQzuX=#3_2+Ta##l5v+;{cx?-O5CZGS^dcC;EuTas@IC6mUw4}`K}r@`W(XDjSYFr zC%dCx&eXNDUW2=GwVS{1gtNq#zwkem#XERcj(hOh2zOvxW?Z_uV?QYte3`B7(1aBB z21B0QcuuOPUr%nSi#soOWR|__k2}Cxtc<>86Gw_Gt^7@bl%!aqFCUj6BXtdB{S_&g z*LLsd;kB8hK42GZFz+BK?lkTG@a#rX_tcI0(xfq|Z`asSrA!A>&0f@+j4)2W*spO( znS${yO?;srj5|?eH`*lO?yJO+n`fSJ#Qf;w5T`p-k`Kh)=l5fSwCr#f%Z{LrW$-RkZhl6>t8wEoU-#7 z!$+c;rSv96T5#lS0p^>MbOUeCK|S@qJ?V_~g{!h90`LBm2iQ(~9e0qjua{lY_^ugc zPO=`*#_S{RXp&vpaW{c7(ww8tv{9fx%O7vF_daEh4iwn!>Q0%NJG(@gh$zeHkm$tX z2+F>)V9m7fCX{vX#y9tfD3Y&!+^*$^uQ-!E_imLXIBOr>uCu@b>&Vewx`(U0Cr8Bd14|dCuMeZ_N>|=Cl;TcHm5pPqB(!gm{8S7ov%{<(Z zGVINKnIXGt?MbK`?tHBmdDNyA=Fz*r2HKaQhe8gv4~fQ|Ir?M9j~j-&B&|y?Ffdz7 za;ui_jyJfBI~Z)LuUKx4JF@z6^Mg&X4!+PHUoV!pY`@ZrWtd;j&35~!>|s}gP0~$; z{@}hu?}*((>au1xl?LXdtQKQZKHHt$p{cw$Djf1Rf9&p99e1uA*LSLpyLMXN=swX0 z{r%DXVL<#GQptjK%a3bDs=$?5DrqlL`bevY4Q`X-f?nsd#;}{prM%nNb|)#$ma8#e ze;LVLGY#G{J=tWRiE$r}xJyfV8Kl1??yl%n1^zO$r*mCt8jnVqF=fvVndWvGcZ`{TPrPJtfw&h96Xw*x&p)^9 zT;}myjMHo0*V{%CXP7;Tw04vF|Frkz|5Ux-+o4h+NoX)cBMmCehLuzzDHKtnL4yV* zLZ+ysK{ObW43XxPq{&={q(nj?p-@8R<2dK+=i1)AKHtCK`Hf$^aGbOEeXo11Yh7#Y zYu!DvafAAS=(}~|ROdz}f8dJ9qtU5Ia_WWtmi>gJXu#<6$u9cX5 zb>8TYvOaJ}!zQ86Lyr(lOonW9RQP+s3J9j0#;m`cOx{Cy0oqA$Kb702| z|L<~X*e{c@ENYi8w8QRHm0G9}v#)T^SIoF#xQ45z?^GcH$7<@Ot6xcQ;pL;oGuvSA zO(M5;3W#y5ZQZ=2kr?+My*&q&h&lQ@Cq^CX*ARBb^bS7fOYViVugSo_q6@AMl_SCY zmt%Y@V~AOQJl5!v6Y;OKADp-n+FMuGR~ol4B(O2?FRV-@=7fpMUXQo%?}d8%8C_!1 z9M;HhKaTGr>s69A0Jqqw`|93+#`&Z~?i2idvO&oZl_Mnh{PnW%S7@vR|CBEC0e<-{ z-w>-Pj5vRA#buu+;+4;dczRn0xXz^{KH&xl#`_&PJQV&Z#_@8ghCQ@^RvFhqyPM&O zcMIPwBPP&urC;`B%-lS-?zN*h@Kcgd)Jg;FTj-Qyj)=!UUjJ;0h9CW2{>OX-{Mu$G z>y+#TBxrGR8)F=XpHEoFMs*Q$XJ4n)nI^=qbKUz_!yd-h&l7HVN`i|0l3ktf8yS-P zyfsz8VQPxKp13argpWIyWBqbW!`j*SP;y4i8UD3SL{=*l>&I}1*w4!)X5*Rhs&k-~ z5#<|uf5b1?-8L8hVrbhLid<@`#4ID-%}+B@-AVB0&Ovo`*y)A0KVz#7Q{T+bBestU zAnx)VN}{gNSh+dkmQzv<^_@xncy*s**TuWR zpJa)*>{rG5$tDj`fSvR1dKRs+#r_3J+}vgkKQA6x$DfY45aMiInFjmN^l~r;?$n+< zLTaQ9a6`^PzFr~mA03(-Y?qGzoAqMrJ8$CHn0p!P$xzp#C*KcF22K`xbX~^c6!779 zo1OOXkGuK?>${JnzWpcD-o+xG85&$E-T#TY6<AP=wLe(zm9G`Yh){R#!^0ZGm8e^LjOqac;Ia%quWtu1vrzxtW38L8bB3Am(O?sB zy8qVt1sr1TH972SdxH3s^zDlEQ4&0;y?X8(0}YXSKl`9}B#2clc(uk%rgzr8ZSR=QMy34P(Jxr`bJP_%fzSWR8Yrj;OxC&8s(YO!iYLLfF2rFsL)upb> z7h7DsHV{wycSZ4D%z`hBQ#mNEMcnhHRt-N@h`DPr$igj)1j$9BRafCh0^Dr8SK@p$ zP26eAYPsO+0uSfl!Jt9A(|`+`!$Jfy=ZTkm^Ktf0IqJ)ucjf0;?cg>~F1|7*~V5ecq>YM-e|A1tXopF+;mJc;(P0eE#LK-K_=A#4Am7Rs0wVjb5Ry z4vsf?kj5jU4#ThPnSH+7)d({qBCI{;)IwWHS-NnY6m?}hpX`@aiFha(GuzAs>nQGZ z>FqM$2)Rtlv>DKZ8wDxq;rJfp_{F*%cC+=`LCK>yXG2CSB>E8Zs5?-1{UG?M5mF=c zQmJdX!-s~Cn4S7}x2N7g_~W8w;n9<-f&aUA%Ly+ezWLgfzg1KP>&2k;^HgB|^ zD~AwY^z`7+Xa!=1Xs3@mi|c~6)$GUDfXl^i@jvfCygz#6+?N;@FX(BktztF74!4zH zR_?p^&jRQEpVn5#rF^~b5<hHy2Zo5A=QCvOMin2KBwZQQa=Oop^WB zT#ND?K9QW|W*~a?A@YG-eP#Wxbc%`{~3F+bwnB>N?`C zO1=>MM1nXn52cOoMiA%F30vP;Yly30DWhF87x7A|ygV1{+EF)1B(#>e?O!floSIDB zD0eB@9ADr;nGfc7N~m{U?e#KN^Z9W+re&P_J6FN3=K0T zFzdsv8rb=jnRbrrfJc1-YhR>qTYb#2Jr{aA4 zm0t7Q=Lc}&t!t*o+QDy3=IW;$p}wlp6^S4oxe??d8Ern5ESCY-htl*eUykbIV(; zaVdW(wCca~EDN?ggWt<-+1`t|l;ShGez*$qmt|X*v|Yh{o^<%=j`Js&5-#h^C+3&p z=7(#l!3TDo*LeR2uiyUZjFB>NRbu=bwq{}$aY8~|h&T8{tLF!UfioIMo(amq|Jm1U zvRNSq9M_Zi{EaR#M`pkOJH!<;7OJmB)%URH#(8E;*Z;KXaDJZV&wIw^Gdx~|BxYHR zyVrStHk;?H(Nscy-F@QX#0f8m`7HH02HNFJpQV#tEwp@H+y>7%h&c5|L9x(Em>3sr z;|DKp5Hoeo&1p;lG|{)EeV-wVeC~IgSJ8apHNVOVy9hfS8+g-kwk!#JttBVUSVnxs zzSqh#kY71WI(j|>e!*C{J}G-E@Kp1K6;HVKSSJRx$Tlwzys}@q^hr2u>8R93A>;{27aLP6xO4tG_ruN4*wjh zclh==yw4Z=8p~67pHADf5J`5nPiWPMnZ(W56q!3p7;(Uo>jf=ZXe}zqk5~en;e1b7 zXB6@Uj;d;c0|}--6~rEJ1`d=-e7_v~ojS5n(j2(5=&QNZnC--DGJ86CFZ}xPonxQx zTttE`H9b3aK`U`m$r;n2EMn$u@+%e;0)J{uPwMp|CV&64xqRSb-UroYhvCG$IDfgR z%^bM7DS4S)ChR7u`^-yw>V>AXauD_(TG9a(z!@;J+7>J7Q!%#df;KL5(8e?&19`nj zMG)6cl>}NMC3en4JkA!iJzU_P1sM&)#wf$zc{GY|oB{i^7q2u1E=%?v0p`!?PA!kLZb%NSe%2-bh~Nl`26K@anXBKSS`WUF*Pd0PZbJTo_+A% zj(BTQ)VBAeP{*p`Qen)rY5&>1d|DgwtF))HjPD>G9SgOXS~&@RXODKywr9wTYF6z) zUd9MI?C);{uCE_0dC>~EO047H{y?mI_Qy*Nj zNzjzwUv&h0f76NU`_7wTrn;l|f)&mVjEPXz3=@_5k7bq=_$QA?tu z)*?@Hn5yY-O}y0Ruoc6Arw%p#TC*#Pdb=-gh)x6_K{-zZH^65|*E=s7b)NV_*_AdI zPf*|aJsYd9ry>t>lq*qBBfhQYjNJWO@%m}=O!dIy3uWlMd5d-D9XpYggM55ur~H>< z`1gN9;bvdXWI`sSTCnD2^xdN#e`#18N||1{VC z(+C950u61srESEM&RYZ&WPy|$B2oJh+cEA4IAw;irrR|CZVw__jGYLg)8^1b01 zO2qdL3*&fzHwo?D85H|YTIEJlJ3l{LW2(=J-)&LSq+W1QFDX^0<@WusE6iMc-O#W3@?;9-W;Pf%Zv zb1*)8SJ`G_Zmu7Ek8{31t~RZUrS9RUTxO2RWO3fhlP17>76&~;Sv-8*ezE1286-%z z{-*Hc2JsJl-mLH>1Lr&^f5A|k+x7xyH3}yF-M-q}lW>2Ezxi#7n00b=?ekPu-2aK_ zb1LWWU{=Iv&8Z_{=ZmJ>Y?DWP*_Eri?rkCQ!Yr1IHp2SYKi2P=nnHp-^TxG?;<{H< z6enlkyye{6Y*%1|zi)eH9RR;@qibQ)H3j(dGtWXe9au+>^Eq+cZ|OMxgSthi?;Rh% z*7GR*KsP7tjSk}CjlAutsN)63Rj%KSy#Cwt?5Qn!)HiIWicqyP@oSrywM}aDx5Y=~ zlxY;TCwu!DzH_IJfYT|jA~Eyl?WaTC;?3Y4{Y6HPFzv4+#Z1;A&eAnM6!mSW+b`Y8 zs1-9g&h~lru6RvdOOIBTZA9JXwfudRMbp`t5YPr;xn@x7FzbADboN{@c%OUEKYqniAOC0=|$c5gvmDD{| z^>Ikf1!A^JZCQ|)Mcqohmz?46c+$V!x(-8Y-bB>(gP#la#tnHCTL50afY(x)ErxvX z=mz&`$X7JI#iakNVl{^CG^_P6`{!_C#Vy!Db^BOe5Ccv3lQY&@a*2^!Y;j9E6nW7S ztI7hAKSPY^OxpHQ2Uam->Hv-sPjNX;NR-W)GJtS_q|e=dcBsu%3Ih(-0;Sv)8*T# z&q7u(eqSRo=Ys4WMRpV3QLo&(z*rdTd2r;UyR1fkLEcjRifZt!4K;5>vXKWm zZFhQ8OZ+!-2A8Mdb6QpRA8>QQIXgJ~S)C6wtM^Im)&#Hhanz}NbJR_J+dPBSTj6)u z8CBr-@Wrpr?EiVF8ukHSf(TdQXA9;yZU=q{xG&^%M1%;g2;$_@> zI9YTJ^7AR@ALmO@=bMX1l% zlOZ;gyLAKc+scw2+FvLB@$>m5d3T9x8L;Z{RAu5Ee%iI%6?|5$#KwB?#yu8`{lg#r zq@J{+HKHb+u*cP!U76n0+w5|4%>f_kNtaw(CRu{|Mb;ya^QF{nzsjYu3-yQEZ!L90 zY!OcfMQwBPp((AtAAdfoEgqs?Hf)d5(-P{5RP$^;j{M>B_9ZF2eCpfpH_=ub@vU7) zUh$YAw1n@!=zDsKxPMi2u6}p}yVq+{eE699I*v6x&BTnFFvsO%{v!UZa1q(^u$p)! z+pl+s!%w8=HH5B1owYChpk_oR@d7vBHu+pjeN(*uJU`@1Tv7Quvqm7E`^^c_oq{~N zdyDamNj&8L)2b}ZW2o=cidg}g$B8Mvpx7EHgg6%Scv1>GBPaL8yf1Z3V$j@Iwn9b4DC7j8wU;Xm;x&O=S*x9*a zvtQBQsH+BBGWDs$DTTLNpibSvpC2E620MT9Q)3o*ERG+2USYM3IIGr-_t2O`oP}YJ z8t3D@btJ018;0w?&o|1jgT4P1GU!_50Xv*%)03t|Ozg-|Wz{syis}?H+Pw++W%=mb z@P9KVWP!soI~EGA;(fQvt(`JHin^`t8U0W)!mPj-@;0g_)MX*MbJKVHeL<2>{b*e0 z3(2}0kG>-AKRao*IG;KUUT$7GYbLeV-TV324|bhuQ_MdLJ5N>V_<3e82^N1$sVwnE z-e8jJzZG}@e3ExJcrB|p($gh@Ls!hQUZuOU|6J5R$Y;+;SulEE?5{%~c| zQBS=8`vn5AHJF8t21B9ba%wM5@oR!V?vflkd4`!1bvYG9&5S)o?bqJ8w-(-~_U2>T zW_baZPO^-dGZi>4Y|5L+I8EXv8AZpuPXf*m-dCA{bI#q9IyNVm1eI$m#>@xbkjb6g z`Wk+Oe<9G+82&D{IP|aw&b@zSN#Pp!Gh_FM;oE^Do|Zp3E&{(SF>8zQ*|Th%@o+Z= zo^Vv(w@#=JvkKk~((qDX?JWI~n=^Q+VZ;5*RFKz?P_|$D-|R`XY<8w%@t5XVcc{JX zi1U~z)DvW_t-G#(C(v?DX&f%rzpqSNFEqNpnq24^ia7tSN#c|`K4;{z2zl@>@|S0* zRiPeJbVZuUNe2#A(;2aPEAY$68K<|sp&r4qyo#6LOH{lg^u7|#-Auu@{otL~D=JA$ zzzo@f@4GxN%_44&yi|kkdE(eVGmI=nU1D712+M_|saq(uQc5bbzYZol8?$QezwyZo zS4F>$!!XT+$A~XBSC{|VMuLmC#@^Y48K9o~PwalqfNv`Pao~0o_^qgwS4Zuqzgp~! zj>q7Q4(+(z@qs!{CZ1F%C7c)6QF^OyQ(sR&+hs-I-r9h$g;#N16@C&Xrs#h#8#*IT z9ekZtsZFg^3A+wkjx{1riij<#=xLyy@~5j)-(9BOpkPnt(`ewK5e;Ls0+0tN>`s~2 z4IUuryR+Lm;+Kn-^*%I29{w}C`8{S~RyrQi3_Z=xirIVp>PO&>d3&AO_TWBCH}-y7 z2fQI~v$P_OItB6XWU_jwmAQf8xRnUz+@@4=S>+$83pcybn7A z+m$+%EvC#yeu$a&jyj%e#C zi+1Y!*!XdiiVeGu^m`QQPemWi&6JdJ?liZzPxPhsu7K55)Al32jB@cDY5;y`R>Y!W z)MrXAnu;uVhy3_&m~#GKtb>(IuoCv=)!=x$qG;lCADR7*%OZ|Me@gCtZ!coox*jg6+VASDm(U9fc6TwmHTe|4D+F^w{84^N~+wD!Pt- zO8lW=4=?RagPln!zh8V9@sMH4vompS-n4D{fcrL6aFgekQ=h6=dP5QH{J+NFe|C`g zzwf+d=Gn9F&SC9!=5%-LD`riveyoiB?HMojuoHRys`SGXYk)u9-)J+{!WH zY<=Ketv~#MX-C(3wNE7A+q_k|Z-{(h_t4?DkgtCGFjT)ff|w~r!~W>NKmHV6ch2Z7 z?DyrU8i!5b(H1ox_4q|yA1|BOeBA=SJnZ}{J0JMzt1~7BgTGO`ajSSOu0!6v%wz-X zNOx+aeM%(y12&hwN`ZfpO>L#IQLI0mKK9sJ?9a#m-RB0>F=}>JNuLL`m)6a>ur&es z)%N0wYk};{h$}r_+HBsre6rat)-T1aiHpVcB)d$uUW7bAeW`m3W|G(1hV5aJFw=6^ zMx~vY>9av3LDD9gwWA~7d=MXd;%)|w??L|k(lxSq8@1oR5hDM`h`nyLQr-mcY(+wH zzkZ>A>z=_~saeQ7PIK>!!8xlcww2Y!48#q?>VvPKUNp$qNBJA}{o5qN2%Bo+y%@F0 zY7h86iG&(if7C&8CDbV(kvOw5=BqlyQD4iU!JjvMBi@#3t+ySBE5k-5hs8f(^9Jjt zViWkgw68JRz(x8(n>R}%?@<^$QeLYLaY)_R;Jh#KL%iPlUn1iF8SL)(kts(Oc;(RwxD&;j3^Lw1RS}OeZ@oSPx!unuO2bha5HJ1JBFGrjk znwz@v8v8wupSle^!d_lr;10$eTex^FY`8q5MoKN*8_ z!p_nJu8rt)Nup~>&5+v3Tcr#?iCdS;-p@B-}f z=*npITkI_2TijzWz+>?ZwK|kZa7ktIkq@oZXFcYO=U+AAkJxuA^k6#tONZfcEHY_i=o~Vy}7=Qc)g~fZcX1RcDBKoo9t|L*yW?)u#e5Y zkId~HkzZ#Y>^LaaA;j`gN3Z}9q#nHvn;Si27XGNX}= zw<$W#*HC}nE325U(~ld{^3&OKo4h6G1$Bsv`Lv8cA7vVE?JBR4IFG95me$x)&!FVM zl9V{=5z+BD>IfXw!1=CselrQA&Ai`w@`#_r*w4tkL)}|0OE?dQ-?SY$OzAZEe2Zmz zkFFo5z5_F}9|eGi{F%S=X~SK1M$G~5I^benY0sz4vx(>BINVZq0sL_JM@6x~ejMZN zTEx!i{9Eoetbg4bj54WPZhB!N>LUD3L3+;3r>KW_#FsW=cE#k6fw@AV#5;d;*u50s z>?OtZ^F5!lIB((Wha&i#;_>?wvA+(+rz>P8vUXyr8IGAa{c+)VzrUD}@Sgqd)%#fr z{C0hw#ZhuKrrkb37m9(&eo z4f}uk^BW%`f9Nw=yNJMxCno&Z)#7G!4HY9!=IZ+)Q)jX9 z8~rW%|N2{0Nnp4!rgg${;s;!DSNxJjoQ={Zo!8-q?1iqsopuI1uvJ~pE#Uh@cC-De z5EsP$hFqR%P8=zTj+1p;Fsr7p_2HlzoKNT5eKUYd5<|{bbd8{{f%Wv+=Jjz5Ks$4fb=n8A!fg_j%;JBo?%m{z#n|ZiC>!mDl zHCyk*&qqDGPh4nYMl$stjQV|7aU1bDn`*v1Q$pYB(K*?hZD7~sz6Q5(|7ogYi|^y} zuHOqX(B~6hT5xaoY#-$RHB!aT6{#aKZU1Mn7V2Cg>(lykI(2zzufMPo`8wiNL=)aG zvX$rF8qV@N!%S2f*>meJ!Jc2s1M5G2XK>vmGcGR<$8{@=>r{Em?oZ>sFz`jKAME6A zZ=uepkhhVI4)~nP$^Mpeu|NLY@sn(+dk8aQ^^Uo$zfMq6dc@XyRbz(5lWXB$>ucPHWutHCy}$f8{N5_xb>BEOc;4?! z>o@pw@$L8e`oK?KO#2e=O?@#rr`6RA{ud8;%XaNp8i~5BX*_2W`W+Exb;Tqw>wJ=B z^xdVp{rG?CS6$-g94;`ektJr~jdMjhS>Q3{lk?Z39;7o#&gCtB);w3aJerNS;pRos z>cls#O|DqO;+}X;<7~twtI};7e|e$5vQS^gAN&7xSGeZMG}LR}hh%QDC&77#XQ73N zb5R@CI#1dPf4AOr!b3~yxHxg-u^-@(a^n?L632{-SB|1xz z1V19@rWY(iee1+xp3D{E)oEL8e3*~CxBNlaQ}DZ{zAr{*S5x2CvMB$rXMvx6#(Smx z1a1g7ui|EqVAce)C+M&0O?A90w`&K^{}(BRL*VJvJBPkIY(qSAW~lwwQLKGk`!+ET z_@JcNq$HQ+8NW!kg0I>!uKV-b!PNF`d9iDJ8MTRCcq5wok=hfS^`Bh6MV$d}z0MpB zAk3VTT_?`;<6qg?i|~HzOw*WtJlInP{EDygTod5ItlzhNKe7D=tNFJ5eCz!S%W%&5 z#Yr#AvtVzQ-K%e=vwp>sUxMp@HTYt*CU{)?d1GY_ke4}m)^V)2uzBILsGf^#o+v$f zbYXuUejars@chv-nXs#oVPZkYz!M#JZ8Ub=nyk=qs_J?O_y8t-&*7qURLcQRp zq~3W*5L+jonbchap7mg0=E_UN{hnMQIZKmx8-o}4*9fTZ<+Lpx;@bUjX2##betdG+ z1^&a}<=EC4(bRs_YEpQ}y8q$t?o%N*c8n?L$Ia%aFw^iwQR}|37g0}EkMS0YA&!6a z`j^lD%TIx|NWfdoQ*jYy?bv4cr!w#qiMoF6C#cKT)jn+``tAj1>Jk_~ypMejzZJaS z>ejb8Q7eGo9-hAuZOrmU?(Z@%t5C4pCzG9}Ra$yc#_bPy+{K0N`+&zz`0DH`s=@oq ze^VAOqE4lUd5S5{OJylibi zL|f~P{y65+eUo}QzxFPFhMAE}r-FK+GJ(fgB!?N*$n%@s8Xv<>RrY_Hbp!Ti_W6{3 zI_!ApM?2*l^oMo`>&woDJ$8RHJd1PV|0&Huu#)vpwsKi*;3>X)+8zY&_{r9L_mBDb zzn2H^={_Z4LFX_Xl1I65r7u7jnkm?SfQ)UUFxuDjQ#e zuBH?b@{Sn0`4-^a{HBi#zeIi9Xjkb&;%q!vt}q3CaOoTB`jmOJ zaxmh*m|^hA-zyMbR+=wL0xs^mP!N6teqn{u^Au(k_*R|#K`w2GM@t7SkP>F|-HnPD z4}-7MdFdvM^9$a{SZ5mvrt}_|QFj&nijFF_Nw{C>l)}AcrPOQguUd3h0=&EEp}?Qu zP5SeQ1O59T`wZ*(-xrHByi&s3sQ1ITvlCC?oHs{`KiLi3)WG@nEgrL)yEfgATnzj5 zD)uq5K0!UYU9HbAnNY9E-l^8B&2S&=b18F)-&j=ZCIWoYK3A|E3#>x1#NO2qs5 z97*(H_J(vgJWRYo-5ZuXuGn2eoC!Yh^Ny$xlYa0_wgl`Dyp8!)_#w>Nwzo&WiD`V= z&`0MGubPJ{OTHtH))cv(6HdVQ!4`X_U_JW6LyCNyrs4kp{ELuG*h<%S5`6z z^%nEZ^=7{!h_^5ywo^+8=jw8(_vsf{?@6K#X!_!<*m3vkVDz(_+K#anL%+SY{KwfL z=zAM;@>2OT_%E+LAt~&0c}j_zo21a^P%Jt9`#lz~&dn-c^p`plMl3-?8VSss1Re7` zfU|7eb(efWJasg5D#dKV>4MG#yNSe$?wY-*4ZM$3!SN95PU<+)DY5dVCiZV%Q_GOe z;4|h+)cK#mb7vlL-)RqZjnzB&4EVcy(|xh=)8-IIV_0wLV{e>q4}Hxx^pj|>bH4sg zK+Ikv+k(T`-^d?}EthDsI45-+cPe!rX`Vb(tqAYGIWcW>5%!18=MYaaZzPy(>L#9( zSh~lm0^k!h4SPQNYRwMcEE96XIuwX4C>)D*n58hfv>NvI-2Bq8EaH6_DsJwi%kp;z z!(J?7ah;PujLYV?JDwXnB4(t<)FFIr)XP;}>$f`*ll9B!`rEzecm6!c>=ZsXQTS#= z*|Pt|G2r3TqP$|_FNh6UYoCwLGY$Bzb{OZHS<#aZ+-X~VvSLvr8}EEaPFs(^TL~|E zvIO=!K4tJ$*h&BF&&Q}&Et$JO8u4kb-#Lo|X}I3f=%ocx{dOH?iu>n?9erSt2QVWRxec6tY z8_*9RoW3pBBN=t?Veco71&@Dwae|5I>;J_$@IvkK`j+%J(s4)Et1r|s`^Iwrv<=k5 zVX}X*eR5;QOkL;}jeQmgbg2fe9C>*3p_{0~YX2#{JSLxd7q89SnHNl4*E%UVx$VUH zX%jl)GWtHO@_Zg-<6Lq}9!gvFvi)nn9FLFcU+404mSzN|A{;-gWr#MTfE^K>fLc(J1@ZR zB?gAft6q*i`}X;}N^zYn71j$gb|QZH*^l}AjCx|8C?wV4b^S9=Gx0o;hsFAb$PanN z=hrT%2meuZMts+G5_E6MJu}ywm_m(*F?9~O-n~{kt+8(>#r#k1>;*sQZe8#P{Th!p zPj7PfCjNMjv^B?#@OisNC0#Lq-MvfsDG7V3_I)xg>URJAnsMb>yIL3~V@J&Qy)rYk zfP3C3*Nl*Wo#AW4P{ez)lfE5mf$vgo?^npOhrevu7e5&G$o{<@@#?Sm^Wt5{ao?7` zfo>OBzE`2qNIuFP+F$+P91)tjh8OW+UH?z70(3z zlgIG)A10>u+1iV*qVWH!dw;$l>iUxT!ug9X`Y-g0UWKrApMb~>hIo$8Okr149O_P{ z@hJ@_k)Ih&QM#XZ5BB8yLrXM^m^lBzMwwl>@AE-HVz3kV>-&pOA;0}J++Yg)!`5rR z%YN&kAM%vfMYBNSYaM)OCxrN?={>|~vpMzXY_NZuVnn@%<2fVV9L0Hl8W1#lH8DeG zr!&YynHNI}L%-nX36JI8dixNkWXsDA6(hFp|3p3<`ND&d7h0zFu_}Rq4 zbOFAb>U}#>f&5Ipr|(B`O+W6r(=3Vg4gI}M;UaaH*2RB{zC zZ_wXAx4i#4l!H>)>#gC;1diHL{C?3#aboncthF3fiF?y{=QUA zp0oJ^aduS8$v;HiGyP4R`q3QpDV}B8jI-Ii$RWt{0&%^cJTf$WKpcbM3#)6uubRde zo>^5+ybE>yF9soxYgm?^{0@Bgwlb4Hx0{fM>|OOO!kb-Jd;1S_QTGsce2V@m)D=oP zlf3(JKwvmK^Zr`B>gGb~{eDGtVuLlIF8DIq0=RbNI@vzqkF1~1HSdKV2S0jw?ce{- zLsM)2d1$dk-{8ECP!S0q)CH6W%gLbrxyB%}a#bVZsLGG-SHN)xv`aPz;X0OUet8;t zn|Nb}E!nc+J~8d%cP22x?0HR_@}h#6s-MAo&zBMNiL0rp1{{(#_S;nXDq`mN2X8#A zM}pVBw%NULcrGY!rj-d^H&x}hxA0T&9C2Y8cV`nnrli6!Dw6ur;$tl;f?4~Fb+ccO zJ~FpgQTrUw7aV_m)!0z#s5tTZehhF|i)KmAA0J|Vn21#Ld?QBqz@dau?{S|KZ8c{- z#{CHyN*?AB^G9NeMvw@LtLoNgTw?uRew_%;@2c$f8Z;}GJl_skaxF=y?mW7)4u#MySWC4GHAP7g}EYycl;@cJ#(>oX~|!?hZ9c(rLda#u)j`STd1vIsmc zC)C&R-I;oVndPm6g{hCDawKa>Ie5`oliu%JKwTxeXLo8uQJ1gyoKY)@y65jvAA^2W z!SBZPicenyPsoSm-o!o^U6FZjm;fB^D`kQHPx!gn>Rzm!s9j87jOVkCyVn}9eHW@% zBm7qk!v4iO=WC4t>mQE@Vl0rSM7!0l z*@!-xPsK9Jqw%`0<1GK+ybN8`b&~0?U%qInfF414yL0y{%&Pu2Y57OwS=^&qgRWbE zhuQFV^?^|EMmg;gvv#ke?jy5iuhmZPx91tF(s6Dx*A*3Kz~2qi*<~_=-S66siQ9=^ zsaPpL;Vtszv#N*YJSV}aGTBFN@xY-U{>Hc$BR_DxddaI3e#babbeRI`K>i<_m;9?+ zBQIrEuIUus`bT#jH4C3aK?Dd9XBt8#q3%l7DiErkfh48r|@@mlB=C!z1Vzo)a<4utlbFC zbm_3T!XSG;VO{>!dmTq=ahIb1!%WrfOJ5;zES{@vacTpPfro+;bExCW(XD}tW2ke( z2j1|#;2TaZu$7;_0&&bt+A?bo^{kL6Jzlzwjn6~HTv3k+U$xJa4?i@q;QrNUWfJ7= zS{?TIF3aQ8&a*P7&NF;Ls51Hs#ErJy`Yj3nadrAc%Oc{0-29#+X+r`v{o;9DJxbk5`FFC$iSohyl%8(VeG z>M`mkH+k9lcksMUS>!OAGt_0HvFJuVub+Rh`Gxv>&4+l=l}^N)m)RN8y{;curnCG> ze?1L-lBmzcCs?t5EqKb`6a9T{-gD5$tJhvXf3gRzV~&a6No`_QFS5PZQU(5B>WYX!eCgq^}qZm5$CnZZUJ{a^_GMRg*_V0+ROUNjvV0rQ+cXUbLsC=N#(2F zsQYI8IrU?vct1|Dt64xCH~&!qw^NCqHfT$bzasJG&)=%HeFyq8XmRn59%4Eol0;>| zn=tC*{QewAzuZwFEnV2@(kt;=8jFD2XRU15HF;(GDF z?D=<`($tJ~U2nsGIgWjv!_j2}^6Hgx*>AVtxpaeP$17IXgJ11SlCC<0>y$lKt#*|< zir;UQiO^=_Y+ULJEfU;}op3ar#bKFqZ{@yZ{qwX959hOfSU1aT3h@@5+7omLc4qZv zREf+F;{BfYK2fudIv0&NF*_%LwacU+vBPZr*df%(53kEVwpjHsG0|g3Hrb&+t3PkZ zCVt_um{az0c%A!;*Ry}JexyNm=Knpf)gG&--*W-}ElB5Q!4`)2=LgS7nGW8~W!>jj zDyXYGD=*cUF6h7i`y*rivr9K0?4R=avG4KS+NrA4(gu8aU;)<{>sxev(5~0I$Xmr+ zoZ=?nzF0mEebZ<3mcD-vza%IXw<$)viL7!Q@3;VcXlM0q$0NR86a83;=Zbg@4TYku z;2#dRdtXc76Z5WZXq9(r|L1PFWy<1=)dgjUBY(wTj(Ro$anq*YuwoiM_xy#l&zk7h zuUfj+A-4ZI0&AlB@v^?(O{`DuM~l2j>S>i+%zF^S@*6F?Wj^Eiz1*TdBG`XZshu9O z|9wvJJYVqSlR_7*MSV_uf_jnYefB;^$n^;kSNU;hQaR$|@M{{QRPlV^?4&Pp7uE5+ zSc;D~^o1Cg5)lpyepQ{&3tB^Oz)t;W7gLNwI%|GIRc$u;&P*NJW(P!fF;0)qk z9+Y7-liy$O(otghI#s9jw~VMSL@`_VxEOR@lDZR4UnC|&G*9vq?&remUAOv_S$moO zanfxzUNom#bAc1nZ%>PxM7(p?8p1YJp?)iJG~JNc{PTBI9{f_ZU)zoM==hwu;$Ld6Rzb}X;+5^Lf64N>`a>FqteeN;xB7E+_!<4-%rf|&2jlZs zyl}z(vwm(QF?UQ4M=oq2j#YwcJCtiruX6}72t;#=ZMwMxzN9V41@Zq z(Jz_um2AG_7$QCf{lRJlcUP8O0pDZt=2R2>Vea#Z9{Z868UJyVOP<8$XAuifcV(Jp zD;_(8eAHunp3aoF)a&_qa7q4gJYN#)>-|>@b>iJS^=;s1^hGROZo?kqn=QDRh`R~H z`ldiHh1YWJ)so$KzmdH1vA1zQt2W&~EQaSpjkflrbm@}ddCJG_S=HDVSD8cwXX=uf zlPLOFhPty|{8Pihr!g+^Ga}lld)Whpz$Vo99(7$#^!`Ad%cnkg8*zm?vTX~)?;!q7 z>rp-aVh44#IcPVr&(k)qx$86$^<}$*;nFfb&?A^ME42paU#vN7^D<}ZeZ8a8)e8Of zwCj>{3a+c@r}^d;@+7bxQ)#dFmIOM_&kUaFg?*S7m0I%%=Wv%4l{}&@iY=P|3+JGy z?6T&gE5v(WRJ?i!*5lx~qTP>xL)}|mu6FGseu&fxZQJ2ES5=EN)O_jte~lJ2pc6Kr z6E>g|rT|`HKqqWKCk%PpfKJ$ePFP{hfKJ$ePS}7>nD~HB80r-RI$^rtp$2rq26Vy( zbi!yrCu~3`Y(OV$KqqWKCu~3`Y(OV$5)J5t4d{do=!8Y#xwiqGumPR00iCb`ov;C& zumPPg^zjbpgbnC~4d{do=!6aEgbnC~4d{do=!6aEgbnC~4d{fS4|PB%Y(OV$KqrjV z6&%nB!}C}JI$;AkVFNm013F;?I$;AkVMPNvVFNm013F;?I$_>;&V4{9Y(OV$KqqWK zCu~3`Y(OV$KqqWKCu~3`Y(OUr&*=~7gbnC~4d{do=!6aEgbnC~4d{do=!6aEg#G{2 G3HyIctt>GB literal 0 HcmV?d00001 diff --git a/test/tests/unit/transfers/gold/nodal_var_coupled_out.e b/test/tests/unit/transfers/gold/nodal_var_coupled_out.e new file mode 100644 index 0000000000000000000000000000000000000000..f7166edd130fb6676e53f5a2966da065bb4c51e7 GIT binary patch literal 181064 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 TUo7n67i|B^U-19tezE@r)i}|6 literal 0 HcmV?d00001 diff --git a/test/tests/unit/transfers/gold/pull_hex27_transfer_master_out.csv b/test/tests/unit/transfers/gold/pull_hex27_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/pull_hex27_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/pull_hex8_transfer_master_out.csv b/test/tests/unit/transfers/gold/pull_hex8_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/pull_hex8_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/pull_multi_element_order1_transfer_master_out.csv b/test/tests/unit/transfers/gold/pull_multi_element_order1_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/pull_multi_element_order1_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/pull_multi_element_order2_transfer_master_out.csv b/test/tests/unit/transfers/gold/pull_multi_element_order2_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/pull_multi_element_order2_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/pull_pyramid5_transfer_master_out.csv b/test/tests/unit/transfers/gold/pull_pyramid5_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/pull_pyramid5_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/pull_tet10_transfer_master_out.csv b/test/tests/unit/transfers/gold/pull_tet10_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/pull_tet10_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/pull_tet4_transfer_master_out.csv b/test/tests/unit/transfers/gold/pull_tet4_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/pull_tet4_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/pull_wedge18_transfer_master_out.csv b/test/tests/unit/transfers/gold/pull_wedge18_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/pull_wedge18_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/pull_wedge6_transfer_master_out.csv b/test/tests/unit/transfers/gold/pull_wedge6_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/pull_wedge6_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/push_pull_hex27_transfer_master_out.csv b/test/tests/unit/transfers/gold/push_pull_hex27_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/push_pull_hex27_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/push_pull_hex8_transfer_master_out.csv b/test/tests/unit/transfers/gold/push_pull_hex8_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/push_pull_hex8_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/push_pull_multi_element_order1_distributed_transfer_master_out.csv b/test/tests/unit/transfers/gold/push_pull_multi_element_order1_distributed_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/push_pull_multi_element_order1_distributed_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/push_pull_multi_element_order1_monomial_transfer_master_out.csv b/test/tests/unit/transfers/gold/push_pull_multi_element_order1_monomial_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/push_pull_multi_element_order1_monomial_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/push_pull_multi_element_order1_transfer_master_out.csv b/test/tests/unit/transfers/gold/push_pull_multi_element_order1_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/push_pull_multi_element_order1_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/push_pull_multi_element_order2_distributed_transfer_master_out.csv b/test/tests/unit/transfers/gold/push_pull_multi_element_order2_distributed_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/push_pull_multi_element_order2_distributed_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/push_pull_multi_element_order2_transfer_master_out.csv b/test/tests/unit/transfers/gold/push_pull_multi_element_order2_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/push_pull_multi_element_order2_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/push_pull_pyramid5_transfer_master_out.csv b/test/tests/unit/transfers/gold/push_pull_pyramid5_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/push_pull_pyramid5_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/push_pull_tet10_transfer_master_out.csv b/test/tests/unit/transfers/gold/push_pull_tet10_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/push_pull_tet10_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/push_pull_tet4_transfer_master_out.csv b/test/tests/unit/transfers/gold/push_pull_tet4_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/push_pull_tet4_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/push_pull_wedge18_distributed_transfer_master_out.csv b/test/tests/unit/transfers/gold/push_pull_wedge18_distributed_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/push_pull_wedge18_distributed_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/push_pull_wedge18_transfer_master_out.csv b/test/tests/unit/transfers/gold/push_pull_wedge18_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/push_pull_wedge18_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/push_pull_wedge6_transfer_master_out.csv b/test/tests/unit/transfers/gold/push_pull_wedge6_transfer_master_out.csv new file mode 100644 index 00000000..9d1f27dd --- /dev/null +++ b/test/tests/unit/transfers/gold/push_pull_wedge6_transfer_master_out.csv @@ -0,0 +1,3 @@ +time,l2_difference +0,0 +1,0 diff --git a/test/tests/unit/transfers/gold/simple-cube-hex27.e b/test/tests/unit/transfers/gold/simple-cube-hex27.e new file mode 100644 index 0000000000000000000000000000000000000000..9a0a75da1595dcd868fadb99cdc248ff134c531d GIT binary patch literal 17812 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 literal 0 HcmV?d00001 diff --git a/test/tests/unit/transfers/gold/simple-cube-multi-element-order2.e b/test/tests/unit/transfers/gold/simple-cube-multi-element-order2.e new file mode 100644 index 0000000000000000000000000000000000000000..115d70ff16f209b8757fd74d3bcf8196b8129885 GIT binary patch literal 52380 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 literal 0 HcmV?d00001 diff --git a/test/tests/unit/transfers/gold/simple-cube-pyramid5.e b/test/tests/unit/transfers/gold/simple-cube-pyramid5.e new file mode 100644 index 0000000000000000000000000000000000000000..e77962a78c80fcc42f730310e90b9ef865ae39c2 GIT binary patch literal 36056 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 literal 0 HcmV?d00001 diff --git a/test/tests/unit/transfers/gold/simple-cube-tet10.e b/test/tests/unit/transfers/gold/simple-cube-tet10.e new file mode 100644 index 0000000000000000000000000000000000000000..baddc534af547cc5e3ec93e834830c3490dfb559 GIT binary patch literal 36744 zcmeIb2XvK1*Z6yq9IEstRf>QJij*Lop-TsmCcT6zgaDxn1W@T!x^xf_PS?|8PF?$cW|YKudTATfI|%#TL%qkk#Ged~Ztq}GFD?4UMn-98 zoK7L#2V&cFh~Md6*%>5_xxtJV)T7fN)8cY1PNrApH9cwZ>X~B)bm=s(dpFZ2b9DFU zKX{->NGmZK6gseXa8J`;kpHHGRPaWZklvk!bRRgVcmH7NOaXp1TqCX_Q~g7G&K`aH zcL~K>r;z@=gF`zF?LRPxxQt*8%y<&3)R3k}@4m#!+wr$P>Cf7)%dp=4BtEQNCmie< z+KXo2@dYTS!}y1Rc-|#+u!LLYBFD-nMQHEPzA_*mS%Z4r26ycpTI_>f{rh$QpnK5J zE(3!;sNH{PFrEet`e0D+ej$CkzmHD$_d~mfmM&GY`@5A2lrH^2sj?rGDOILyr2?fY zRw`GjQs9ST?+wTSX-zH-?bY8INXE9~Q*@;SnJ1qa6Zub??ps&p7taD3w%;# z<3Fj<4;k1$L~_9D%DPC|?agU3w}AS!Y4ILwkIzXx&7eWAjVC_YkLWu7rOGR1^#4Ad z=>B)(+2aeNo3dMfR(cpEuaA;v_Jgg=;oeHB_mE!Q;ig6A^AEZ?@B4H|{CB#=H=-di zlh8;$$hzD3+IghyRJV8EzOB0S9qdgG(UI}xL)jLq^rbHG_`59|yZ@mrF)g2}Vk@o0 z#%Imzn^pK9+Or{2#a=KHqjV|M zB+p7pj_|2z>=}LU)kT7k#&miABYD!xTMYREnc91eGgqSjC*Aw#rVr{pD6~_LF5NJZZrS)Dn$!qTgT^1odWPprdKax9By_JzSk={A<>ms)qnSRQ^}f4(N82LGHftZzLP;|cveTQ!f0URA~&)pDvj7nrZwml?OKvr9%ENy?K& zoqW2i{+V?JlxODS{4!!*?Pjl$!~hZTb9>Coq++X0JFs?U29>b;Vaw;`H#*0)SFzm|x>jCqt73zi_YKdxUM1{l zm@eh%)5L3N@fUf{I`&#?&xr7x-F|$io$<6YAKDYYZ8SSjM;GaHB*WYV+8JLbR_&aw z^s}M#$8=1rHjDo8O@FI$h4#M9*VNCg#!j6!f8?iOYTxu-cb^wbQU~r;JvHTNFLk7D zx{~pYj;mw0R+j0Ll%RG7zg03e?NhDq47`@E=}f)7%G8mUm+jYwS5N5r;NW!q{f=uT z^WN;N^`*N53I==h@z5O|W~|AnV=Ek3mH&eXoiM$0?A0k1^vO5N54lu4hmM?Ac~ZiL zNbQ+huj#H?({%h7Usjx#VW*ConBl8J%jCXdKDtKFAU!I{<;=IeF74EJ^w_^Q+o>vg zhlz80<&`bej#>{M%{>>of4Ot~!ZLZ+&#V`&Cmm?*nOZ(v?bqq&wg`Wu_N*@*bhzAZ z9roFoD+!BTDrCr;4abiR^TqT0M>%i*d~~rs*W`m<$D$wGc=`I19Q#fjUu(Dh$z{Ui zlt1k(+vgwk&({eUd@`&Ti&(~$Hth}{G z9WVLtjXXVv=_~lTP~&{ne+u=* z_xzqU)0Yq4tK(Ch`K?!t4Lae^_3n`~`o9(@yB^8nTJ4w9Y5UA{xpa*ISqBdYciHpG zcb=3=7*r@S3$Zxg5JLeEdT_-?+!N|=XdH2{a*&}qc%5(Qd zs_EJpPsbkn;c$E!6Jl2br$~Y*sr% zN-R6Hql$_g|6zu1pHEjuD$QBldi>`qw)N?EqyH?U5_a{=pvtaRv0dNXeeX&WXPvk& zwA(o$|H1^7u(e^`&9&yKuoknf7I?#Vol|37f7JZN9j>=m8k6?!vrxUgS-SGwT5ME1 z+b$jSQ7gCa`nGvqiA{~3bk>W*{|vm_y?{E{$NyHJn#0r%ca9^idw15$_oP2t{!Eez znfFQm;Ok-fNSdxe-9pmo{Tmb4Y)|FV2hJC8&rMvXJ;P%2mdkz^nSE{db$PWud*s2( z=*5}-M*Dy+u^oTb(Qglpyc!;&qYH&M&(u8Xwe_&;WTjo7Yq#M`7&4SB<;yN&=ZsMp+4E}LH=hKXX?Z%X-{oEox!)R*4{r! zt8b;%v*Xx$a(S@FiSM3oTc9KMyeR(0!q1h{|Buo+5C7+W*?e?lcvRN1#m8J%wMtyt zwl~D3Pk#~f^P#;hbok_pO|OjEsF(LY_3YNDFnxS|>x*-Ky{{9dF3a)qjm0`*WO=`y zm-FfqEB?B0F@2c!tiK&RfB9q``%Tx7Lz}PbgthbcOny>XM|?4A*@8^j^qv)6Doxnq z(r0^(`E}=!&iX>l9z&BZ7k|xf+izv^_}IEV-rko^4$HhaG-|g#cg5W^Uzs0#c5U5C zdwlY^+Urd6_T+VYJ+$q~>nCDPkN$DSFcqEk{L`GP8>v09gYs9s@m$4jKHa0K_Q=> zeNMD~+vBaY*HG{-(!02$=96gRBPXJfQ`F7UmUyI)~&SdR$6? zo;>7xezea+R?pV0wCz^LZ*Lx0?AM#G<&n(`tCw7!+4*4J!9V7`mLFEnJ|{R*Iqk1W zdwsRi>cyP>e$sC>m#cH-Hgp~3S?80s-|Bm2b-A~s&j_Dgt8euj>ANo3`jR)x+>XEQ z(g#0pb#_n|k3Mp{?d=qiZG6x1zW145Ze8Bp&*NJ^d%Tr)eYX8;-lkr4n&~6gs}}B4 z`?x;YasJGwZ*|p2hZl*c`l6;@akt&~yB}BA`*r4!di#^KzJGnwqY|gp?wy@(bz42m zw|{;_?f?n~nd(aoP9_jsuyPqoA zqk;A^EA zx6(&b2H&~&$fb`>oj-if;;A}eOqnweQm@x1pRCKLw(!21XX}!=fvNS*8dGuiw8OHU2F`$IoB??7+HSI=)E0Ch49x(1)59UvQ)MT@`=%^wqHqgH%+C zKXSG&8R~luwehv_-=6WrtmW#F`XR>e>b#bv)c)W%>ij-vX0<;yetmNa?->bMjt;)J zw2`*YClR{bnsnb}(+LIoT=_F&qK%Hk$Jk@KiZ$1Cm zJyRVGowe#n2=AlYC;WVi_tC9qs~mpTvYB3AH{XSHt;5vzR&^^+nbu6jjLvtkN+*v# z`FY~;zCY*HC)=-{bF}`4I%03|h-^bP>#ZMM`=ISNiN5^Wx_aimQ8yA*)Vme?eSD^{ ziaZ-VoiI__Gr1_!S%SIPG)?7TfE)>H_*l=zSP7x7yb6!V`IrJ_TdUB5bEoJtHj zl{a^AUv+Fxf!VeG%A||C#_JYSo#cAwJ7#aZf5=poT%Oq6DD4uiqsO=JY!Wh# z=b7)Ke@vOHl!{#uQ+0f&#p=w%dWC2H#dApCtp00jbX76m=86Ahem!6P+`Dz3ets)K zMHk=puwIj1>g1ee%a8THq&ySa*R0sSqZ)ndo5(SDTP9r;n zsvW-feib=tNpRi~OV!Rsf{+O{*+u%n!{MhXe zeoAPdJt?m&Prtf_j?MQ+=h|z=={@Dst*n%yu+}+dcDYkOM0;AhFO{2@L&qNcC~?l@ zlsde`obPH)tfJ5Ez7h2(X^k3DU_#`q^2BfLu)FcRXC?;pZKR;7IkGh#HQ-dyC*Q4H_c_&Ml-dn>HH?mkUeWb>LYsIR#^~phBuDvlTlRi=T z#m|5BsHXR3>(hK z(zick{kQwgo=pSu{8*=#vhO)(TAGiu4|G;}_CGAxF}i_DY`rJ_vqIZdblbdI-%E>O(Tq>g7;En}X)l}Pi1a3d&-$*BXx3Xu2$JO-t7V%{l4_l^BR{5xU<@@)2 zb?^RGahLP)omb&z->bMj>>MAzH|0ku3$l-G_OaNPGt(i@TQtsmW%yZeE3wzU^FE~@}j=ywo)s+Rh&&Kipy5EiK-W$_Of0C-N z>NaGgJ5{|fRnh8u=cD&{&ljJ62@7_;-BCu^ksI&-m^I=*<_Q7tE2)4EE|HKiNp)cT!9Svpo&&hu*4 zHk}V2(I*=QU;2G(jJC(0^VBRH(V*~a_2liz^}YKYU-*vmzK30Vt)9HyQ*LO5_n++X z-PdXjz0#!mahERZmCCyhGED86KHm;3?;nR!x_tZc{XErE zT#aY{-K-1ewb^&SWbZRRe{9^XwDU)-sj<`Dz0zL`Ya1> zs^hDkY`)rRqw?-&ZPwoJ8-lfV@-*hFhZA33N~_I2+0AscuPqxiitqKzei_$y=eftm zDds`FtK;tH(BAjw&-LL|byNP<^DXUtpWLe>lTvj1vP*8g!u$MS=Z)Xq?=fsVlGnX? z9OBdW#_7^)_2li=o|Vb_ZG5csr0iedy?rl~jo-Gb@9s`i9^&Zz9ye}C?#@r@*7iMD zTf0`;>ythH&O}4BWedE=0LE<}Y;`IQJvNEPbjr+@Q6m#~6Zz^wIhpO0ed9FV#(Z;72 zADZv-+PNiF)X2aK4eCeeiL2@q9=|=z*=LLBOlqRL&>66gt z7kR6zUCw*-xif?7@5xxx=dZ0hQk@v`XvTxoVLC9!=oNFDxwP&7hxsbIk7L(AZiSjU zY*TF&mvh_E{uiezPukD)@53W>e6zrI51&oYvBTDs`?>paec<`LkhP81somXPlp3D3 zo*w^khjN2=hU>i*woRKJ+*xg3ovU%@K$kku^tX^=8+Z?FcBn|s?K#yCr7vH3a<;l& zHu1BYr^gjg(F=1fyK^;B#mp~q;>Nty`sCWK_vTettYh}zZ}QFhGXM164m zzb0-f=Fz(AwH3DmL-dO3mwpQQDU;eYyWhIGopP$K_lLf?5bV+s(KX(kwmV4AkN7Na zi5cN)Ti3u;HR^2keNP%WKk&)@>do|?3cq|`=T<4TZRE#ymR~ENV_MW)A3Q0Wj;T7M z@8H~JRKfJ_%XIeBPFk-jXy&I<}Gs>fKWtlXa zo0aPIb--oUmo6PY_;mWZ&o}Es<$}xIbf;6{tMd4nl3 zEuc>P^?9pjmn!Ip#-ILl_~3Ts{r$&%pB-o2eRc2eJ%+qiPu^~iJM~GM-JOTLdhR>_ z-NyE%Dp&CxZ|hdtv(o#$Zjy?7QgMr?<0Iw$9&Wet z?st_^Cm-K?mak3)b#DLkzM*gKS8?s1emtz}-Phuge4e&$r5(@vK2q$Jf9C!(=e4@` zKJ=>H*%$EXS$kGG_d{R5ty^jJlFQ`rwf)K4Pc3cUA^70mp5srxTXI(?zF%;p@3>_3 zxPBLYsM*5x$}gw?+&4ou%$(~|R>t>PcHyI^ZIoRPYtKr%F3Ic3+iidJ&};3QR>-8z zUVh%{RGiy4zO7qn^{ur2*t(U@_teVyp6WH}(=)%5`d@dR*nCf(zqW3r9pC2ZKh>k3 zeZKnRpyTT7%TDiR`?SofxH$FX?aA#VkDJv`z7Do-rL~jL^FYnQqh9@9?|j)SE3#DM z_j$>r^Lq>DeBAq*bnI#G_i7upttXe>?_Dl z)~!r#$Id%>yYqWRpB>xp_4}-^-PWzNdR98Whk2#%{T<9}b?19nU%Nft%H;khuUkFu z`+Z^F(`DZvi_e~|Tj}h7`1+lFjo0eQ+hZq}T{CM^J$uj}i4FYlap>t2)Az8%-b(L3Hs?ah~X zpP#nwliuIa`ugqfXT86>ZROk7N!b1V);v4bY3KJ^+WR|zQF>dGd}Ax`4$~1m>OIRh zYq?J7ePr`HLo?|k3s#h!zcoT1e_pNexoM&LOs?5gKMLxl52kOuV_&}{@4BQ5(>p$! zoi*d^UfO)$&G(iuKhByM`yx~yUpi7v?o(8Izef*s)+4WuxO}om#X%#q{T-tHUd((S z--_=C&F{hHDDUqPTWIg^6WiN;E**0}i)VuCbLANxxu{WCE43wkbfar!UFyg?4H_N~ z3sm;|{iP`f7W}`{D*o3GQ&bu-f~m>{p$F zT#ny4mG^fDyY$7HYhpXd%5P`+?eX%QSN0^10eqI{xs? zaV~Z8mrIWudl>^&Y7s=C4R`wNP#y-f;5%Z)U_e z*Zoi(zo2&K$hKYd;ZK{cf6#w{^SZl57^ZnE_!dZ8IU+4Y3iB4FzYDE7(o9MV6)6~oveO3IV5{vwQsHWm_ zN1WWkS6t5bzv|?sy@Oh*!|Fhk`(#(m+Y3=;3!Iy_Sf^QFgR(YKh=XFlL6>#Fc zS$TgizDS)h*9CqzeE;g(!}o?`Pku+@Q4t5r{Ir-w%Kba4rj4`iQKhm3icy3VJZ7iJ$Y##yIOeW=NnTKca* z_Mv1y>(xH8ci-@)lkZh*o~v;0?-reS_tnw!a)s|~*jXQ6vaN21#-()Btl0M|Ov$M{ zE9d6_W@%a#e+1sfd={?zHPSSskc7@h#Wo!p?ri7ta2`=Q?KUXODL_Xy$yM9^}Ngr8+h2%;Yy9HGMeOEwjFR;ASxXH_HJbmxA-t(=!bKbRAp1YNI4cpy8 zMZOHk^>y$tb+qk!@BQmmm|ESZcuC#1vx*x$y3f=lj{REo|MvS3_N~%?H6uDq9f`|YbIO)t%JY4}FQ>fUUd24Q;yxakT6s>kY_#&! zpURW@>~FWz`>XIL$BJ%j=27FnZjq)?&oH&LO5FaFjh3q&4U0c6Gj6lm+N9r&Z4)P| zEuMr$TiUTsJAe4g)16fu$cWCxKOGXT4*k_F?CRa)`m5IS&NZyU?@@Et zx)@!kt&S^t_(biXyUulMtPWRuBepMKpQu{7ujbW>&~ag3o|`qXfq^68`M>TtEvMLPdgSP%4{wes|PF1;h5iL1cR z$9353*=@5-3fJr79(39_u(Mv#t!$g=vG|vJMemq~9(C~NIlp)Ra{j&VsuIP&1-~WC% z6ZOm>x>+DA$lv~F2l+P!-h`Zx3*_H{$OBeS{%TofxH<`6Zx5XhhEOZ<93Pv`}`p$~ipeW4%7Kg7`=LO|vqI-)xO2Erf+ zg~1?t`9S886=W_$U?@nQ$YosSG#o~N=*c|9=1BM)M!{$p17Tq8N$kX?*prxz1+gi% z-vt{#iJjP#_({wpcH=;7j|V%hj4AVxab+wS^9zu*k$L5X?BEYFk1ydXm;e)D63E}> z%UC^OGKkG7Fcqdj7)bo4!we8T(U*0Z38Fg-X2aJY>o^DI!aSG{3t%BEf^T3kEPQ`0<*)*3!b(^LtKnM^yK7)Atb^}hJ#2uDAUZO>9P>T=0GnVli2fE3y{#br ziT*a&4m&`O*$KN~H|&AEun+db0XPU6!r>5D{|-|Yd*a^_hyWQ=d_4-0AoCDgV)Gar zhZ7J5(IEE3{}_6`kOERdDo71!AT7KB=^#DFFs@$)BsTprLMF%zSs*K9gY1BgUk*p_P0BeT7vu)f z$pd-4_GHbBem?5wD8B{yL2MTQXIwLnB|`jZzCl~w*q8qae92c_sORe`3$C7`#haa_S67?nqvt=T{sly5}jE zfcHT3--nX4U-b5woSsiv?0taz1|;_+2V>zR$ofiuDJTv2?pFrNLLiib4?+6Mqsy3L z*RKLpgi25ussLkHJ>#SJCwf((8i=kOgO7d+u;*7Dm=FJ4lgqCr)PmX|$J7DFHL<}* zGvB&M;$i#}d(7F)rw1|wdP6VTKSB}p+D{QkTZ~ygW^MdXaEhN5j2J-=rBif zUD=472S32~un88yF4%!?Q{-yc3#_wWGh{UKV`xtK2=WtosBx`SCSDmut;b0g7wV(z_>}o=Ka6@*;3qxTT3YgQg4_RKX^bYyH|VftllWNbMu zH#()E3j{)0+QuNe0q320=4HLj^O}?QqHE?8h8zpyU_8h!1?T#gqVbVbi^Hek;@JMO0ZHRU~U zhw>blOL;$X9?YlwBSb_~!W_6_Om4=LO$$&M(x{Q-26gDSr!VpdhTJ%@2wL zwp`fuTZb$OVgq~T-7zil4fva`-*;YJzxA|d0@0V_UeKNrIDgG~xdFKm2Ei!!9&!Ob z8UIB$I}8QJ@cRLVgIq&IcN55*OM}E}Gi-sauno4u4*Fz0?!z@mqHQPgG28@M8=3zN z5IbF7 zkoZVkG)QcSv+tTJu^tVw4iaODwX6?umg|Aok~J~;6;4_5X*`UBRqzF%BlD2h8NDr( zC2nazbjHAH`eZH01#_QCqU{j)QGW!o7JtIev^n!IFS_Ys^)pR8|4;o6h4I>KyLUQgCOV$$I+EFz5}eQoWpW%oAX-Mh4IZhLpajO zD>;YF`Ac3IpE%F`q97WU!rSz31kNw>4AT-xT;&;7o?+x!MxJB+Vvu=}u^`umI5-I& zh=&9?1>(QVL*^s8GKU@@^EeG>;4HRe;^d#-GLZPKgL9Aw=Yji_-*R+TA^+y1c@7aD z$rpJa6hDo>j3>J0dFWHx2U3=t>JAdWw$Prod?0a0U;J|wKz;_j;38ZC@lSMQE{>kx zWy&%K(G?w;i|D-#*fe@FZf_7mB#Mz85 z{uP4!P=J2%Ph!saHh$*XCov=z=9-s^vcyngDc28TY;yDl@(tQp`v!cYrmu zxn-{7cWIjkOJFg~f%zbMtetP&?opQUR=^^VwObC1XYypBqyHmy>Hi7j{Fmd%l zNiLf_eSp+p^AsOUPLoH*Km0X$FM0qA$AQ`(tET4-*&BL&xO*OQ-KDvN!w*oG0d5;KbVGspO~lx(*~yB}XL&a(+nc zB!+K80g(6=q+jgyrCbaoeiCb9Cu?HjKY_BuPS%BanEg7dC$W||vrc}0fs7@(a*V{f z9&G_g=4kFC;nY{bIPVbV-advtv9}Z|LkapNUzY)EVD7EUk=4QKp=0JQddop^jLi2Y z<@bPbefR!AXDr5%ab1m|0(1k>n*kjFAN|6Rv!SC`SKbNCp0DW197GR$#!gqt=ox!r zt25L9`py2N%%v{WhXzm^>cDuI3_al^knyL&6qtr>8Gk0sf-+DVtle_-@26f1DuT>I z#*lvEXRaTcko({k^Y#OO%G;0u=!}3K5CW{bzvL@EnD@-lwDp5QAbOHBO@Tc0Pk|f) zBhe)WelID13~y8J21h~ixepwJB)9@Wa2#UL#h$r$kYD~ODPIH+#L-s>dD5$6-s1~X zW^6M~3(8|b#+NZ$g7}7CCYR9_J#$VlC!;IJ6oJ+tIU{S4j&V~VC8yd!TacWt3UXf1 zZ*pI34~L2H78C^MdSv=VPxP~c=!mZ9eF>8wH@?VxWo)s<`2MLOjd$MuX}x}!Yn`mW ztexoA1M_E{E}nD#x(TkGj_1+pMhh^ z5z&=%Q?6P58Ij?znQ|uNc#v3$9kC~NX8^Xurr0xiN{;%4(PsSE=YThXSjk%W=S0WalX0`AUOuGloTnZS0Ud7{WjqW04T$w+8WKjl_zBVz?|j%!>7l%qHFYI9L6=ea*V`_YlMl1#AY>m za-EV`{06^*#C$z452K5Y==*PKTZUuRwX3sBxd`*U>UIw`jC-@Lyu zwr{>`=`Tcm1Y|_#Ur32hddl~a0k8>VjDzUD4U$g>U^CPMiJ=_NHNn3KWQL;D8^Hva z2BjRG^2jFiXQiz(Fkkbm)dATBM2~sMHAChi^YCj6&w#m@IklrKkb2h$+t&+ewWaiEM&6>%W@s#Df2&61){}oI^Pka#H$paH>HxfO6 znK$W9P3FV#vTkOrWX*~~R>+Q?z?>K8bnu)*#Kfs@-+iU z42Q#;Kzz;l@i~(CNS}$bGjBP+B-XyU%34bdSlhqH&|mTdduClT(I;_~csk>nJvbR# z#?1{`K*kmyvH^N#?c$M1)LBn+o|7kja($6?lz5AttZfp=oYx>9dUed44^jVpT&Q(Cw~CRwMCAT zF~pvEj@V0iH|=?-e@q!a&9j88>%qV2F{TS$qt}eGj48Tu4E~xq;Gc;jF*oOrj4k7? zfwdf47#Rax2PDSgr(DO)buu-wBz+tsahB&Hv!_!Wxe%C--)&e2=Yd$t-lKU3mHrzb zYZw92cMG<`VeADUL3}j%AbG&t#4lg|lLsar#6~@I#XqFU16lj`AtR7~<~k&L%v0td z`etr2NAX{BhdE0A_^xZEDKDkXAN{ScAIJ^k;|?VD%zL+tU4uG0sCvhgW6+oDpfA2| z%FM}(I}|DB&}QV@$W(vR!=AYw5PRd3_$Im>W6n8Q4;h<$FzZo{y5z}+zw(c~-P~X73MQ&A8Y%`-C#K`0%r%C%H|2$$PSlXP&h= z&&;?o=67&|ewl~l7WXp$@<`5IlUqMh7u$B%8duHvh zCw5Iv9;S_4HMWVlv2WLd`5Swzhgk!etJsq~qmE~MlFu@ZYmSK=x5#7-|HF*NqX)>Ujxh7o`dvOnNo0kT5|>eFBp zj03BOj;ps<&-97TbQld`fS&I>$F6x_mGc~X#&%I8_I>uSCHG+IGd8d#-|@;l+ttsj zXY7fOqL%~22Ku5W_jPlBzd_lqaU|s@w3mYbAjc$c&7LoMavd=9B~SgySMzNA9{qP< z4|O@uvE{o~qG#S0?<2)-TI6>i`p&o}rx!T=jAe4~N9ysEWesFpu2W{Ob0KxPj^2dZ zK(3nW>jlRz@lWDhnPVAS_L9sRv_sa0@$k1fSUux6{u>?9t>Wl$tulL=rIC%H5!7W& zu6%D+QMNANbVnnZs@)Zl5@wP z4+_%akR5#f6NmrA z;Xirca@A^Cv%b8@{^Ljff6XQ3RqmfYul~2r|DeJD>p77B*E8Ea|M2!T0~X{wF`|JA}OR$osOq_t@Ro?QUs-fZv1a^IHwZ&8r@vAqY&eYph4 zeOm76a?h6gvD};GeN^uCve<#Z`}+Uw-?UbyUEXEoIiMOSs17xtCe#9XFRlZ1;UlOA z^`QYYghtR9nm|)%1|LIn_yi=aTS6<~J=1*u{wcC8w1f800Xjk_=nP$;D|CY(=ng%g zC-j2e&<8$)zR(YXp+AJc02l~^AQT3}5Eu%>U^t9`k?=W;g3&Mr!eA_ngYobMdI+h9BFfSs@lcEcXn3;SR{9DswMAsi0DVK@R2a1BL^ zASI-N)Q|?!!W)nd(nAKw2$>)=WPz-Z4YETHcoT9$F31geATQ*Dw;(?hfPzp6-iE?Z z1d75t`1qeS`~TgV`4waB-i6{&0^Wo7p(K0&rJyvFfwB+?<={go4;7#yRD#M-1*$?d zP*5FeKuxFxwV@8wg^!>f)Q1Mp5E?;aXaY^48GH=Q;S*>9Euj^(hBojiw1sxi9y&lr z=medi3v`8U5Cq+!2lRwq&>Q-|XV4e=K```(5EuXhVGxAEU>E{JVHgaD5ik-yhfy#Z z#y}X1g>f(*zJM>`E0_QiVG>M+DKHhL!E~4bGhr6YhOc1`%!PR{9~QtuSOnj|Vpsx8 zVHqrk6|fRk!D{#x*1%d=2j9VZ*Z>>hd-wr1!DiS3TVWe)haIpJcEN7g1AAc~?1uwz z5Hy6tAvg?2AOem;Bpid|Z~~$r8e$+8;@~8BARZFn6r6@La2C!%BAkZ{a1k!SWw-)Y zAqlRrMf?Wa0gUC3KmHsWAZ?l9I*(EG1>}W1@Gtrq*PV{?Tgdc~fpTS_%^x59nU_Dl zyED?39~dX#F_ZvlOACL{p9%RZl5yNwAS=iH49qQHG~|Xcv}Z#WfE4r*ivZ>uP>}ZQ zNa7j5u>o%Sh><_B^k@D7#4|vSBc|>g$hV;oeZBx1eptD+`>ra z>n~%yfTGlifjb|_yqTB(Lm=+{tcP3t`vAtlcqj$f3izEqd=2;z$@p&ZBamZQOE+T# z6oYrDqZjZ4ZTJwd2$-9{#G3W?XDRb6p#hMi{^WuGIk-hV5vl?HxkWaHM)XO06WZkX z_V5>F@v{Z82Gpe76uldiYf=6Lno}p2{jbAC+H2F+4Os`d1lmC}`ksKyaUgt5e_iAN zz^?x_xI)`U)IUW^eA+;3NC~?@`gYSNade@7nX=5SD;$RtfK4}jZkcy?By)1h+&Uwf zS3oD|2pI6cNgHzs=z+w)fJ4v{{OS7@eu1a-;cLJGh=gM>A7;_cK>nAI%s-$ll32Kj zQ$SDXK;H|HW9EXyZ65t%zZLDzC?f;DhB-hi-OSZ3bIt(dOaN;dAn_y~0gHjS`rk!< z1E0~(m;qy90%bqIZ#S`aw+F^|Gfy}3^}ml~{sA+PT|naX1q`ChI{E(wcPIzZ778n2 z74)G^Vkq$;UT&G!w@Asy-jr9v8c0PQ-2iL^h<{bFcaJuF47d$Lp)YL@XhQ~k3DYU} zLry~mgPa#rVHD-mz&YY3H{6mdBaz}OzPSg(5D=R`BZmQb?v`^v^ggFO9O_WUR)FY_ zMs7onfiTKjU;|}h=N<>+LE^CqiEr+&C@+JhlqbMM%HJa=AveN0VE*pO$j!(p$gN2H zcQYUVKdC3dPU_4v-~gnd{V(dQLBJlkNqHtRn)a8-y>J6|&`xdzEJV%*^21GjxaYz= zm`|SuId&~|^3t6W&<{9^Tm+IICn15dav;n7F^A{0lsU%W#Rd^~inj6J=r^a1bdmyaiW) zn7WB=fUFC75U`zkD&#rj4pmU!=i-9U`p5>wXF z&G_#9z&f~Pe2E`x<_<^78a|_Z2oA#$h=8LI3CG|#oB-nJX1&}pe`4e&c5dSAmiWbk z#GAOeC5~r6)hkfHiST hEM>mT+fA(9KLhpxWX#9FdIUU2vKDTMnauCk{|lBIgvI~> literal 0 HcmV?d00001 diff --git a/test/tests/unit/transfers/gold/simple-cube-tet4.e b/test/tests/unit/transfers/gold/simple-cube-tet4.e new file mode 100644 index 0000000000000000000000000000000000000000..ff6f4fdf1b8b0e78819655e2336a62db187d51bd GIT binary patch literal 15400 zcmeI233Qd!wSX@-3;_Wd1hI%l6a*Q=pn%E^qo53efT(B^NPt+9KoS&a)nKgywH4Gl z)CqC6PH1b-4_w-v3-uBDHU=_gw2Oy=#3rXYaGmK6~$T z{&RosV#LVN@mTuPjHVT2&nqs=FDoo9j>Q@{(zL3iv^c-As(8Lq`qQLrVQGF*NvTp6 zG*vDuFDkA~kI$sZR#!Z)7^4OUA~#FR`7`JJFlD6k7V0WXitt}t70orCmXU2qndZ6L zr+nsQZCP1-IscR^u(Me(eZ z&NUj&E?-z-3(c%iWmQE<*__n)e*A3?O<=de`6c)E@8a%5a&r6i z={u-TzrOwY(@$*{es_cR&@6SXPMupGEovMg7P_&&Bm^#WQyVj;yV<4WHB= zrG+LrwAt9tuPC4Iy1~{xvfnU$zEgQ-jU9<5T?>8iX>tI6npRfUThExnN82dACdQYI zecko6{igN8{Jz*Wo>k7SFQS)@(dR0B@RjAW$*0L6{-kXerxfP13)^O6GPX;;$+pFG zEUcNO@oaboLVZIX&GJW=%$ql@aNff7LD9zb{m>8HR&$Z9M_pf`cK@L-UHfURuV&UJ z<1HOqF!&Gsg%Y(*#Wt(FtgLuem1jdgKDXHrd^Ppn%CA~Hzs~c}WXh;1lZOq!Ds@)c zMAu>al)sdH`lhi6O;c9sKb{k9_;lOKpX~H~m%5eyjcxZlY+DqSR95BBE}T`BxyDjO z_O1>e>Kcz?>3%cH>?js*GyVI#g-@MWdUik=V)-W9YHa@{mh@Gb@^8(;r%o(AUq{(2 zeTQ6Wh@8sn^!tche*77JQ!Au<+g8tLKeLY^=m!#yPxUh;QM=}ysh=Kl zTO`j&)+|}uVb&Y(B%|?UiYcK!v z-&Q{P_v91L-+TOL?@Ui_sT|)a@6D>n&)zaKYMGCXbL`^?6%cELmBd z*m(R)C8O`lNo<z+*3T)bfDpc$`(c#@me-SK|T?AJ4L&4!sjnQ~C)ASagIUUcK*UsgwPQvctT zwoLTDK2beo#Y;K6?WosXm-M)E+y@28nnj!T9@y>?+IBY;-@JD{|2x-j^U`ZRDsEdH z*4tH^*lAv3M2{Elxqp5v`OH}x-+lQ0DarNMe)Zh*E$aK(yr}h+RU6iX`I&b8#%E4{ znkGf!Au5X+pGn#XS3cjb(Ik|EFZd6*H4 zKFJL)U(n;xGcU`G2fzPmTl>I4S1fwFLt_11*)PN~)u@Vwv&vUB=$s=#$KPL7#~7ORk@MSFcZ>%}Jj2${wwb zETnE5dM$sgO}+iD_k4uss^-p$j&F>b8=mjPqlLem{r3BPleM?3nltGAp~>`fbxP)4Uo7jIn>iODzIyH02deLW_q|v~UwhfT`~NztAS0*G>!OSt{6G45>7XtX zw}pFwe0&~rg55*jA1k;&B7HK{XY^v{z_teKfzJ5~C zlZo0n4-P-zw9lh;UQed)o!gSpyq()Dɖ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 literal 0 HcmV?d00001 diff --git a/test/tests/unit/transfers/pull_hex27_transfer_master.i b/test/tests/unit/transfers/pull_hex27_transfer_master.i new file mode 100644 index 00000000..c3ba5978 --- /dev/null +++ b/test/tests/unit/transfers/pull_hex27_transfer_master.i @@ -0,0 +1,73 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-hex27.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [received_variable] + family = LAGRANGE + order = SECOND + [] + + [expected_variable] + family = LAGRANGE + order = SECOND + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = expected_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = expected_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'pull_hex27_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = sent_variable + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_hex27_transfer_sub_app.i b/test/tests/unit/transfers/pull_hex27_transfer_sub_app.i new file mode 100644 index 00000000..6685f5a4 --- /dev/null +++ b/test/tests/unit/transfers/pull_hex27_transfer_sub_app.i @@ -0,0 +1,43 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-hex27.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = SECOND + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_hex8_transfer_master.i b/test/tests/unit/transfers/pull_hex8_transfer_master.i new file mode 100644 index 00000000..464670ff --- /dev/null +++ b/test/tests/unit/transfers/pull_hex8_transfer_master.i @@ -0,0 +1,73 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-hex8.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [received_variable] + family = LAGRANGE + order = FIRST + [] + + [expected_variable] + family = LAGRANGE + order = FIRST + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = expected_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = expected_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'pull_hex8_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = sent_variable + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_hex8_transfer_sub_app.i b/test/tests/unit/transfers/pull_hex8_transfer_sub_app.i new file mode 100644 index 00000000..ba51182c --- /dev/null +++ b/test/tests/unit/transfers/pull_hex8_transfer_sub_app.i @@ -0,0 +1,43 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-hex8.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = FIRST + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_multi_element_order1_transfer_master.i b/test/tests/unit/transfers/pull_multi_element_order1_transfer_master.i new file mode 100644 index 00000000..ee07233e --- /dev/null +++ b/test/tests/unit/transfers/pull_multi_element_order1_transfer_master.i @@ -0,0 +1,73 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-multi-element-order1.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [received_variable] + family = LAGRANGE + order = FIRST + [] + + [expected_variable] + family = LAGRANGE + order = FIRST + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = expected_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = expected_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'pull_multi_element_order1_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = sent_variable + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_multi_element_order1_transfer_sub_app.i b/test/tests/unit/transfers/pull_multi_element_order1_transfer_sub_app.i new file mode 100644 index 00000000..13950354 --- /dev/null +++ b/test/tests/unit/transfers/pull_multi_element_order1_transfer_sub_app.i @@ -0,0 +1,43 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-multi-element-order1.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = FIRST + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_multi_element_order2_transfer_master.i b/test/tests/unit/transfers/pull_multi_element_order2_transfer_master.i new file mode 100644 index 00000000..af441a6b --- /dev/null +++ b/test/tests/unit/transfers/pull_multi_element_order2_transfer_master.i @@ -0,0 +1,73 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-multi-element-order2.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [received_variable] + family = LAGRANGE + order = SECOND + [] + + [expected_variable] + family = LAGRANGE + order = SECOND + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = expected_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = expected_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'pull_multi_element_order2_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = sent_variable + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_multi_element_order2_transfer_sub_app.i b/test/tests/unit/transfers/pull_multi_element_order2_transfer_sub_app.i new file mode 100644 index 00000000..71679f46 --- /dev/null +++ b/test/tests/unit/transfers/pull_multi_element_order2_transfer_sub_app.i @@ -0,0 +1,43 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-multi-element-order2.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = SECOND + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_pyramid5_transfer_master.i b/test/tests/unit/transfers/pull_pyramid5_transfer_master.i new file mode 100644 index 00000000..cd248df4 --- /dev/null +++ b/test/tests/unit/transfers/pull_pyramid5_transfer_master.i @@ -0,0 +1,73 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-pyramid5.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [received_variable] + family = LAGRANGE + order = FIRST + [] + + [expected_variable] + family = LAGRANGE + order = FIRST + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = expected_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = expected_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'pull_pyramid5_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = sent_variable + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_pyramid5_transfer_sub_app.i b/test/tests/unit/transfers/pull_pyramid5_transfer_sub_app.i new file mode 100644 index 00000000..ddff5046 --- /dev/null +++ b/test/tests/unit/transfers/pull_pyramid5_transfer_sub_app.i @@ -0,0 +1,43 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-pyramid5.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = FIRST + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_tet10_transfer_master.i b/test/tests/unit/transfers/pull_tet10_transfer_master.i new file mode 100644 index 00000000..bf3f2564 --- /dev/null +++ b/test/tests/unit/transfers/pull_tet10_transfer_master.i @@ -0,0 +1,73 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-tet10.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [received_variable] + family = LAGRANGE + order = SECOND + [] + + [expected_variable] + family = LAGRANGE + order = SECOND + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = expected_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = expected_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'pull_tet10_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = sent_variable + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_tet10_transfer_sub_app.i b/test/tests/unit/transfers/pull_tet10_transfer_sub_app.i new file mode 100644 index 00000000..af1b85bd --- /dev/null +++ b/test/tests/unit/transfers/pull_tet10_transfer_sub_app.i @@ -0,0 +1,43 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-tet10.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = SECOND + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_tet4_transfer_master.i b/test/tests/unit/transfers/pull_tet4_transfer_master.i new file mode 100644 index 00000000..5a58bfe0 --- /dev/null +++ b/test/tests/unit/transfers/pull_tet4_transfer_master.i @@ -0,0 +1,73 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-tet4.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [received_variable] + family = LAGRANGE + order = FIRST + [] + + [expected_variable] + family = LAGRANGE + order = FIRST + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = expected_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = expected_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'pull_tet4_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = sent_variable + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_tet4_transfer_sub_app.i b/test/tests/unit/transfers/pull_tet4_transfer_sub_app.i new file mode 100644 index 00000000..d16f61d9 --- /dev/null +++ b/test/tests/unit/transfers/pull_tet4_transfer_sub_app.i @@ -0,0 +1,43 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-tet4.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = FIRST + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_wedge18_transfer_master.i b/test/tests/unit/transfers/pull_wedge18_transfer_master.i new file mode 100644 index 00000000..e42a80b6 --- /dev/null +++ b/test/tests/unit/transfers/pull_wedge18_transfer_master.i @@ -0,0 +1,73 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-wedge18.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [received_variable] + family = LAGRANGE + order = SECOND + [] + + [expected_variable] + family = LAGRANGE + order = SECOND + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = expected_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = expected_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'pull_wedge18_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = sent_variable + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_wedge18_transfer_sub_app.i b/test/tests/unit/transfers/pull_wedge18_transfer_sub_app.i new file mode 100644 index 00000000..44e300b5 --- /dev/null +++ b/test/tests/unit/transfers/pull_wedge18_transfer_sub_app.i @@ -0,0 +1,43 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-wedge18.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = SECOND + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_wedge6_transfer_master.i b/test/tests/unit/transfers/pull_wedge6_transfer_master.i new file mode 100644 index 00000000..ab044cab --- /dev/null +++ b/test/tests/unit/transfers/pull_wedge6_transfer_master.i @@ -0,0 +1,73 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-wedge6.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [received_variable] + family = LAGRANGE + order = FIRST + [] + + [expected_variable] + family = LAGRANGE + order = FIRST + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = expected_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = expected_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'pull_wedge6_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = sent_variable + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/pull_wedge6_transfer_sub_app.i b/test/tests/unit/transfers/pull_wedge6_transfer_sub_app.i new file mode 100644 index 00000000..2490a598 --- /dev/null +++ b/test/tests/unit/transfers/pull_wedge6_transfer_sub_app.i @@ -0,0 +1,43 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-wedge6.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = FIRST + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_hex27_transfer_master.i b/test/tests/unit/transfers/push_pull_hex27_transfer_master.i new file mode 100644 index 00000000..30338ec3 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_hex27_transfer_master.i @@ -0,0 +1,80 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-hex27.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = SECOND + [] + + [received_variable] + family = LAGRANGE + order = SECOND + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = sent_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'push_pull_hex27_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [push] + type = MultiAppCopyTransfer + to_multi_app = sub_app + source_variable = sent_variable + variable = received_variable_subapp + [] + + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = received_variable_subapp + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_hex27_transfer_sub_app.i b/test/tests/unit/transfers/push_pull_hex27_transfer_sub_app.i new file mode 100644 index 00000000..bb044e95 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_hex27_transfer_sub_app.i @@ -0,0 +1,35 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-hex27.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [received_variable_subapp] + family = LAGRANGE + order = SECOND + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_hex8_transfer_master.i b/test/tests/unit/transfers/push_pull_hex8_transfer_master.i new file mode 100644 index 00000000..2fb509c4 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_hex8_transfer_master.i @@ -0,0 +1,80 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-hex8.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = FIRST + [] + + [received_variable] + family = LAGRANGE + order = FIRST + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = sent_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'push_pull_hex8_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [push] + type = MultiAppCopyTransfer + to_multi_app = sub_app + source_variable = sent_variable + variable = received_variable_subapp + [] + + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = received_variable_subapp + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_hex8_transfer_sub_app.i b/test/tests/unit/transfers/push_pull_hex8_transfer_sub_app.i new file mode 100644 index 00000000..97a8f967 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_hex8_transfer_sub_app.i @@ -0,0 +1,35 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-hex8.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [received_variable_subapp] + family = LAGRANGE + order = FIRST + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_multi_element_order1_distributed_transfer_master.i b/test/tests/unit/transfers/push_pull_multi_element_order1_distributed_transfer_master.i new file mode 100644 index 00000000..936606dd --- /dev/null +++ b/test/tests/unit/transfers/push_pull_multi_element_order1_distributed_transfer_master.i @@ -0,0 +1,81 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-multi-element-order1.cpr + parallel_type = distributed + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = FIRST + [] + + [received_variable] + family = LAGRANGE + order = FIRST + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = sent_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'push_pull_multi_element_order1_distributed_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [push] + type = MultiAppCopyTransfer + to_multi_app = sub_app + source_variable = sent_variable + variable = received_variable_subapp + [] + + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = received_variable_subapp + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_multi_element_order1_distributed_transfer_sub_app.i b/test/tests/unit/transfers/push_pull_multi_element_order1_distributed_transfer_sub_app.i new file mode 100644 index 00000000..f1f2dea4 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_multi_element_order1_distributed_transfer_sub_app.i @@ -0,0 +1,36 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-multi-element-order1.cpr + parallel_type = distributed + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [received_variable_subapp] + family = LAGRANGE + order = FIRST + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_multi_element_order1_monomial_transfer_master.i b/test/tests/unit/transfers/push_pull_multi_element_order1_monomial_transfer_master.i new file mode 100644 index 00000000..b0c35d33 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_multi_element_order1_monomial_transfer_master.i @@ -0,0 +1,80 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-multi-element-order1.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [sent_variable] + family = MONOMIAL + order = CONSTANT + [] + + [received_variable] + family = MONOMIAL + order = CONSTANT + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = sent_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'push_pull_multi_element_order1_monomial_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [push] + type = MultiAppCopyTransfer + to_multi_app = sub_app + source_variable = sent_variable + variable = received_variable_subapp + [] + + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = received_variable_subapp + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_multi_element_order1_monomial_transfer_sub_app.i b/test/tests/unit/transfers/push_pull_multi_element_order1_monomial_transfer_sub_app.i new file mode 100644 index 00000000..64449cb9 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_multi_element_order1_monomial_transfer_sub_app.i @@ -0,0 +1,35 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-multi-element-order1.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [received_variable_subapp] + family = MONOMIAL + order = CONSTANT + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_multi_element_order1_transfer_master.i b/test/tests/unit/transfers/push_pull_multi_element_order1_transfer_master.i new file mode 100644 index 00000000..f2076a1a --- /dev/null +++ b/test/tests/unit/transfers/push_pull_multi_element_order1_transfer_master.i @@ -0,0 +1,80 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-multi-element-order1.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = FIRST + [] + + [received_variable] + family = LAGRANGE + order = FIRST + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = sent_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'push_pull_multi_element_order1_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [push] + type = MultiAppCopyTransfer + to_multi_app = sub_app + source_variable = sent_variable + variable = received_variable_subapp + [] + + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = received_variable_subapp + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_multi_element_order1_transfer_sub_app.i b/test/tests/unit/transfers/push_pull_multi_element_order1_transfer_sub_app.i new file mode 100644 index 00000000..240c92c2 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_multi_element_order1_transfer_sub_app.i @@ -0,0 +1,35 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-multi-element-order1.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [received_variable_subapp] + family = LAGRANGE + order = FIRST + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_multi_element_order2_distributed_transfer_master.i b/test/tests/unit/transfers/push_pull_multi_element_order2_distributed_transfer_master.i new file mode 100644 index 00000000..bb921238 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_multi_element_order2_distributed_transfer_master.i @@ -0,0 +1,81 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-multi-element-order2.cpr + parallel_type = distributed + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = SECOND + [] + + [received_variable] + family = LAGRANGE + order = SECOND + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = sent_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'push_pull_multi_element_order2_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [push] + type = MultiAppCopyTransfer + to_multi_app = sub_app + source_variable = sent_variable + variable = received_variable_subapp + [] + + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = received_variable_subapp + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_multi_element_order2_distributed_transfer_sub_app.i b/test/tests/unit/transfers/push_pull_multi_element_order2_distributed_transfer_sub_app.i new file mode 100644 index 00000000..e979a015 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_multi_element_order2_distributed_transfer_sub_app.i @@ -0,0 +1,36 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-multi-element-order2.cpr + parallel_type = distributed + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [received_variable_subapp] + family = LAGRANGE + order = SECOND + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_multi_element_order2_transfer_master.i b/test/tests/unit/transfers/push_pull_multi_element_order2_transfer_master.i new file mode 100644 index 00000000..ed5d6587 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_multi_element_order2_transfer_master.i @@ -0,0 +1,80 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-multi-element-order2.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = SECOND + [] + + [received_variable] + family = LAGRANGE + order = SECOND + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = sent_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'push_pull_multi_element_order2_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [push] + type = MultiAppCopyTransfer + to_multi_app = sub_app + source_variable = sent_variable + variable = received_variable_subapp + [] + + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = received_variable_subapp + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_multi_element_order2_transfer_sub_app.i b/test/tests/unit/transfers/push_pull_multi_element_order2_transfer_sub_app.i new file mode 100644 index 00000000..1a1e3dfb --- /dev/null +++ b/test/tests/unit/transfers/push_pull_multi_element_order2_transfer_sub_app.i @@ -0,0 +1,35 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-multi-element-order2.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [received_variable_subapp] + family = LAGRANGE + order = SECOND + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_pyramid5_transfer_master.i b/test/tests/unit/transfers/push_pull_pyramid5_transfer_master.i new file mode 100644 index 00000000..59fef242 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_pyramid5_transfer_master.i @@ -0,0 +1,80 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-pyramid5.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = FIRST + [] + + [received_variable] + family = LAGRANGE + order = FIRST + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = sent_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'push_pull_pyramid5_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [push] + type = MultiAppCopyTransfer + to_multi_app = sub_app + source_variable = sent_variable + variable = received_variable_subapp + [] + + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = received_variable_subapp + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_pyramid5_transfer_sub_app.i b/test/tests/unit/transfers/push_pull_pyramid5_transfer_sub_app.i new file mode 100644 index 00000000..e51c33b9 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_pyramid5_transfer_sub_app.i @@ -0,0 +1,35 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-pyramid5.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [received_variable_subapp] + family = LAGRANGE + order = FIRST + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_tet10_transfer_master.i b/test/tests/unit/transfers/push_pull_tet10_transfer_master.i new file mode 100644 index 00000000..d83aedd8 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_tet10_transfer_master.i @@ -0,0 +1,80 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-tet10.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = SECOND + [] + + [received_variable] + family = LAGRANGE + order = SECOND + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = sent_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'push_pull_tet10_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [push] + type = MultiAppCopyTransfer + to_multi_app = sub_app + source_variable = sent_variable + variable = received_variable_subapp + [] + + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = received_variable_subapp + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_tet10_transfer_sub_app.i b/test/tests/unit/transfers/push_pull_tet10_transfer_sub_app.i new file mode 100644 index 00000000..06c952a6 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_tet10_transfer_sub_app.i @@ -0,0 +1,35 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-tet10.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [received_variable_subapp] + family = LAGRANGE + order = SECOND + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_tet4_transfer_master.i b/test/tests/unit/transfers/push_pull_tet4_transfer_master.i new file mode 100644 index 00000000..c384af47 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_tet4_transfer_master.i @@ -0,0 +1,80 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-tet4.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = FIRST + [] + + [received_variable] + family = LAGRANGE + order = FIRST + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = sent_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'push_pull_tet4_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [push] + type = MultiAppCopyTransfer + to_multi_app = sub_app + source_variable = sent_variable + variable = received_variable_subapp + [] + + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = received_variable_subapp + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_tet4_transfer_sub_app.i b/test/tests/unit/transfers/push_pull_tet4_transfer_sub_app.i new file mode 100644 index 00000000..4dc1beda --- /dev/null +++ b/test/tests/unit/transfers/push_pull_tet4_transfer_sub_app.i @@ -0,0 +1,35 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-tet4.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [received_variable_subapp] + family = LAGRANGE + order = FIRST + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_wedge18_distributed_transfer_master.i b/test/tests/unit/transfers/push_pull_wedge18_distributed_transfer_master.i new file mode 100644 index 00000000..37bcb571 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_wedge18_distributed_transfer_master.i @@ -0,0 +1,81 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-wedge18.cpr + parallel_type = distributed + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = SECOND + [] + + [received_variable] + family = LAGRANGE + order = SECOND + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = sent_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'push_pull_wedge18_distributed_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [push] + type = MultiAppCopyTransfer + to_multi_app = sub_app + source_variable = sent_variable + variable = received_variable_subapp + [] + + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = received_variable_subapp + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_wedge18_distributed_transfer_sub_app.i b/test/tests/unit/transfers/push_pull_wedge18_distributed_transfer_sub_app.i new file mode 100644 index 00000000..6582bd2f --- /dev/null +++ b/test/tests/unit/transfers/push_pull_wedge18_distributed_transfer_sub_app.i @@ -0,0 +1,36 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-wedge18.cpr + parallel_type = distributed + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [received_variable_subapp] + family = LAGRANGE + order = SECOND + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_wedge18_transfer_master.i b/test/tests/unit/transfers/push_pull_wedge18_transfer_master.i new file mode 100644 index 00000000..39c0750a --- /dev/null +++ b/test/tests/unit/transfers/push_pull_wedge18_transfer_master.i @@ -0,0 +1,80 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-wedge18.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = SECOND + [] + + [received_variable] + family = LAGRANGE + order = SECOND + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = sent_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'push_pull_wedge18_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [push] + type = MultiAppCopyTransfer + to_multi_app = sub_app + source_variable = sent_variable + variable = received_variable_subapp + [] + + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = received_variable_subapp + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_wedge18_transfer_sub_app.i b/test/tests/unit/transfers/push_pull_wedge18_transfer_sub_app.i new file mode 100644 index 00000000..05b59272 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_wedge18_transfer_sub_app.i @@ -0,0 +1,35 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-wedge18.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [received_variable_subapp] + family = LAGRANGE + order = SECOND + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_wedge6_transfer_master.i b/test/tests/unit/transfers/push_pull_wedge6_transfer_master.i new file mode 100644 index 00000000..a76ce784 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_wedge6_transfer_master.i @@ -0,0 +1,80 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-wedge6.e + dim = 3 +[] + +[Problem] + solve = false +[] + +[AuxVariables] + [sent_variable] + family = LAGRANGE + order = FIRST + [] + + [received_variable] + family = LAGRANGE + order = FIRST + [] +[] + +[ICs] + [set_variable] + type = FunctionIC + variable = sent_variable + function = set_variable + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Postprocessors] + [l2_difference] + type = ElementL2Difference + variable = sent_variable + other_variable = received_variable + [] +[] + +[MultiApps] + [sub_app] + type = TransientMultiApp + positions = '0 0 0' + input_files = 'push_pull_wedge6_transfer_sub_app.i' + execute_on = timestep_begin + [] +[] + +[Transfers] + [push] + type = MultiAppCopyTransfer + to_multi_app = sub_app + source_variable = sent_variable + variable = received_variable_subapp + [] + + [pull] + type = MultiAppCopyTransfer + from_multi_app = sub_app + source_variable = received_variable_subapp + variable = received_variable + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] + +[Outputs] + csv = true +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/push_pull_wedge6_transfer_sub_app.i b/test/tests/unit/transfers/push_pull_wedge6_transfer_sub_app.i new file mode 100644 index 00000000..d5b1a029 --- /dev/null +++ b/test/tests/unit/transfers/push_pull_wedge6_transfer_sub_app.i @@ -0,0 +1,35 @@ +[Mesh] + type = CoupledMFEMMesh + file = gold/simple-cube-wedge6.e + dim = 3 +[] + +[Problem] + solve = false + type = MFEMProblem +[] + +[Formulation] + type = CustomFormulation +[] + +[AuxVariables] + [received_variable_subapp] + family = LAGRANGE + order = FIRST + [] +[] + +[Functions] + [set_variable] + type = ParsedFunction + expression = '42 + 100*x*x' + [] +[] + +[Executioner] + type = Transient + dt = 1.0 + start_time = 0.0 + end_time = 1.0 +[] \ No newline at end of file diff --git a/test/tests/unit/transfers/tests b/test/tests/unit/transfers/tests new file mode 100644 index 00000000..56c40cb8 --- /dev/null +++ b/test/tests/unit/transfers/tests @@ -0,0 +1,226 @@ +[Tests] + design = 'syntax/Problem/index.md' + + [./PullHex8Transfer] + type = 'CSVDiff' + input = 'pull_hex8_transfer_master.i' + csvdiff = 'pull_hex8_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer from MFEM to MOOSE using first-order hex8 elements.' + [] + + [./PushPullHex8Transfer] + type = 'CSVDiff' + input = 'push_pull_hex8_transfer_master.i' + csvdiff = 'push_pull_hex8_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer between MOOSE and MFEM using first-order hex8 elements.' + [] + + [./PullHex27Transfer] + type = 'CSVDiff' + input = 'pull_hex27_transfer_master.i' + csvdiff = 'pull_hex27_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer from MFEM to MOOSE using second-order hex27 elements.' + [] + + [./PushPullHex27Transfer] + type = 'CSVDiff' + input = 'push_pull_hex27_transfer_master.i' + csvdiff = 'push_pull_hex27_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer between MOOSE and MFEM using second-order hex27 elements.' + [] + + [./PullTet4Transfer] + type = 'CSVDiff' + input = 'pull_tet4_transfer_master.i' + csvdiff = 'pull_tet4_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer from MFEM to MOOSE using first-order tet4 elements.' + [] + + [./PushPullTet4Transfer] + type = 'CSVDiff' + input = 'push_pull_tet4_transfer_master.i' + csvdiff = 'push_pull_tet4_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer between MOOSE and MFEM using first-order tet4 elements.' + [] + + [./PullTet10Transfer] + type = 'CSVDiff' + input = 'pull_tet10_transfer_master.i' + csvdiff = 'pull_tet10_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer from MFEM to MOOSE using second-order tet10 elements.' + [] + + [./PushPullTet10Transfer] + type = 'CSVDiff' + input = 'push_pull_tet10_transfer_master.i' + csvdiff = 'push_pull_tet10_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer between MOOSE and MFEM using second-order tet10 elements.' + [] + + [./PullWedge6Transfer] + type = 'CSVDiff' + input = 'pull_wedge6_transfer_master.i' + csvdiff = 'pull_wedge6_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer from MFEM to MOOSE using wedge6 (prism6) elements.' + [] + + [./PushPullWedge6Transfer] + type = 'CSVDiff' + input = 'push_pull_wedge6_transfer_master.i' + csvdiff = 'push_pull_wedge6_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer between MFEM and MOOSE using wedge6 (prism6) elements.' + [] + + [./PullWedge18Transfer] + type = 'CSVDiff' + input = 'pull_wedge18_transfer_master.i' + csvdiff = 'pull_wedge18_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer from MFEM to MOOSE using wedge18 (prism18) elements.' + [] + + [./PushPullWedge18Transfer] + type = 'CSVDiff' + input = 'push_pull_wedge18_transfer_master.i' + csvdiff = 'push_pull_wedge18_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer between MFEM and MOOSE using wedge18 (prism18) elements.' + [] + + [./PullPyramid5Transfer] + type = 'CSVDiff' + input = 'pull_pyramid5_transfer_master.i' + csvdiff = 'pull_pyramid5_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer from MFEM to MOOSE using pyramid5 elements.' + [] + + [./PushPullPyramid5Transfer] + type = 'CSVDiff' + input = 'push_pull_pyramid5_transfer_master.i' + csvdiff = 'push_pull_pyramid5_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer between MFEM and MOOSE using pyramid5 elements.' + [] + + [./PullMultiElementOrder1Transfer] + type = 'CSVDiff' + input = 'pull_multi_element_order1_transfer_master.i' + csvdiff = 'pull_multi_element_order1_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer from MFEM to MOOSE using multiple first-order element types.' + [] + + [./PushPullMultiElementOrder1Transfer] + type = 'CSVDiff' + input = 'push_pull_multi_element_order1_transfer_master.i' + csvdiff = 'push_pull_multi_element_order1_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer between MFEM and MOOSE using multiple first-order element types.' + [] + + [./PushPullMultiElementOrder1MonomialTransfer] + type = 'CSVDiff' + input = 'push_pull_multi_element_order1_monomial_transfer_master.i' + csvdiff = 'push_pull_multi_element_order1_monomial_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer constant-order Monomials between MFEM and MOOSE using multiple first-order element types.' + [] + + [./PullMultiElementOrder2Transfer] + type = 'CSVDiff' + input = 'pull_multi_element_order2_transfer_master.i' + csvdiff = 'pull_multi_element_order2_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer from MFEM to MOOSE using multiple second-order element types.' + [] + + [./PushPullMultiElementOrder2Transfer] + type = 'CSVDiff' + input = 'push_pull_multi_element_order2_transfer_master.i' + csvdiff = 'push_pull_multi_element_order2_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer between MFEM and MOOSE using multiple second-order element types.' + [] + + # Order 1, Parallel. + [./PullMultiElementOrder1ParallelReplicatedTransfer] + type = 'CSVDiff' + input = 'pull_multi_element_order1_transfer_master.i' + csvdiff = 'pull_multi_element_order1_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer from MFEM to MOOSE using multiple first-order element types (parallel).' + min_parallel = 2 + [] + + [./PushPullMultiElementOrder1ParallelReplicatedTransfer] + type = 'CSVDiff' + input = 'push_pull_multi_element_order1_transfer_master.i' + csvdiff = 'push_pull_multi_element_order1_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer between MFEM and MOOSE using multiple first-order element types (parallel).' + min_parallel = 2 + [] + + [./PushPullMultiElementOrder1ParallelDistributedTransfer] + type = 'CSVDiff' + input = 'push_pull_multi_element_order1_distributed_transfer_master.i' + csvdiff = 'push_pull_multi_element_order1_distributed_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer between MFEM and MOOSE using multiple first-order element types (distributed).' + min_parallel = 2 + max_parallel = 2 + [] + + [./PushPullMultiElementOrder1ParallelReplicatedMonomialTransfer] + type = 'CSVDiff' + input = 'push_pull_multi_element_order1_monomial_transfer_master.i' + csvdiff = 'push_pull_multi_element_order1_monomial_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer constant-order Monomials between MFEM and MOOSE using multiple first-order element types (parallel).' + min_parallel = 2 + [] + + # Order 2, Parallel. + # + # Notes: + # 1. pyramid14 is not supported. The multi-element order-2 test cases only contain hex27 and tet10 elements. Wedge18 elements are therefore tested + # separately. If pyramid14 is added in the future, update the multi-element order-2 test case to include all four second-order element types. + # 2. monomials currently supported only to first-order. Hence no second-order tests. + [./PullMultiElementOrder2ParallelReplicatedTransfer] + type = 'CSVDiff' + input = 'pull_multi_element_order2_transfer_master.i' + csvdiff = 'pull_multi_element_order2_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer from MFEM to MOOSE using multiple second-order element types (parallel).' + min_parallel = 2 + [] + + [./PushPullMultiElementOrder2ParallelReplicatedTransfer] + type = 'CSVDiff' + input = 'push_pull_multi_element_order2_transfer_master.i' + csvdiff = 'push_pull_multi_element_order2_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer between MFEM and MOOSE using multiple second-order element types (parallel).' + min_parallel = 2 + [] + + [./PushPullMultiElementOrder2ParallelDistributedTransfer] + type = 'CSVDiff' + input = 'push_pull_multi_element_order2_distributed_transfer_master.i' + csvdiff = 'push_pull_multi_element_order2_distributed_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer between MFEM and MOOSE using multiple second-order element types (distributed).' + min_parallel = 2 + max_parallel = 2 + [] + + [./PullWedge18ParallelReplicatedTransfer] + type = 'CSVDiff' + input = 'pull_wedge18_transfer_master.i' + csvdiff = 'pull_wedge18_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer from MFEM to MOOSE using wedge18 elements (parallel).' + min_parallel = 2 + [] + + [./PushPullWedge18ParallelReplicatedTransfer] + type = 'CSVDiff' + input = 'push_pull_wedge18_transfer_master.i' + csvdiff = 'push_pull_wedge18_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer between MFEM and MOOSE using wedge18 elements (parallel).' + min_parallel = 2 + [] + + [./PushPullWedge18ParallelDistributedTransfer] + type = 'CSVDiff' + input = 'push_pull_wedge18_distributed_transfer_master.i' + csvdiff = 'push_pull_wedge18_distributed_transfer_master_out.csv' + requirement = 'Platypus shall have the ability to transfer between MFEM and MOOSE using wedge18 elements (distributed).' + min_parallel = 2 + max_parallel = 2 + [] +[] diff --git a/testroot b/testroot new file mode 100644 index 00000000..44528cbc --- /dev/null +++ b/testroot @@ -0,0 +1,4 @@ +app_name = platypus +allow_warnings = false +allow_unused = false +allow_override = false diff --git a/unit/Makefile b/unit/Makefile new file mode 100644 index 00000000..819c9f7e --- /dev/null +++ b/unit/Makefile @@ -0,0 +1,70 @@ +############################################################################### +################### MOOSE Application Standard Makefile ####################### +############################################################################### +# +# Required Environment variables (one of the following) +# PACKAGES_DIR - Location of the MOOSE redistributable package +# +# Optional Environment variables +# MOOSE_DIR - Root directory of the MOOSE project +# FRAMEWORK_DIR - Location of the MOOSE framework +# +############################################################################### +# Use the MOOSE submodule if it exists and MOOSE_DIR is not set +MOOSE_SUBMODULE := $(CURDIR)/../moose +ifneq ($(wildcard $(MOOSE_SUBMODULE)/framework/Makefile),) + MOOSE_DIR ?= $(MOOSE_SUBMODULE) +else + MOOSE_DIR ?= $(shell dirname `pwd`)/../moose +endif +FRAMEWORK_DIR ?= $(MOOSE_DIR)/framework +############################################################################### + +# framework +include $(FRAMEWORK_DIR)/build.mk +include $(FRAMEWORK_DIR)/moose.mk + +################################## MODULES #################################### +# set desired physics modules equal to 'yes' to enable them +CHEMICAL_REACTIONS := no +CONTACT := no +FLUID_PROPERTIES := no +HEAT_CONDUCTION := no +MISC := no +NAVIER_STOKES := no +PHASE_FIELD := no +RDG := no +RICHARDS := no +SOLID_MECHANICS := no +STOCHASTIC_TOOLS := no +TENSOR_MECHANICS := no +XFEM := no +POROUS_FLOW := no +LEVEL_SET := no +include $(MOOSE_DIR)/modules/modules.mk +############################################################################### + +# Extra stuff for GTEST +ADDITIONAL_INCLUDES := -I$(FRAMEWORK_DIR)/contrib/gtest +ADDITIONAL_LIBS := $(FRAMEWORK_DIR)/contrib/gtest/libgtest.la + +# dep apps +CURRENT_DIR := $(shell pwd) +APPLICATION_DIR := $(CURRENT_DIR)/.. +APPLICATION_NAME := platypus +include $(FRAMEWORK_DIR)/app.mk + +APPLICATION_DIR := $(CURRENT_DIR) +APPLICATION_NAME := platypus-unit +BUILD_EXEC := yes + +DEP_APPS ?= $(shell $(FRAMEWORK_DIR)/scripts/find_dep_apps.py $(APPLICATION_NAME)) +include $(FRAMEWORK_DIR)/app.mk + +# Find all the Platypus unit test source files and include their dependencies. +platypus_unit_srcfiles := $(shell find $(CURRENT_DIR)/src -name "*.C") +platypus_unit_deps := $(patsubst %.C, %.$(obj-suffix).d, $(platypus_unit_srcfiles)) +-include $(platypus_unit_deps) + +############################################################################### +# Additional special case targets should be added here diff --git a/unit/include/place_holder b/unit/include/place_holder new file mode 100644 index 00000000..e69de29b diff --git a/unit/run_tests b/unit/run_tests new file mode 100755 index 00000000..f79debb7 --- /dev/null +++ b/unit/run_tests @@ -0,0 +1,18 @@ +#!/bin/bash + +APPLICATION_NAME=platypus +# If $METHOD is not set, use opt +if [ -z $METHOD ]; then + export METHOD=opt +fi + +if [ -e ./unit/$APPLICATION_NAME-unit-$METHOD ] +then + ./unit/$APPLICATION_NAME-unit-$METHOD +elif [ -e ./$APPLICATION_NAME-unit-$METHOD ] +then + ./$APPLICATION_NAME-unit-$METHOD +else + echo "Executable missing!" + exit 1 +fi diff --git a/unit/src/SampleTest.C b/unit/src/SampleTest.C new file mode 100644 index 00000000..b1acf597 --- /dev/null +++ b/unit/src/SampleTest.C @@ -0,0 +1,23 @@ +#include "gtest/gtest.h" + +TEST(MySampleTests, descriptiveTestName) +{ + // compare equality + EXPECT_EQ(2, 1 + 1); + EXPECT_DOUBLE_EQ(2 * 3.5, 1.0 * 8 - 1); + + // compare equality and immediately terminate this test if it fails + // ASSERT_EQ(2, 1); + + // this won't run if you uncomment the above test because above assert will fail + ASSERT_NO_THROW(1 + 1); + + // for a complete list of assertions and for more unit testing documentation see: + // https://github.com/google/googletest/blob/master/googletest/docs/Primer.md +} + +TEST(MySampleTests, anotherTest) +{ + EXPECT_LE(1, 2); + // ... +} diff --git a/unit/src/main.C b/unit/src/main.C new file mode 100644 index 00000000..85379756 --- /dev/null +++ b/unit/src/main.C @@ -0,0 +1,25 @@ +#include "PlatypusApp.h" +#include "gtest/gtest.h" + +// Moose includes +#include "Moose.h" +#include "MooseInit.h" +#include "AppFactory.h" + +#include +#include + +PerfLog Moose::perf_log("gtest"); + +GTEST_API_ int +main(int argc, char ** argv) +{ + // gtest removes (only) its args from argc and argv - so this must be before moose init + testing::InitGoogleTest(&argc, argv); + + MooseInit init(argc, argv); + registerApp(PlatypusApp); + Moose::_throw_on_error = true; + + return RUN_ALL_TESTS(); +}