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]
  [sub]
    type = SamplerFullSolveMultiApp
    input_files = sub.i
    sampler = sample
    execute_on = 'INITIAL TIMESTEP_BEGIN'
    ignore_solve_not_converge = true
  []
[]

[Transfers]
  [data]
    type = SamplerReporterTransfer
    from_multi_app = sub
    sampler = sample
    stochastic_reporter = storage
    from_reporter = 'pp/value vpp/vec constant/str constant/int'
  []
[]

[Reporters]
  [storage]
    type = StochasticReporter
    execute_on = 'initial timestep_end'
    parallel_type = ROOT
  []
[]
(contrib/moose/modules/stochastic_tools/test/tests/transfers/sampler_reporter/main.i)

Input Parameters

  • from_reporterThe name(s) of the Reporter(s) on the sub-app to transfer from.

    C++ Type:std::vector<ReporterName>

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of the StochasticReporter object to transfer values to.

Required Parameters

  • check_multiapp_execute_onFalseWhen false the check between the multiapp and transfer execute on flags is not performed.

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    Options:NONE, INITIAL, LINEAR, NONLINEAR_CONVERGENCE, NONLINEAR, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM, SAME_AS_MULTIAPP

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of the MultiApp to transfer the data to

Optional Parameters

  • _called_legacy_paramsTrue

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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.

Advanced Parameters