- from_reporterThe name(s) of the Reporter(s) on the sub-app to transfer from.
C++ Type:std::vector<ReporterName>
Controllable:No
Description:The name(s) of the Reporter(s) on the sub-app to transfer from.
- stochastic_reporterThe name of the StochasticReporter object to transfer values to.
C++ Type:std::string
Controllable:No
Description:The name of the StochasticReporter object to transfer values to.
SamplerReporterTransfer
Transfers data from Reporters on the sub-application to a StochasticReporter on the main application.
Overview
This object is designed to transfer data from postprocessors, vectorpostprocessors, and reporters on the sub-application to the main application. This object must transfer data to a StochasticReporter object.
How It Works
This transfer works similar to MultiAppCloneReporterTransfer whereby creating vector reporter values whose type is based on the type of value being transferred. The name of the reporter values are <stochastic_reporter name>/<transfer name or prefix>:<sub-app reporter object name>:<sub-app reporter value name>
. In parallel, the vector that the values are being transferred into are distributed by default. For instance, main_out.json is the output in serial showing all the transferred data; while main_parallel.json, main_parallel.json.1, main_parallel.json.2, and main_parallel.json.3 are the combined data from running on 4 processors. However, this split in files can be avoided if "parallel_type" in the reporter object is set to ROOT
. This will gather all the data to the root processor, beware using this option can cause memory issues with very very large stochastic runs.
Dealing with Failed Solves
When performing stochastic analysis with many perturbations of a sub-application, it is sometimes the case where the app receives a set of parameters that makes the solve difficult to converge. With the default configuration of this object, if one of sub-applications' solve fails, the main application will abort. If it is expected that some solves might not converge and aborting the main application is not the desired behavior, the parameter "ignore_solve_not_converge" must be set to true in the MultiApps
block (see SamplerFullSolveMultiApp for more details). With this parameter set to true in the multiapp, this object will transfer whatever the last compute values are. To keep track of whether the solve converged or not, the reporter value <stochastic_reporter name>/multiapp_converged
is created. See main_out.json as an example.
Example Syntax
[MultiApps<<<{"href": "../../syntax/MultiApps/index.html"}>>>]
[sub]
type = SamplerFullSolveMultiApp<<<{"description": "Creates a full-solve type sub-application for each row of each Sampler matrix.", "href": "../multiapps/SamplerFullSolveMultiApp.html"}>>>
input_files<<<{"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."}>>> = sub.i
sampler<<<{"description": "The Sampler object to utilize for creating MultiApps."}>>> = sample
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'INITIAL TIMESTEP_BEGIN'
ignore_solve_not_converge<<<{"description": "True to continue main app even if a sub app's solve does not converge."}>>> = true
[]
[]
[Transfers<<<{"href": "../../syntax/Transfers/index.html"}>>>]
[data]
type = SamplerReporterTransfer<<<{"description": "Transfers data from Reporters on the sub-application to a StochasticReporter on the main application.", "href": "SamplerReporterTransfer.html"}>>>
from_multi_app<<<{"description": "The name of the MultiApp to receive data from"}>>> = sub
sampler<<<{"description": "A the Sampler object that Transfer is associated.."}>>> = sample
stochastic_reporter<<<{"description": "The name of the StochasticReporter object to transfer values to."}>>> = storage
from_reporter<<<{"description": "The name(s) of the Reporter(s) on the sub-app to transfer from."}>>> = 'pp/value vpp/vec constant/str constant/int'
[]
[]
[Reporters<<<{"href": "../../syntax/Reporters/index.html"}>>>]
[storage]
type = StochasticReporter<<<{"description": "Storage container for stochastic simulation results coming from Reporters.", "href": "../reporters/StochasticReporter.html"}>>>
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'initial timestep_end'
parallel_type<<<{"description": "This parameter will determine how the stochastic data is gathered. It is common for outputting purposes that this parameter be set to ROOT, otherwise, many files will be produced showing the values on each processor. However, if there are lot of samples, gathering on root may be memory restrictive."}>>> = ROOT
[]
[]
(moose/modules/stochastic_tools/test/tests/transfers/sampler_reporter/main.i)Input Parameters
- check_multiapp_execute_onFalseWhen false the check between the multiapp and transfer execute on flags is not performed.
Default:False
C++ Type:bool
Controllable:No
Description:When false the check between the multiapp and transfer execute on flags is not performed.
- displaced_source_meshFalseWhether or not to use the displaced mesh for the source mesh.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to use the displaced mesh for the source mesh.
- displaced_target_meshFalseWhether or not to use the displaced mesh for the target mesh.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to use the displaced mesh for the target mesh.
- execute_onSAME_AS_MULTIAPPThe list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
Default:SAME_AS_MULTIAPP
C++ Type:ExecFlagEnum
Controllable:No
Description:The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.
- from_multi_appThe name of the MultiApp to receive data from
C++ Type:MultiAppName
Controllable:No
Description:The name of the MultiApp to receive data from
- prefixUse the supplied string as the prefix for reporter name rather than the transfer name.
C++ Type:std::string
Controllable:No
Description:Use the supplied string as the prefix for reporter name rather than the transfer name.
- samplerA the Sampler object that Transfer is associated..
C++ Type:SamplerName
Controllable:No
Description:A the Sampler object that Transfer is associated..
- to_multi_appThe name of the MultiApp to transfer the data to
C++ Type:MultiAppName
Controllable:No
Description:The name of the MultiApp to transfer the data to
Optional Parameters
- _called_legacy_paramsTrue
Default:True
C++ Type:bool
Controllable:No
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- skip_coordinate_collapsingTrueWhether to skip coordinate collapsing (translation and rotation are still performed, only XYZ, RZ etc collapsing is skipped) when performing mapping and inverse mapping coordinate transformation operations. This parameter should only be set by users who really know what they're doing.
Default:True
C++ Type:bool
Controllable:No
Description:Whether to skip coordinate collapsing (translation and rotation are still performed, only XYZ, RZ etc collapsing is skipped) when performing mapping and inverse mapping coordinate transformation operations. This parameter should only be set by users who really know what they're doing.
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.