- source_variableThe variable to transfer from.
C++ Type:std::vector<VariableName>
Controllable:No
Description:The variable to transfer from.
- variableThe auxiliary variable to store the transferred values in.
C++ Type:std::vector<AuxVariableName>
Controllable:No
Description:The auxiliary variable to store the transferred values in.
MultiAppGeneralFieldNearestLocationTransfer
Transfers field data at the MultiApp position by finding the value at the nearest neighbor(s) in the origin application.
The nearest neighbor may be the nearest node or the nearest element centroid (approximated by the vertex average), depending on the context such as the finite element/volume types of the source and target variables. This object derives from the MultiAppGeneralFieldTransfer family of transfers and inherits many of its features and characteristics.
Nearest node transfers may be preferred to shape evaluation transfers when extrapolation of data is required, e.g. when the target domain extends beyond the source domain. It may also be preferred if evaluating shape functions or projecting variables is too expensive or unnecessary for the target application.
This is a re-implementation of MultiAppNearestNodeTransfer using a more flexible algorithm.
Nearest-node algorithms are vulnerable to finite precision round-offs if multiple neighbors are exactly at the same distance. This can affect repeatability of results. Use the "search_value_conflicts" parameter to uncover these issues.
The "num_nearest_points" allows for a simple geometric mixing of values of several nearest nodes to the target points. This mixing is performed in every origin problem independently, values from different child applications (or from different processes within each application) will not be mixed together.
If "num_nearest_points" is more than 1, the results will differ in parallel if the target locations are near the parallel process boundaries on the origin app mesh. Use the "output_process_domains" parameter to examine process boundaries on Exodus/Nemesis output.
Example Input File Syntax
In this example, a MultiAppGeneralFieldNearestLocationTransfer
is used to transfer a variable to_sub
from block '1' in the main app to block '1' in the child app sub
, filling the variable from_main
.
[to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub
variable = from_main
from_blocks = 1
to_blocks = 1
[]
(../moose/test/tests/transfers/general_field/nearest_node/subdomain/main.i)Input Parameters
- check_multiapp_execute_onTrueWhen false the check between the multiapp and transfer execute on flags is not performed.
Default:True
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, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM, ALWAYS, SAME_AS_MULTIAPP.
Default:SAME_AS_MULTIAPP
C++ Type:ExecFlagEnum
Controllable:No
Description:The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM, ALWAYS, SAME_AS_MULTIAPP.
- 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
- num_nearest_points1Number of nearest source (from) points will be chosen to construct a value for the target point. All points will be selected from the same origin mesh!
Default:1
C++ Type:unsigned int
Controllable:No
Description:Number of nearest source (from) points will be chosen to construct a value for the target point. All points will be selected from the same origin mesh!
- source_typevariable_default Where to get the source values from for each source variable
Default:variable_default
C++ Type:std::vector<MooseEnum>
Controllable:No
Description:Where to get the source values from for each source variable
- source_variable_componentsThe source array or vector variable component(s).
C++ Type:std::vector<unsigned int>
Controllable:No
Description:The source array or vector variable component(s).
- target_variable_componentsThe target array or vector variable component(s).
C++ Type:std::vector<unsigned int>
Controllable:No
Description:The target array or vector variable component(s).
- 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.
Advanced Parameters
- allow_skipped_adjustmentFalseIf set to true, the transfer skips adjustment when from or to postprocessor values are either zero or have different signs. If set to false, an error is thrown when encountering these conditions.
Default:False
C++ Type:bool
Controllable:No
Description:If set to true, the transfer skips adjustment when from or to postprocessor values are either zero or have different signs. If set to false, an error is thrown when encountering these conditions.
- from_postprocessors_to_be_preservedThe name of the Postprocessor in the from-app to evaluate an adjusting factor.
C++ Type:std::vector<PostprocessorName>
Controllable:No
Description:The name of the Postprocessor in the from-app to evaluate an adjusting factor.
- to_postprocessors_to_be_preservedThe name of the Postprocessor in the to-app to evaluate an adjusting factor.
C++ Type:std::vector<PostprocessorName>
Controllable:No
Description:The name of the Postprocessor in the to-app to evaluate an adjusting factor.
Conservative Transfer Parameters
- bbox_factor1Factor to inflate or deflate the source app bounding boxes
Default:1
C++ Type:double
Controllable:No
Description:Factor to inflate or deflate the source app bounding boxes
- fixed_bounding_box_sizeOverride source app bounding box size(s) for searches. App bounding boxes will still be centered on the same coordinates. Only non-zero components passed will override.
C++ Type:std::vector<double>
Controllable:No
Description:Override source app bounding box size(s) for searches. App bounding boxes will still be centered on the same coordinates. Only non-zero components passed will override.
Source App Bounding Box Parameters
- elemental_boundary_restrictionsidesWhether elemental variable boundary restriction is considered by element side or element nodes
Default:sides
C++ Type:MooseEnum
Controllable:No
Description:Whether elemental variable boundary restriction is considered by element side or element nodes
- from_blocksSubdomain restriction to transfer from (defaults to all the origin app domain)
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:Subdomain restriction to transfer from (defaults to all the origin app domain)
- from_boundariesThe boundary we are transferring from (if not specified, whole domain is used).
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The boundary we are transferring from (if not specified, whole domain is used).
- to_blocksSubdomain restriction to transfer to, (defaults to all the target app domain)
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:Subdomain restriction to transfer to, (defaults to all the target app domain)
- to_boundariesThe boundary we are transferring to (if not specified, whole domain is used).
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The boundary we are transferring to (if not specified, whole domain is used).
Transfer Spatial Restriction Parameters
- error_on_missFalseWhether or not to error in the case that a target point is not found in the source domain.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to error in the case that a target point is not found in the source domain.
- from_app_must_contain_pointFalseWether on not the origin mesh must contain the point to evaluate data at. If false, this allows for interpolation between origin app meshes. Origin app bounding boxes are still considered so you may want to increase them with 'fixed_bounding_box_size'
Default:False
C++ Type:bool
Controllable:No
Description:Wether on not the origin mesh must contain the point to evaluate data at. If false, this allows for interpolation between origin app meshes. Origin app bounding boxes are still considered so you may want to increase them with 'fixed_bounding_box_size'
Extrapolation Behavior Parameters
- greedy_searchFalseWhether or not to send a point to all the domains. If true, all the processors will be checked for a given point.The code will be slow if this flag is on but it will give a better solution.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to send a point to all the domains. If true, all the processors will be checked for a given point.The code will be slow if this flag is on but it will give a better solution.
- search_value_conflictsTrueWhether to look for potential conflicts between two valid and different source values for any target point
Default:True
C++ Type:bool
Controllable:No
Description:Whether to look for potential conflicts between two valid and different source values for any target point
- use_nearest_positionName of the the Positions object (in main app) such that transfers to/from a child application will work by finding the nearest position to a target and query only the app / points closer to this position than any other position for the value to transfer.
C++ Type:PositionsName
Controllable:No
Description:Name of the the Positions object (in main app) such that transfers to/from a child application will work by finding the nearest position to a target and query only the app / points closer to this position than any other position for the value to transfer.