- 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
.
[Transfers]
[to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub
variable = from_main
from_blocks = 1
to_blocks = 1
[]
[]
(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 FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM, SAME_AS_MULTIAPP.
Default:SAME_AS_MULTIAPP
C++ Type:ExecFlagEnum
Options:FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR, 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, the available options include FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM, 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
- group_subappsFalseWhether to group data from subapps when considering a nearest-position algorithm
Default:False
C++ Type:bool
Controllable:No
Description:Whether to group data from subapps when considering a nearest-position algorithm
- 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>
Options:nodes, centroids, variable_default
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
- value_conflicts_output10Maximum number of conflicts to output if value-conflicts, from equidistant sources to a given transfer target location, search is turned on
Default:10
C++ Type:unsigned int
Controllable:No
Description:Maximum number of conflicts to output if value-conflicts, from equidistant sources to a given transfer target location, search is turned on
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
Options:nodes, sides
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).
- from_mesh_divisionMesh division object on the origin application
C++ Type:MeshDivisionName
Controllable:No
Description:Mesh division object on the origin application
- from_mesh_division_usagenoneHow to use the source mesh division in the transfer. See object documentation for description of each option
Default:none
C++ Type:MooseEnum
Options:spatial_restriction, matching_division, matching_subapp_index, none
Controllable:No
Description:How to use the source mesh division in the transfer. See object documentation for description of each option
- 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).
- to_mesh_divisionMesh division object on the target application
C++ Type:MeshDivisionName
Controllable:No
Description:Mesh division object on the target application
- to_mesh_division_usagenoneHow to use the target mesh division in the transfer. See object documentation for description of each option
Default:none
C++ Type:MooseEnum
Options:spatial_restriction, matching_division, matching_subapp_index, none
Controllable:No
Description:How to use the target mesh division in the transfer. See object documentation for description of each option
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_bounding_boxesTrueWhen set to false, bounding boxes will not be used to restrict the source of the transfer. Either source applications must be set using the from_mesh_division parameter, or a greedy search must be used.
Default:True
C++ Type:bool
Controllable:No
Description:When set to false, bounding boxes will not be used to restrict the source of the transfer. Either source applications must be set using the from_mesh_division parameter, or a greedy search must be used.
- 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.
Search Algorithm Parameters
Input Files
- (test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/tosub_displaced_parent.i)
- (test/tests/multiapps/restart/parent2.i)
- (test/tests/multiapps/secant/steady_main.i)
- (test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/source_boundary_parent.i)
- (test/tests/multiapps/picard/picard_parent.i)
- (test/tests/multiapps/picard/picard_rel_tol_parent.i)
- (test/tests/multiapps/secant/transient_main.i)
- (test/tests/multiapps/steffensen/steady_main.i)
- (test/tests/transfers/general_field/nearest_node/mesh_division/main_match_division.i)
- (test/tests/transfers/from_full_solve/parent.i)
- (test/tests/multiapps/relaxation/picard_relaxed_parent.i)
- (test/tests/multiapps/restart_subapp_ic/parent.i)
- (test/tests/transfers/general_field/nearest_node/regular/main_array.i)
- (test/tests/multiapps/picard/picard_adaptive_parent.i)
- (modules/thermal_hydraulics/test/tests/components/hs_boundary_external_app_temperature/phy.parent.i)
- (test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/tosub_parent.i)
- (test/tests/multiapps/restart_subapp_ic/parent2.i)
- (test/tests/transfers/general_field/nearest_node/subdomain/main.i)
- (test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/boundary_tosub_parent.i)
- (modules/thermal_hydraulics/test/tests/components/hs_boundary_external_app_convection/plate.parent.i)
- (test/tests/multiapps/picard/picard_custom_postprocessor.i)
- (modules/thermal_hydraulics/test/tests/components/heat_transfer_from_external_app_1phase/phy.T_wall_transfer_3eqn.parent.i)
- (test/tests/multiapps/picard_multilevel/picard_parent.i)
- (test/tests/multiapps/picard_multilevel/multilevel_dt_rejection/picard_sub.i)
- (test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/to_multiple_boundaries_parent.i)
- (test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/fromsub_parent.i)
- (test/tests/multiapps/relaxation/bad_relax_factor_parent.i)
- (modules/thermal_hydraulics/test/tests/components/heat_transfer_from_external_app_1phase/phy.q_wall_transfer_3eqn.parent.i)
- (test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/fromsub_displaced_parent.i)
- (test/tests/transfers/general_field/nearest_node/nearest_position/main.i)
- (test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/target_boundary_parent.i)
- (test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/boundary_toparent_parent.i)
- (test/tests/transfers/general_field/nearest_node/nearest_position/main_between_multiapp.i)
- (test/tests/multiapps/picard_multilevel/multilevel_dt_rejection/parent.i)
- (test/tests/multiapps/restart/parent.i)
- (test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/two_way_many_apps_parent.i)
- (test/tests/multiapps/relaxation/sub_relaxed_parent.i)
- (test/tests/multiapps/picard/pseudo_transient_picard_parent.i)
- (test/tests/multiapps/restart_multilevel/sub.i)
- (test/tests/transfers/general_field/nearest_node/mesh_division/main_match_subapps.i)
- (test/tests/outputs/console/multiapp/picard_parent.i)
- (modules/thermal_hydraulics/test/tests/components/form_loss_from_external_app_1phase/phy.form_loss_1phase.parent.i)
- (test/tests/multiapps/picard/steady_custom_picard_parent.i)
- (test/tests/multiapps/picard/steady_picard_parent.i)
- (test/tests/multiapps/restart_multilevel/parent.i)
- (test/tests/multiapps/picard_catch_up/parent.i)
- (test/tests/transfers/general_field/nearest_node/regular/main.i)
- (test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/parallel_parent.i)
- (test/tests/multiapps/picard_failure/picard_parent.i)
- (test/tests/transfers/get_transfers_from_feproblem/parent.i)
- (test/tests/multiapps/picard_multilevel/picard_sub.i)
- (test/tests/multiapps/relaxation/picard_parent.i)
- (test/tests/multiapps/picard/function_dt_parent.i)
- (test/tests/transfers/general_field/nearest_node/nearest_position/main_single_sub.i)
- (test/tests/multiapps/restart_multilevel/parent2.i)
- (test/tests/transfers/general_field/nearest_node/boundary/main.i)
- (test/tests/multiapps/steffensen/transient_main.i)
- (test/tests/transfers/general_field/nearest_node/mesh_division/main.i)
- (test/tests/outputs/console/multiapp/picard_parent_both.i)
- (test/tests/multiapps/picard/picard_abs_tol_parent.i)
- (test/tests/transfers/general_field/nearest_node/between_siblings/main_between_multiapp.i)
search_value_conflicts
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
num_nearest_points
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!
num_nearest_points
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!
output_process_domains
Default:False
C++ Type:bool
Controllable:No
Description:Add a AuxVariable named "pid" that shows the partitioning for each process
(test/tests/transfers/general_field/nearest_node/subdomain/main.i)
# Base input for testing transfers. It has the following complexities:
# - more than one subapp
# - transfers both from and to the subapps
# - both nodal and elemental variables
# - subapp meshes are not aligned with the main app
# Tests derived from this input may add complexities through command line arguments
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 5
ny = 5
[]
[add_block]
type = ParsedSubdomainMeshGenerator
input = gmg
combinatorial_geometry = 'x < 0.6 & y < 0.5'
block_id = 1
[]
[]
[AuxVariables]
[from_sub]
initial_condition = -1
[]
[from_sub_elem]
order = CONSTANT
family = MONOMIAL
initial_condition = -1
[]
[to_sub]
[InitialCondition]
type = FunctionIC
function = '1 + 2*x*x + 3*y*y*y'
[]
[]
[to_sub_elem]
order = CONSTANT
family = MONOMIAL
[InitialCondition]
type = FunctionIC
function = '2 + 2*x*x + 3*y*y*y'
[]
[]
[]
[Executioner]
type = Transient
num_steps = 1
[]
[Problem]
solve = false
[]
[Outputs]
[out]
type = Exodus
hide = 'to_sub to_sub_elem'
[]
execute_on = 'TIMESTEP_END'
[]
[MultiApps]
[sub]
# 1 on corner, one in the center and one close to a corner
# Offsets are added to make sure there are no equidistant nodes / transfer indetermination
positions = '0.00001 0 0 0.4022222 0.281111 0 0.7232323 0.12323 0'
type = TransientMultiApp
app_type = MooseTestApp
input_files = sub.i
execute_on = timestep_end
output_in_position = true
[]
[]
[Transfers]
[to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub
variable = from_main
from_blocks = 1
to_blocks = 1
[]
[to_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub_elem
variable = from_main_elem
from_blocks = 1
to_blocks = 1
[]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main
variable = from_sub
from_blocks = 1
to_blocks = 1
[]
[from_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main_elem
variable = from_sub_elem
from_blocks = 1
to_blocks = 1
[]
[]
(test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/tosub_displaced_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[./u]
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[]
[Executioner]
type = Transient
num_steps = 1
dt = 1
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
[MultiApps]
[./sub]
type = TransientMultiApp
app_type = MooseTestApp
execute_on = timestep_end
positions = '0.48 0 0'
input_files = tosub_displaced_sub.i
[../]
[]
[Transfers]
[./to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = from_parent
displaced_target_mesh = true
[../]
[./elemental_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = elemental_from_parent
displaced_target_mesh = true
[../]
[]
(test/tests/multiapps/restart/parent2.i)
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
ymin = 0
xmax = 1
ymax = 1
nx = 10
ny = 10
[]
[Functions]
[v_fn]
type = ParsedFunction
expression = t*x
[]
[ffn]
type = ParsedFunction
expression = x
[]
[]
[AuxVariables]
[v]
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[td]
type = TimeDerivative
variable = u
[]
[ufn]
type = BodyForce
variable = u
function = ffn
[]
[]
[BCs]
[all]
type = FunctionDirichletBC
variable = u
boundary = 'left right top bottom'
function = v_fn
[]
[]
[Executioner]
type = Transient
num_steps = 5
dt = 0.1
solve_type = 'PJFNK'
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub_app]
app_type = MooseTestApp
type = TransientMultiApp
input_files = 'sub2.i'
execute_on = timestep_end
positions = '0 -1 0'
[]
[]
[Transfers]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub_app
source_variable = u
variable = v
[]
[]
[Problem]
restart_file_base = parent_out_cp/0005
[]
(test/tests/multiapps/secant/steady_main.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 5
ny = 5
parallel_type = replicated
uniform_refine = 1
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[force_u]
type = CoupledForce
variable = u
v = v
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[unorm]
type = ElementL2Norm
variable = u
[]
[]
[Executioner]
type = Steady
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
nl_abs_tol = 1e-14
fixed_point_algorithm = 'secant'
fixed_point_max_its = 30
transformed_variables = 'u'
[]
[Outputs]
csv = true
exodus = false
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
app_type = MooseTestApp
positions = '0 0 0'
input_files = 'steady_sub.i'
clone_parent_mesh = true
transformed_variables = 'v'
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/source_boundary_parent.i)
[Mesh]
[drmg]
type = DistributedRectilinearMeshGenerator
dim = 2
nx = 30
ny = 30
xmax = 2
elem_type = QUAD4
partition = square
[]
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[from_sub]
[]
[]
[Kernels]
[conduction]
type = Diffusion
variable = u
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = 'left'
value = 1
[]
[right]
type = DirichletBC
variable = u
boundary = 'right'
value = 10
[]
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
app_type = MooseTestApp
input_files = 'source_boundary_sub.i'
positions = '-1.0 0.0 0.0
2. 0.0 0.0'
output_in_position = true
cli_args = 'BCs/right/value="1" BCs/right/value="10"'
[]
[]
[Transfers]
[source_boundary]
type = MultiAppGeneralFieldNearestLocationTransfer
source_variable = u
from_multi_app = sub
variable = from_sub
from_boundaries = 'right'
[]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-6
[]
[Outputs]
exodus = true
[]
(test/tests/multiapps/picard/picard_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 5
ny = 5
parallel_type = replicated
uniform_refine = 1
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[time]
type = TimeDerivative
variable = u
[]
[force_u]
type = CoupledForce
variable = u
v = v
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[picard_its]
type = NumFixedPointIterations
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
num_steps = 20
dt = 0.1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 30
nl_abs_tol = 1e-14
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0 0 0'
input_files = picard_sub.i
clone_parent_mesh = true
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(test/tests/multiapps/picard/picard_rel_tol_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[time]
type = TimeDerivative
variable = u
[]
[force_u]
type = CoupledForce
variable = u
v = v
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Executioner]
type = Transient
num_steps = 20
dt = 0.1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
nl_abs_tol = 1e-12
fixed_point_max_its = 10
fixed_point_rel_tol = 1e-7
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0 0 0'
input_files = picard_sub.i
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(test/tests/multiapps/secant/transient_main.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 5
ny = 5
parallel_type = replicated
uniform_refine = 1
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[time]
type = TimeDerivative
variable = u
[]
[force_u]
type = CoupledForce
variable = u
v = v
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[unorm]
type = ElementL2Norm
variable = u
[]
[]
[Executioner]
type = Transient
num_steps = 10
dt = 0.1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
nl_abs_tol = 1e-14
fixed_point_algorithm = 'secant'
fixed_point_max_its = 30
transformed_variables = 'u'
[]
[Outputs]
csv = true
exodus = false
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0 0 0'
input_files = 'transient_sub.i'
clone_parent_mesh = true
execute_on = 'timestep_begin'
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
execute_on = 'timestep_begin'
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
execute_on = 'timestep_begin'
[]
[]
(test/tests/multiapps/steffensen/steady_main.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 5
ny = 5
parallel_type = replicated
uniform_refine = 1
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[force_u]
type = CoupledForce
variable = u
v = v
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[unorm]
type = ElementL2Norm
variable = u
[]
[]
[Executioner]
type = Steady
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
nl_abs_tol = 1e-14
fixed_point_algorithm = 'steffensen'
fixed_point_max_its = 30
transformed_variables = 'u'
accept_on_max_fixed_point_iteration = true
[]
[Outputs]
csv = true
exodus = false
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
app_type = MooseTestApp
positions = '0 0 0'
input_files = 'steady_sub.i'
clone_parent_mesh = true
transformed_variables = 'v'
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(test/tests/transfers/general_field/nearest_node/mesh_division/main_match_division.i)
# Base input for testing transfers with mesh divisions restrictions with a mapping from
# source mesh divisions to target mesh divisions. It has the following complexities:
# - multiple sub-applications
# - transfers both from and to the subapps
# - both nodal and elemental variables
# Tests derived from this input may add complexities through command line arguments
# Explaining results on the main app:
# Each value on the main app comes from a region with the same division index on a subapp
# Because the subapp is not very discretized in Y, some source mesh division indices
# are not represented in the subapps. Therefore these mesh divisions are not present in the
# main app.
# Explaining results on the sub apps:
# Each subapp receives results for all its target mesh divisions. They are naturally all the
# same because they are all matched with the same source app (parent app) source division
# and the division on the parent app is too small to have more than 1 valid point + value
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[MeshDivisions]
[middle]
type = CartesianGridDivision
bottom_left = '0.21 0.21 0'
# cover more and sample more bins
top_right = '1.001 1.001 0'
nx = 5
ny = 5
nz = 1
[]
[]
[AuxVariables]
[from_sub]
initial_condition = -1
[]
[from_sub_elem]
order = CONSTANT
family = MONOMIAL
initial_condition = -1
[]
[to_sub]
[InitialCondition]
type = FunctionIC
function = '1 + 2*x*x + 3*y*y*y'
[]
[]
[to_sub_elem]
order = CONSTANT
family = MONOMIAL
[InitialCondition]
type = FunctionIC
function = '2 + 2*x*x + 3*y*y*y'
[]
[]
[]
[Executioner]
type = Steady
[]
[Problem]
solve = false
[]
[Outputs]
[out]
type = Exodus
hide = 'to_sub to_sub_elem div'
overwrite = true
[]
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
app_type = MooseTestApp
input_files = sub.i
output_in_position = true
# The positions are randomly offset to prevent equi-distant nearest-locations
positions = '0.1001 0.0000013 0
0.30054 0.600001985 0
0.70021 0.0000022 0
0.800212 0.5500022 0'
cli_args = "base_value=1;MeshDivisions/middle_sub/nx=5;MeshDivisions/middle_sub/ny=5;Mesh/nx=10 "
"base_value=2;MeshDivisions/middle_sub/nx=5;MeshDivisions/middle_sub/ny=5;Mesh/nx=10 "
"base_value=3;MeshDivisions/middle_sub/nx=5;MeshDivisions/middle_sub/ny=5;Mesh/nx=10 "
"base_value=4;MeshDivisions/middle_sub/nx=5;MeshDivisions/middle_sub/ny=5;Mesh/nx=10"
[]
[]
[Transfers]
[to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub
variable = from_main
from_mesh_division = middle
from_mesh_division_usage = 'matching_division'
to_mesh_division = middle_sub
to_mesh_division_usage = 'matching_division'
# we avoid bounding boxes because the parent and children apps do
# not overlap so unless we grow the boxes to cover the entire source,
# the transfer will not pick up all the source mesh divisions
greedy_search = true
use_bounding_boxes = false
[]
[to_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub_elem
variable = from_main_elem
from_mesh_division = middle
from_mesh_division_usage = 'matching_division'
to_mesh_division = middle_sub
to_mesh_division_usage = 'matching_division'
greedy_search = true
use_bounding_boxes = false
[]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main
variable = from_sub
from_mesh_division = middle_sub
from_mesh_division_usage = 'matching_division'
to_mesh_division = middle
to_mesh_division_usage = 'matching_division'
greedy_search = true
use_bounding_boxes = false
[]
[from_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main_elem
variable = from_sub_elem
from_mesh_division = middle_sub
from_mesh_division_usage = 'matching_division'
to_mesh_division = middle
to_mesh_division_usage = 'matching_division'
greedy_search = true
use_bounding_boxes = false
[]
[]
# For debugging purposes
[AuxVariables]
[div]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[mesh_div]
type = MeshDivisionAux
variable = div
mesh_division = 'middle'
[]
[]
(test/tests/transfers/from_full_solve/parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
# This test currently diffs when run in parallel with DistributedMesh enabled,
# most likely due to the fact that CONSTANT MONOMIALS are currently not written
# out correctly in this case. For more information, see #2122.
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[from_full]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
[MultiApps]
[full_solve]
type = FullSolveMultiApp
app_type = MooseTestApp
execute_on = initial
positions = '0 0 0'
input_files = sub.i
[]
[]
[Transfers]
[from_full]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = full_solve
source_variable = u
variable = from_full
[]
[]
(test/tests/multiapps/relaxation/picard_relaxed_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
initial_condition = 1
[]
[inverse_v]
initial_condition = 1
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[time]
type = TimeDerivative
variable = u
[]
[force_u]
type = CoupledForce
variable = u
v = inverse_v
[]
[]
[AuxKernels]
[invert_v]
type = QuotientAux
variable = inverse_v
denominator = v
numerator = 20.0
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[Neumann_right]
type = NeumannBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[picard_its]
type = NumFixedPointIterations
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
num_steps = 4
dt = 0.5
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 30
nl_abs_tol = 1e-14
relaxation_factor = 0.95
transformed_variables = u
[]
[Outputs]
exodus = true
execute_on = 'INITIAL TIMESTEP_END'
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
execute_on = timestep_begin
positions = '0 0 0'
input_files = picard_relaxed_sub.i
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(test/tests/multiapps/restart_subapp_ic/parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
ymin = 0
xmax = 1
ymax = 1
nx = 10
ny = 10
[]
[Functions]
[v_fn]
type = ParsedFunction
expression = t*x
[]
[ffn]
type = ParsedFunction
expression = x
[]
[]
[AuxVariables]
[v]
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[td]
type = TimeDerivative
variable = u
[]
[ufn]
type = BodyForce
variable = u
function = ffn
[]
[]
[BCs]
[all]
type = FunctionDirichletBC
variable = u
boundary = 'left right top bottom'
function = v_fn
[]
[]
[Executioner]
type = Transient
num_steps = 5
dt = 0.1
solve_type = 'PJFNK'
[]
[Outputs]
exodus = true
checkpoint = true
[]
[MultiApps]
[sub_app]
app_type = MooseTestApp
type = TransientMultiApp
input_files = 'sub.i'
execute_on = timestep_end
positions = '0 -1 0'
[]
[]
[Transfers]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub_app
source_variable = u
variable = v
[]
[]
(test/tests/transfers/general_field/nearest_node/regular/main_array.i)
# Base input for testing transfers. It has the following complexities:
# - more than one subapp
# - transfers both from and to the subapps
# - both nodal and elemental variables
# Tests derived from this input may add complexities through command line arguments
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[AuxVariables]
[from_sub]
initial_condition = '-1 -1'
components = 2
[]
[from_sub_elem]
order = CONSTANT
family = MONOMIAL
initial_condition = '-1 -1'
components = 2
[]
[to_sub]
components = 2
[InitialCondition]
type = ArrayFunctionIC
function = '1+2*x*x+3*y*y*y 1.5+2*x*x+3*y*y*y'
[]
[]
[to_sub_elem]
components = 2
order = CONSTANT
family = MONOMIAL
[InitialCondition]
type = ArrayFunctionIC
function = '2+2*x*x+3*y*y*y 3+2*x*x+3*y*y*y'
[]
[]
[]
[Executioner]
type = Steady
[]
[Problem]
solve = false
[]
[Outputs]
[out]
type = Exodus
hide = 'to_sub to_sub_elem'
overwrite = true
[]
[]
[MultiApps]
[sub]
# 1 on corner, one in the center and one close to a corner
# The offsets are to avoid equidistant points
positions = '0.000001 0 0 0.4111 0.4112 0 0.6999 0.099 0'
type = FullSolveMultiApp
app_type = MooseTestApp
input_files = sub_array.i
output_in_position = true
[]
[]
[Transfers]
[to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = 'to_sub to_sub'
source_variable_components = '1 0'
variable = 'from_main from_main'
target_variable_components = '0 1'
source_type = 'nodes nodes'
[]
[to_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = 'to_sub_elem to_sub_elem'
source_variable_components = '1 0'
variable = 'from_main_elem from_main_elem'
target_variable_components = '0 1'
source_type = 'centroids centroids'
[]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = 'to_main to_main'
source_variable_components = '1 0'
variable = 'from_sub from_sub'
target_variable_components = '0 1'
source_type = 'nodes nodes'
[]
[from_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = 'to_main_elem to_main_elem'
source_variable_components = '1 0'
variable = 'from_sub_elem from_sub_elem'
target_variable_components = '0 1'
source_type = 'centroids centroids'
[]
[]
(test/tests/multiapps/picard/picard_adaptive_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[time]
type = TimeDerivative
variable = u
[]
[force_u]
type = CoupledForce
variable = u
v = v
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[picard_its]
type = NumFixedPointIterations
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
num_steps = 20
dt = 0.1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 30
nl_abs_tol = 1e-14
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.1
# cutback_factor, growth_factor, optimal_iterations, time_dt and time_t added through CLI args
[]
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0 0 0'
input_files = picard_adaptive_sub.i
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(modules/thermal_hydraulics/test/tests/components/hs_boundary_external_app_temperature/phy.parent.i)
# This tests a transfer of temperature values computed by master app and used by a child app
# as a heat structure boundary condition
[Mesh]
type = GeneratedMesh
dim = 1
xmax = 1
nx = 10
[]
[Functions]
[T_bc_fn]
type = ParsedFunction
expression = '300+t*x*10'
[]
[T_ffn]
type = ParsedFunction
expression = 'x*10'
[]
[]
[Variables]
[T]
[]
[]
[ICs]
[T_ic]
type = ConstantIC
variable = T
value = 300
[]
[]
[Kernels]
[td]
type = ADTimeDerivative
variable = T
[]
[diff]
type = ADDiffusion
variable = T
[]
[ffn]
type = BodyForce
variable = T
function = T_ffn
[]
[]
[BCs]
[left]
type = FunctionDirichletBC
variable = T
boundary = 'left right'
function = T_bc_fn
[]
[]
[Executioner]
type = Transient
dt = 0.1
num_steps = 2
nl_abs_tol = 1e-10
abort_on_solve_fail = true
solve_type = NEWTON
[]
[MultiApps]
[thm]
type = TransientMultiApp
app_type = ThermalHydraulicsApp
input_files = phy.child.i
execute_on = 'initial timestep_end'
[]
[]
[Transfers]
[T_to_thm]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = thm
source_variable = T
variable = T_ext
to_boundaries = 'hs:outer'
[]
[]
[Outputs]
exodus = true
show = 'T'
[]
(test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/tosub_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
elem_type = QUAD4
[]
[Variables]
[u]
family = LAGRANGE
order = FIRST
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[AuxVariables]
[u_elemental]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[fun_aux]
type = FunctionAux
function = 'x + y'
variable = u_elemental
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Executioner]
type = Transient
num_steps = 1
dt = 1
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
execute_on = timestep_end
positions = '0.48 0.01 0'
input_files = tosub_sub.i
[]
[]
[Transfers]
[to_sub_nodal_to_nodal]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = nodal_source_from_parent_nodal
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[to_sub_nodal_to_elemental]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = nodal_source_from_parent_elemental
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[to_sub_elemental_to_nodal]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u_elemental
variable = elemental_source_from_parent_nodal
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[to_sub_elemental_to_elemental]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u_elemental
variable = elemental_source_from_parent_elemental
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[]
(test/tests/multiapps/restart_subapp_ic/parent2.i)
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
ymin = 0
xmax = 1
ymax = 1
nx = 10
ny = 10
[]
[Functions]
[v_fn]
type = ParsedFunction
expression = t*x
[]
[ffn]
type = ParsedFunction
expression = x
[]
[]
[AuxVariables]
[v]
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[td]
type = TimeDerivative
variable = u
[]
[ufn]
type = BodyForce
variable = u
function = ffn
[]
[]
[BCs]
[all]
type = FunctionDirichletBC
variable = u
boundary = 'left right top bottom'
function = v_fn
[]
[]
[Executioner]
type = Transient
num_steps = 5
dt = 0.1
solve_type = 'PJFNK'
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub_app]
app_type = MooseTestApp
type = TransientMultiApp
input_files = 'sub2.i'
execute_on = timestep_end
positions = '0 -1 0'
[]
[]
[Transfers]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub_app
source_variable = u
variable = v
[]
[]
[Problem]
restart_file_base = parent_out_cp/0005
[]
(test/tests/transfers/general_field/nearest_node/subdomain/main.i)
# Base input for testing transfers. It has the following complexities:
# - more than one subapp
# - transfers both from and to the subapps
# - both nodal and elemental variables
# - subapp meshes are not aligned with the main app
# Tests derived from this input may add complexities through command line arguments
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 5
ny = 5
[]
[add_block]
type = ParsedSubdomainMeshGenerator
input = gmg
combinatorial_geometry = 'x < 0.6 & y < 0.5'
block_id = 1
[]
[]
[AuxVariables]
[from_sub]
initial_condition = -1
[]
[from_sub_elem]
order = CONSTANT
family = MONOMIAL
initial_condition = -1
[]
[to_sub]
[InitialCondition]
type = FunctionIC
function = '1 + 2*x*x + 3*y*y*y'
[]
[]
[to_sub_elem]
order = CONSTANT
family = MONOMIAL
[InitialCondition]
type = FunctionIC
function = '2 + 2*x*x + 3*y*y*y'
[]
[]
[]
[Executioner]
type = Transient
num_steps = 1
[]
[Problem]
solve = false
[]
[Outputs]
[out]
type = Exodus
hide = 'to_sub to_sub_elem'
[]
execute_on = 'TIMESTEP_END'
[]
[MultiApps]
[sub]
# 1 on corner, one in the center and one close to a corner
# Offsets are added to make sure there are no equidistant nodes / transfer indetermination
positions = '0.00001 0 0 0.4022222 0.281111 0 0.7232323 0.12323 0'
type = TransientMultiApp
app_type = MooseTestApp
input_files = sub.i
execute_on = timestep_end
output_in_position = true
[]
[]
[Transfers]
[to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub
variable = from_main
from_blocks = 1
to_blocks = 1
[]
[to_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub_elem
variable = from_main_elem
from_blocks = 1
to_blocks = 1
[]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main
variable = from_sub
from_blocks = 1
to_blocks = 1
[]
[from_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main_elem
variable = from_sub_elem
from_blocks = 1
to_blocks = 1
[]
[]
(test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/boundary_tosub_parent.i)
[Mesh]
file = 2blk.e
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[left_1]
type = DirichletBC
variable = u
boundary = '1'
value = 4
[]
[left_2]
type = DirichletBC
variable = u
boundary = '2'
value = 3
[]
[right_3]
type = DirichletBC
variable = u
boundary = '3'
value = 2
[]
[right_4]
type = DirichletBC
variable = u
boundary = '4'
value = 1
[]
[]
[Executioner]
type = Transient
num_steps = 1
dt = 1
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
execute_on = timestep_end
positions = '0 -4 0'
input_files = boundary_tosub_sub.i
[]
[]
[Transfers]
[to_sub_1]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
from_boundaries = '1'
variable = from_parent_1
[]
[to_sub_2]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
from_boundaries = '2'
variable = from_parent_2
[]
[to_sub_3]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
from_boundaries = '3'
variable = from_parent_3
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[to_sub_4]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
from_boundaries = '4'
variable = from_parent_4
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[]
(modules/thermal_hydraulics/test/tests/components/hs_boundary_external_app_convection/plate.parent.i)
# This tests a temperature and heat transfer coefficient using the MultiApp system.
# Simple heat conduction problem with heat source is solved,
# to obtain an analytical solution:
# T(x,t) = 300 + 20t(x-1)^2
# The temperature is picked up by the child
# side of the solve, to use as ambiant temperature in a convective BC.
htc = 100
[Mesh]
type = GeneratedMesh
dim = 1
xmax = 1
nx = 10
[]
[Functions]
[left_bc_fn]
type = PiecewiseLinear
x = '0 10'
y = '300 500'
[]
[]
[Variables]
[T]
[]
[]
[AuxVariables]
[htc_ext]
initial_condition = ${htc}
[]
[]
[Functions]
[source_term]
type = ParsedFunction
expression = '20 * x * x - 40 * x + 20 - 40 * t'
[]
[]
[ICs]
[T_ic]
type = ConstantIC
variable = T
value = 300
[]
[]
[Kernels]
[td]
type = ADTimeDerivative
variable = T
[]
[diff]
type = ADDiffusion
variable = T
[]
[source]
type = BodyForce
function = 'source_term'
variable = T
[]
[]
[BCs]
[left]
type = FunctionDirichletBC
variable = T
boundary = left
function = left_bc_fn
[]
[right]
type = NeumannBC
variable = T
boundary = right
value = 0
[]
[]
[Executioner]
type = Transient
dt = 0.5
end_time = 10
nl_abs_tol = 1e-10
abort_on_solve_fail = true
[]
[MultiApps]
[thm]
type = TransientMultiApp
app_type = ThermalHydraulicsApp
input_files = plate.i
execute_on = TIMESTEP_END
[]
[]
[Transfers]
[T_to_child]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = thm
source_variable = T
variable = T_ext
[]
[htc_to_child]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = thm
source_variable = htc_ext
variable = htc_ext
[]
[]
[Outputs]
exodus = true
[]
(test/tests/multiapps/picard/picard_custom_postprocessor.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[force_u]
type = CoupledForce
variable = u
v = v
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[unorm_begin]
type = ElementL2Norm
variable = u
execute_on = 'initial timestep_begin'
outputs = none
[]
[unorm]
type = ElementL2Norm
variable = u
execute_on = 'initial timestep_end'
[]
[unorm_err]
type = RelativeDifferencePostprocessor
value1 = unorm
value2 = unorm_begin
outputs = none
[]
[vnorm]
type = ElementL2Norm
variable = v
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 30
disable_fixed_point_residual_norm_check = true
custom_pp = unorm_err
nl_abs_tol = 1e-14
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
input_files = steady_picard_sub.i
no_backup_and_restore = true
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(modules/thermal_hydraulics/test/tests/components/heat_transfer_from_external_app_1phase/phy.T_wall_transfer_3eqn.parent.i)
# This tests a temperature transfer using the MultiApp system. Simple heat
# conduction problem is solved, then the temperature is picked up by the child
# side of the solve, child side solves and transfers its variables back to the
# master
[Mesh]
type = GeneratedMesh
dim = 1
xmax = 1
nx = 10
[]
[Functions]
[left_bc_fn]
type = PiecewiseLinear
x = '0 1'
y = '300 310'
[]
[]
[Variables]
[T]
[]
[]
[ICs]
[T_ic]
type = ConstantIC
variable = T
value = 300
[]
[]
[Kernels]
[td]
type = TimeDerivative
variable = T
[]
[diff]
type = Diffusion
variable = T
[]
[]
[BCs]
[left]
type = FunctionDirichletBC
variable = T
boundary = left
function = left_bc_fn
[]
[]
[Executioner]
type = Transient
dt = 0.5
end_time = 5
nl_abs_tol = 1e-10
abort_on_solve_fail = true
[]
[MultiApps]
[thm]
type = TransientMultiApp
app_type = ThermalHydraulicsApp
input_files = phy.T_wall_transfer_3eqn.child.i
execute_on = TIMESTEP_END
[]
[]
[Transfers]
[T_to_child]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = thm
source_variable = T
variable = T_wall
[]
[]
[Outputs]
exodus = true
[]
(test/tests/multiapps/picard_multilevel/picard_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[coupled_force]
type = CoupledForce
variable = u
v = v
[]
[time]
type = TimeDerivative
variable = u
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[picard_its]
type = NumFixedPointIterations
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
num_steps = 5
dt = 1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 30
nl_rel_tol = 1e-8
nl_abs_tol = 1e-9
fixed_point_rel_tol = 1e-8
fixed_point_abs_tol = 1e-9
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub1]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0 0 0'
input_files = picard_sub.i
execute_on = 'timestep_end'
[]
[]
[Transfers]
[v]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub1
source_variable = v
variable = v
[]
[]
(test/tests/multiapps/picard_multilevel/multilevel_dt_rejection/picard_sub.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[v]
[]
[]
[AuxVariables]
[v2]
[]
[v3]
[]
[w]
[]
[]
[AuxKernels]
[set_w]
type = NormalizationAux
variable = w
source_variable = v
normal_factor = 0.1
[]
[]
[Kernels]
[diff_v]
type = Diffusion
variable = v
[]
[coupled_force]
type = CoupledForce
variable = v
v = v2
[]
[coupled_force2]
type = CoupledForce
variable = v
v = v3
[]
[td_v]
type = TimeDerivative
variable = v
[]
[]
[BCs]
[left_v]
type = FunctionDirichletBC
variable = v
boundary = left
function = func
[]
[right_v]
type = DirichletBC
variable = v
boundary = right
value = 0
[]
[]
[Functions]
[func]
type = ParsedFunction
expression = 'if(t < 2.5, 1, 1 / t)'
[]
[]
[Postprocessors]
[picard_its]
type = NumFixedPointIterations
execute_on = 'initial timestep_end'
[]
[parent_time]
type = Receiver
execute_on = 'timestep_end'
[]
[parent_dt]
type = Receiver
execute_on = 'timestep_end'
[]
[time]
type = TimePostprocessor
execute_on = 'timestep_end'
[]
[dt]
type = TimestepSize
execute_on = 'timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 2 # deliberately make it fail at 2 to test the time step rejection behavior
nl_rel_tol = 1e-5 # loose enough to force multiple Picard iterations on this example
l_tol = 1e-5 # loose enough to force multiple Picard iterations on this example
fixed_point_rel_tol = 1e-8
num_steps = 2
[]
[MultiApps]
[sub2]
type = TransientMultiApp
positions = '0 0 0'
input_files = picard_sub2.i
execute_on = timestep_end
[]
[]
[Transfers]
[v_to_v3]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub2
source_variable = v
variable = v3
[]
[w]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub2
source_variable = w
variable = w
[]
[time_to_sub]
type = MultiAppPostprocessorTransfer
from_postprocessor = time
to_postprocessor = sub_time
to_multi_app = sub2
[]
[dt_to_sub]
type = MultiAppPostprocessorTransfer
from_postprocessor = dt
to_postprocessor = sub_dt
to_multi_app = sub2
[]
[matser_time_to_sub]
type = MultiAppPostprocessorTransfer
from_postprocessor = time
to_postprocessor = parent_time
to_multi_app = sub2
[]
[parent_dt_to_sub]
type = MultiAppPostprocessorTransfer
from_postprocessor = dt
to_postprocessor = parent_dt
to_multi_app = sub2
[]
[]
(test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/to_multiple_boundaries_parent.i)
# Parent mesh and sub mesh are same with 4x4 quad8 elements.
# parent mesh has top boundary fixed at u=2 and bottom fixed at u=-1
# sub mesh has top boundary fixed at v=2 and bottom fixed at v=1
# The u variable is transferred to the left and bottom boundaries of the sub,
# while the v variable is transferred to the right and top boundaries of the parent.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 4
ny = 4
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[from_sub]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[top]
type = DirichletBC
variable = u
boundary = top
value = 2.0
[]
[bottom]
type = DirichletBC
variable = u
boundary = bottom
value = -1.0
[]
[]
[Executioner]
type = Transient
num_steps = 1
dt = 1
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
input_files = to_multiple_boundaries_sub.i
execute_on = timestep_end
[]
[]
[Transfers]
[to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
to_boundaries = 'left bottom'
variable = from_parent
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
to_boundaries = 'right top'
variable = from_sub
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[]
(test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/fromsub_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
elem_type = QUAD8
[]
[Variables]
[u]
family = LAGRANGE
order = FIRST
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[AuxVariables]
[nodal_source_from_sub_nodal]
family = LAGRANGE
order = FIRST
[]
[nodal_source_from_sub_elemental]
family = MONOMIAL
order = CONSTANT
[]
[elemental_source_from_sub_nodal]
family = LAGRANGE
order = FIRST
[]
[elemental_source_from_sub_elemental]
family = MONOMIAL
order = CONSTANT
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Executioner]
type = Transient
num_steps = 1
dt = 1
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0.48 0.01 0 -1.01 0.01 0'
input_files = fromsub_sub.i
output_in_position = true
[]
[]
[Transfers]
[from_sub_nodal_from_nodal]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = u
variable = nodal_source_from_sub_nodal
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[from_sub_nodal_from_elemental]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = u
variable = nodal_source_from_sub_elemental
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[from_sub_elemental_from_nodal]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = u_elemental
variable = elemental_source_from_sub_nodal
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[from_sub_elemental_from_elemental]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = u_elemental
variable = elemental_source_from_sub_elemental
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[]
(test/tests/multiapps/relaxation/bad_relax_factor_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
initial_condition = 1
[]
[inverse_v]
initial_condition = 1
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[time]
type = TimeDerivative
variable = u
[]
[force_u]
type = CoupledForce
variable = u
v = inverse_v
[]
[]
[AuxKernels]
[invert_v]
type = QuotientAux
variable = inverse_v
denominator = v
numerator = 20.0
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[Neumann_right]
type = NeumannBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[picard_its]
type = NumFixedPointIterations
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
num_steps = 4
dt = 0.5
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 30
nl_abs_tol = 1e-14
relaxation_factor = 2.0
transformed_variables = u
[]
[Outputs]
exodus = true
execute_on = 'INITIAL TIMESTEP_END'
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
execute_on = timestep_begin
positions = '0 0 0'
input_files = picard_relaxed_sub.i
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(modules/thermal_hydraulics/test/tests/components/heat_transfer_from_external_app_1phase/phy.q_wall_transfer_3eqn.parent.i)
# This tests a heat flux transfer using the MultiApp system. Simple heat
# conduction problem is solved, then the heat flux is picked up by the child
# side of the solve, child side solves and transfers its variables back to the
# master
[Mesh]
type = GeneratedMesh
dim = 1
xmax = 1
nx = 10
[]
[Functions]
[sin_fn]
type = ParsedFunction
expression = '1000*t*sin(pi*x)'
[]
[]
[Variables]
[T]
[]
[]
[AuxVariables]
[q_wall]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[q_wal_ak]
type = FunctionAux
variable = q_wall
function = sin_fn
execute_on = 'initial timestep_end'
[]
[]
[ICs]
[T_ic]
type = ConstantIC
variable = T
value = 300
[]
[]
[Kernels]
[td]
type = TimeDerivative
variable = T
[]
[diff]
type = Diffusion
variable = T
[]
[]
[BCs]
[left]
type = DirichletBC
variable = T
boundary = 'left right'
value = 300
[]
[]
[Executioner]
type = Transient
dt = 0.5
num_steps = 2
nl_abs_tol = 1e-10
abort_on_solve_fail = true
[]
[MultiApps]
[thm]
type = TransientMultiApp
app_type = ThermalHydraulicsApp
input_files = phy.q_wall_transfer_3eqn.child.i
execute_on = 'initial timestep_end'
[]
[]
[Transfers]
[q_to_thm]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = thm
source_variable = q_wall
variable = q_wall
[]
[]
[Outputs]
exodus = true
show = 'q_wall'
[]
(test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/fromsub_displaced_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[from_sub]
[]
[elemental_from_sub]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Executioner]
type = Transient
num_steps = 1
dt = 1
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0.48 0 0 -1.01 0 0'
input_files = fromsub_displaced_sub.i
[]
[]
[Transfers]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = u
variable = from_sub
displaced_source_mesh = true
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[elemental_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = u
variable = elemental_from_sub
displaced_source_mesh = true
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[]
(test/tests/transfers/general_field/nearest_node/nearest_position/main.i)
# Base input for testing transfers. It has the following complexities:
# - more than one subapp
# - transfers both from and to the subapps
# - both nodal and elemental variables
# Tests derived from this input may add complexities through command line arguments
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[AuxVariables]
[to_sub]
[InitialCondition]
type = FunctionIC
function = '1 + 2*x*x + 3*y*y*y'
[]
[]
[to_sub_elem]
order = CONSTANT
family = MONOMIAL
[InitialCondition]
type = FunctionIC
function = '2 + 2*x*x + 3*y*y*y'
[]
[]
[from_sub]
initial_condition = -1
[]
[from_sub_elem]
order = CONSTANT
family = MONOMIAL
initial_condition = -1
[]
[]
[Executioner]
type = Steady
[]
[Problem]
solve = false
verbose_multiapps = true
[]
[Outputs]
[out]
type = Exodus
overwrite = true
hide = 'to_sub to_sub_elem'
[]
[]
[Positions]
[input]
type = InputPositions
positions = '1e-6 0 0 0.4 0.6001 0'
[]
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
positions_objects = input
app_type = MooseTestApp
input_files = sub.i
output_in_position = true
execute_on = TIMESTEP_END
[]
[]
[Transfers]
[to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub
variable = from_main
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[to_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub_elem
variable = from_main_elem
[]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main
variable = from_sub
use_nearest_position = input
bbox_factor = 100
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[from_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main_elem
variable = from_sub_elem
use_nearest_position = input
bbox_factor = 100
[]
[]
(test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/target_boundary_parent.i)
[Mesh]
[drmg]
type = DistributedRectilinearMeshGenerator
dim = 2
nx = 30
ny = 30
xmax = 2
elem_type = QUAD4
partition = square
[]
[]
[Variables]
[u][]
[]
[Kernels]
[conduction]
type = Diffusion
variable = u
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = 'left'
value = 1
[]
[right]
type = DirichletBC
variable = u
boundary = 'right'
value = 10
[]
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
app_type = MooseTestApp
input_files = 'target_boundary_sub.i'
positions = '-1.0 0.0 0.0
2. 0.0 0.0'
output_in_position = true
execute_on = 'timestep_end'
[]
[]
[Transfers]
[target_boundary]
type = MultiAppGeneralFieldNearestLocationTransfer
source_variable = u
to_multi_app = sub
variable = source
to_boundaries = 'right'
[]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-6
[]
[Outputs]
exodus = true
[]
(test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/boundary_toparent_parent.i)
# Parent mesh and sub mesh are same with 4x4 quad8 elements.
# parent mesh has top boundary fixed at u=2 and bottom fixed at u=0
# sub mesh has top boundary fixed at u = 0 and bottom fixed at u=1
# The u variable at right boundary of sub mesh is transferred to
# from_sub variable of parent mesh at left boundary
# Result is from_sub at left boundary has linearly increasing value starting
# with 0 at top and ending with 1 at bottom. from_sub is zero everywhere else
# in the parent mesh.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 4
ny = 4
elem_type = QUAD8
[]
[Variables]
[u]
family = LAGRANGE
order = FIRST
[]
[]
[AuxVariables]
[from_sub]
family = LAGRANGE
order = SECOND
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[top]
type = DirichletBC
variable = u
boundary = top
value = 2.0
[]
[bottom]
type = DirichletBC
variable = u
boundary = bottom
value = 0.0
[]
[]
[Executioner]
type = Transient
num_steps = 1
dt = 1
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0 0 0'
input_files = boundary_toparent_sub.i
[]
[]
[Transfers]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = u
from_boundaries = 'right'
to_boundaries = 'left'
variable = from_sub
[]
[]
(test/tests/transfers/general_field/nearest_node/nearest_position/main_between_multiapp.i)
# Base input for testing between-multiapp transfers. It has the following complexities:
# - multiapps may not be run with the same number of ranks
# - both nodal and elemental variables
# Tests derived from this input may add or remove complexities through command line arguments
[Problem]
solve = false
[]
[Mesh]
type = GeneratedMesh
dim = 2
[]
[Positions]
[input_app1]
type = InputPositions
positions = '0 0.1 0
0.5 0.5 0'
[]
[input_app2]
type = InputPositions
# offsets to avoid indetermination
# but small enough to remain below to bounding box factor bump
positions = '0.0000001 0.30000000001 0
0.60000000001 0.5003 0'
[]
[]
# This application uses at most 3 processes
[MultiApps/ma1]
type = TransientMultiApp
input_files = sub_between_diffusion.i
max_procs_per_app = 3
positions_objects = 'input_app1'
output_in_position = true
[]
# This application will use as many processes as the main app
[MultiApps/ma2]
type = TransientMultiApp
input_files = sub_between_diffusion.i
positions_objects = 'input_app2'
output_in_position = true
[]
[Transfers]
# Nodal to nodal variables
[app1_to_2_nodal_nodal]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = ma1
to_multi_app = ma2
source_variable = sent_nodal
variable = received_nodal
use_nearest_position = input_app1
# slight inflation to avoid floating point issues on borders
bbox_factor = 1.000001
search_value_conflicts = true
group_subapps = true
[]
[app2_to_1_nodal_nodal]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = ma2
to_multi_app = ma1
source_variable = sent_nodal
variable = received_nodal
use_nearest_position = input_app2
bbox_factor = 1.000001
search_value_conflicts = true
group_subapps = true
[]
# Elemental to elemental variables
[app1_to_2_elem_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = ma1
to_multi_app = ma2
source_variable = sent_elem
variable = received_elem
use_nearest_position = input_app1
bbox_factor = 1.000001
search_value_conflicts = true
group_subapps = true
[]
[app2_to_1_elem_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = ma2
to_multi_app = ma1
source_variable = sent_elem
variable = received_elem
use_nearest_position = input_app2
bbox_factor = 1.000001
search_value_conflicts = true
group_subapps = true
[]
[]
[Executioner]
type = Transient
num_steps = 1
[]
(test/tests/multiapps/picard_multilevel/multilevel_dt_rejection/parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[AuxKernels]
[set_v]
type = FunctionAux
variable = v
function = 't'
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[coupled_force]
type = CoupledForce
variable = u
v = v
[]
[time]
type = TimeDerivative
variable = u
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
num_steps = 2
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 1
auto_advance = false
[]
[MultiApps]
[sub1]
type = TransientMultiApp
positions = '0 0 0'
input_files = picard_sub.i
execute_on = 'timestep_end'
[]
[]
[Transfers]
[u_to_v2]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub1
source_variable = u
variable = v2
[]
[time_to_sub]
type = MultiAppPostprocessorTransfer
from_postprocessor = time
to_postprocessor = parent_time
to_multi_app = sub1
[]
[dt_to_sub]
type = MultiAppPostprocessorTransfer
from_postprocessor = dt
to_postprocessor = parent_dt
to_multi_app = sub1
[]
[]
[Postprocessors]
[time]
type = TimePostprocessor
execute_on = 'timestep_end'
[]
[dt]
type = TimestepSize
execute_on = 'timestep_end'
[]
[]
(test/tests/multiapps/restart/parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
ymin = 0
xmax = 1
ymax = 1
nx = 10
ny = 10
[]
[Functions]
[v_fn]
type = ParsedFunction
expression = t*x
[]
[ffn]
type = ParsedFunction
expression = x
[]
[]
[AuxVariables]
[v]
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[td]
type = TimeDerivative
variable = u
[]
[ufn]
type = BodyForce
variable = u
function = ffn
[]
[]
[BCs]
[all]
type = FunctionDirichletBC
variable = u
boundary = 'left right top bottom'
function = v_fn
[]
[]
[Executioner]
type = Transient
num_steps = 5
dt = 0.1
solve_type = 'PJFNK'
[]
[Outputs]
exodus = true
checkpoint = true
[]
[MultiApps]
[sub_app]
app_type = MooseTestApp
type = TransientMultiApp
input_files = 'sub.i'
execute_on = timestep_end
positions = '0 -1 0'
[]
[]
[Transfers]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub_app
source_variable = u
variable = v
[]
[]
(test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/two_way_many_apps_parent.i)
# In this test, the parent App is a 10x10 grid on the unit square, and
# there are 5 Sub Apps which correspond to each vertex of the unit square
# and the center, arranged in the following order:
# 3 4
# 2
# 0 1
# Sub Apps 0, 1, 3, and 4 currently overlap with a single element in
# each corner of the parent App, while Sub App 2 overlaps with 4
# parent App elements in the center. Note that we move the corner Sub
# Apps "outward" slightly along the diagonals to avoid ambiguity with
# which child app is "nearest" to a given parent App element centroid.
# This makes it easier to visually verify that the Transfers are
# working correctly.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[from_sub]
[]
[elemental_from_sub]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Executioner]
type = Transient
num_steps = 1
dt = 1
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub]
# Note, in case you want to modify this test. It is important that there are
# an odd number of apps because this way we will catch errors caused by load
# imbalances with our -p 2 tests.
# The tiny offsets are to remove indetermination on nodal variable transfers
type = TransientMultiApp
app_type = MooseTestApp
positions = '-0.1100001 -0.1100001 0.0
0.9100001 -0.1100001 0.0
0.400001 0.400001 0.0
-0.1100001 0.9100001 0.0
0.9100001 0.9100001 0.0'
input_files = two_way_many_apps_sub.i
execute_on = timestep_end
output_in_position = true
[]
[]
[Transfers]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = u
variable = from_sub
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[elemental_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = u_elem
variable = elemental_from_sub
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
greedy_search = true
[]
[to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = from_parent
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[elemental_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = elemental_from_parent
# Transfer relies on two nodes that are equidistant to the target point
search_value_conflicts = false
[]
[]
(test/tests/multiapps/relaxation/sub_relaxed_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
initial_condition = 1
[]
[inverse_v]
initial_condition = 1
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[time]
type = TimeDerivative
variable = u
[]
[force_u]
type = CoupledForce
variable = u
v = inverse_v
[]
[]
[AuxKernels]
[invert_v]
type = QuotientAux
variable = inverse_v
denominator = v
numerator = 20.0
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[Neumann_right]
type = NeumannBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[picard_its]
type = NumFixedPointIterations
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
num_steps = 4
dt = 0.5
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 30
nl_abs_tol = 1e-14
[]
[Outputs]
exodus = true
execute_on = 'INITIAL TIMESTEP_END'
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
execute_on = timestep_begin
positions = '0 0 0'
input_files = sub_relaxed_sub.i
transformed_variables = v
relaxation_factor = 0.94
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(test/tests/multiapps/picard/pseudo_transient_picard_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[force_u]
type = CoupledForce
variable = u
v = v
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[unorm]
type = ElementL2Norm
variable = u
execute_on = 'initial timestep_end'
[]
[vnorm]
type = ElementL2Norm
variable = v
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 30
fixed_point_rel_tol = 1e-6
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
input_files = pseudo_transient_picard_sub.i
no_backup_and_restore = true
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(test/tests/multiapps/restart_multilevel/sub.i)
[Mesh]
type = GeneratedMesh
dim = 1
xmin = 0
xmax = 1
nx = 10
[]
[Functions]
[u_fn]
type = ParsedFunction
expression = t*x
[]
[ffn]
type = ParsedFunction
expression = x
[]
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[td]
type = TimeDerivative
variable = u
[]
[fn]
type = BodyForce
variable = u
function = ffn
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = FunctionDirichletBC
variable = u
boundary = right
function = u_fn
[]
[]
[Executioner]
type = Transient
num_steps = 5
dt = 0.1
solve_type = 'PJFNK'
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub_app]
app_type = MooseTestApp
type = TransientMultiApp
input_files = 'subsub.i'
execute_on = timestep_end
positions = '0 -1 0'
[]
[]
[Transfers]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub_app
source_variable = u
variable = v
[]
[]
(test/tests/transfers/general_field/nearest_node/mesh_division/main_match_subapps.i)
# Base input for testing transfers with mesh divisions restrictions. The mesh divisions
# in the parent app will be matched with a subapp index.
# In the to_multiapp direction, the main app data at the mesh division bins of index 1-4 will
# be transferred to subapps of index 1-4 respectively
# In the from_multiapp direction, the main app fields at the mesh divisions bins of index 1-4
# will receive data (be transferred) from subapps of index 1-4 respectively
# It has the following complexities:
# - several sub-applications
# - transfers both from and to the subapps
# - both nodal and elemental variables
# Tests derived from this input may add complexities through command line arguments
[Mesh]
type = GeneratedMesh
dim = 2
nx = 4
ny = 4
[]
[MeshDivisions]
[middle]
type = CartesianGridDivision
bottom_left = '0.21 0.21 0'
# cover more and sample more bins
top_right = '1.001 1.001 0'
nx = 2
ny = 2
nz = 1
[]
[]
[AuxVariables]
[from_sub]
initial_condition = -1
[]
[from_sub_elem]
order = CONSTANT
family = MONOMIAL
initial_condition = -1
[]
[to_sub]
[InitialCondition]
type = FunctionIC
function = '1 + 2*x*x + 3*y*y*y'
[]
[]
[to_sub_elem]
order = CONSTANT
family = MONOMIAL
[InitialCondition]
type = FunctionIC
function = '2 + 2*x*x + 3*y*y*y'
[]
[]
[]
[Executioner]
type = Steady
[]
[Problem]
solve = false
[]
[Outputs]
[out]
type = Exodus
hide = 'to_sub to_sub_elem div'
overwrite = true
[]
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
app_type = MooseTestApp
input_files = sub.i
output_in_position = true
# The positions are randomly offset to prevent equi-distant nearest-locations
positions = '0.1001 0.0000013 0
0.30054 0.600001985 0
0.70021 0.4000022 0
0.800212 0.8500022 0'
# To differentiate the values received from each subapp
cli_args = 'base_value=1 base_value=2 base_value=3 base_value=4'
[]
[]
[Transfers]
[to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub
variable = from_main
from_mesh_division = middle
from_mesh_division_usage = 'matching_subapp_index'
[]
[to_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub_elem
variable = from_main_elem
from_mesh_division = middle
from_mesh_division_usage = 'matching_subapp_index'
[]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main
variable = from_sub
to_mesh_division = middle
to_mesh_division_usage = 'matching_subapp_index'
[]
[from_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main_elem
variable = from_sub_elem
to_mesh_division = middle
to_mesh_division_usage = 'matching_subapp_index'
[]
[]
# For debugging purposes
[AuxVariables]
[div]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[mesh_div]
type = MeshDivisionAux
variable = div
mesh_division = 'middle'
[]
[]
(test/tests/outputs/console/multiapp/picard_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[time]
type = TimeDerivative
variable = u
[]
[force_u]
type = CoupledForce
variable = u
v = v
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[picard_its]
type = NumFixedPointIterations
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
num_steps = 10
dt = 0.1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 30
nl_abs_tol = 1e-14
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0 0 0'
input_files = picard_sub.i
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(modules/thermal_hydraulics/test/tests/components/form_loss_from_external_app_1phase/phy.form_loss_1phase.parent.i)
# This tests a form loss transfer using the MultiApp system. A dummy heat
# conduction problem is solved, then the form loss evaluated and transferred
# to the child app side of the solve, then the child app solves and then the
# parent continues solving
[Mesh]
type = GeneratedMesh
dim = 1
xmax = 2
nx = 10
[]
[Functions]
[left_bc_fn]
type = PiecewiseLinear
x = '0 1'
y = '300 310'
[]
[K_prime_fn]
type = ParsedFunction
expression = 't*(2-x)*x'
[]
[]
[AuxVariables]
[K_prime]
[]
[]
[AuxKernels]
[K_prime_ak]
type = FunctionAux
variable = K_prime
function = K_prime_fn
[]
[]
[Variables]
[T]
[]
[]
[ICs]
[T_ic]
type = ConstantIC
variable = T
value = 300
[]
[]
[Kernels]
[td]
type = TimeDerivative
variable = T
[]
[diff]
type = Diffusion
variable = T
[]
[]
[BCs]
[left]
type = FunctionDirichletBC
variable = T
boundary = left
function = left_bc_fn
[]
[]
[Executioner]
type = Transient
dt = 0.5
end_time = 5
nl_abs_tol = 1e-10
abort_on_solve_fail = true
[]
[MultiApps]
[child]
type = TransientMultiApp
app_type = ThermalHydraulicsApp
input_files = phy.form_loss_1phase.child.i
execute_on = 'timestep_end'
[]
[]
[Transfers]
[K_to_s]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = child
source_variable = K_prime
variable = K_prime
[]
[]
(test/tests/multiapps/picard/steady_custom_picard_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[force_u]
type = CoupledForce
variable = u
v = v
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[unorm]
type = ElementL2Norm
variable = u
execute_on = 'initial timestep_end'
[]
[vnorm]
type = ElementL2Norm
variable = v
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = SteadyWithPicardCheck
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 30
disable_fixed_point_residual_norm_check = true
pp_name = unorm
pp_step_tol = 1e-4
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
input_files = steady_picard_sub.i
no_backup_and_restore = true
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(test/tests/multiapps/picard/steady_picard_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[force_u]
type = CoupledForce
variable = u
v = v
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[unorm]
type = ElementL2Norm
variable = u
execute_on = 'initial timestep_end'
[]
[vnorm]
type = ElementL2Norm
variable = v
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Steady
nl_abs_tol = 1e-14
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 10
fixed_point_rel_tol = 1e-6
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
input_files = steady_picard_sub.i
no_backup_and_restore = true
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(test/tests/multiapps/restart_multilevel/parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
ymin = 0
xmax = 1
ymax = 1
nx = 10
ny = 10
[]
[Functions]
[v_fn]
type = ParsedFunction
expression = t*x
[]
[ffn]
type = ParsedFunction
expression = x
[]
[]
[AuxVariables]
[v]
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[td]
type = TimeDerivative
variable = u
[]
[ufn]
type = BodyForce
variable = u
function = ffn
[]
[]
[BCs]
[all]
type = FunctionDirichletBC
variable = u
boundary = 'left right top bottom'
function = v_fn
[]
[]
[Executioner]
type = Transient
num_steps = 5
dt = 0.1
solve_type = 'PJFNK'
[]
[Outputs]
exodus = true
checkpoint = true
[]
[MultiApps]
[sub_app]
app_type = MooseTestApp
type = TransientMultiApp
input_files = 'sub.i'
execute_on = timestep_end
positions = '0 -1 0'
[]
[]
[Transfers]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub_app
source_variable = u
variable = v
[]
[]
(test/tests/multiapps/picard_catch_up/parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[time]
type = TimeDerivative
variable = u
[]
[force_u]
type = CoupledForce
variable = u
v = 'v'
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
preset = false
boundary = 'left'
value = 0
[]
[right]
type = DirichletBC
variable = u
preset = false
boundary = 'right'
value = 1
[]
[]
[Postprocessors]
[picard_its]
type = NumFixedPointIterations
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
num_steps = 2
dt = 0.1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 30
nl_abs_tol = 1e-14
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0 0 0'
input_files = 'sub.i'
max_catch_up_steps = 100
max_failures = 100
catch_up = true
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(test/tests/transfers/general_field/nearest_node/regular/main.i)
# Base input for testing transfers. It has the following complexities:
# - more than one subapp
# - transfers both from and to the subapps
# - both nodal and elemental variables
# Tests derived from this input may add complexities through command line arguments
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[AuxVariables]
[from_sub]
initial_condition = -1
[]
[from_sub_elem]
order = CONSTANT
family = MONOMIAL
initial_condition = -1
[]
[to_sub]
[InitialCondition]
type = FunctionIC
function = '1 + 2*x*x + 3*y*y*y'
[]
[]
[to_sub_elem]
order = CONSTANT
family = MONOMIAL
[InitialCondition]
type = FunctionIC
function = '2 + 2*x*x + 3*y*y*y'
[]
[]
[]
[Executioner]
type = Steady
[]
[Problem]
solve = false
[]
[Outputs]
[out]
type = Exodus
hide = 'to_sub to_sub_elem'
overwrite = true
[]
[]
[MultiApps]
[sub]
# 1 on corner, one in the center and one close to a corner
# The offsets are to avoid equidistant points
positions = '0.000001 0 0 0.4111 0.4112 0 0.6999 0.099 0'
type = FullSolveMultiApp
app_type = MooseTestApp
input_files = sub.i
output_in_position = true
[]
[]
[Transfers]
[to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub
variable = from_main
[]
[to_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub_elem
variable = from_main_elem
[]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main
variable = from_sub
[]
[from_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main_elem
variable = from_sub_elem
[]
[]
(test/tests/transfers/general_field/nearest_node/duplicated_nearest_node_tests/parallel_parent.i)
# This test was introduced for Issue #804 which saw data corruption
# during NearestNodeTransfer when running in parallel
[Mesh]
type = GeneratedMesh
dim = 2
nx = 100
ny = 100
parallel_type = replicated
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./from_sub]
[../]
[]
[Kernels]
[./diff]
type = Diffusion
variable = u
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = u
boundary = left
value = 0
[../]
[./right]
type = DirichletBC
variable = u
boundary = right
value = 1
[../]
[]
[Executioner]
type = Transient
num_steps = 1
dt = 1
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
[MultiApps]
[./sub]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0 1.0 0.0'
input_files = parallel_sub.i
execute_on = 'timestep_end'
[../]
[]
[Transfers]
# Surface to volume data transfer
# This extrapolates, so we inflate the bounding box size
[./from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = u
variable = from_sub
execute_on = 'timestep_end'
fixed_bounding_box_size = '1 1 0'
[../]
[]
(test/tests/multiapps/picard_failure/picard_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[time]
type = TimeDerivative
variable = u
[]
[force_u]
type = CoupledForce
variable = u
v = v
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[picard_its]
type = NumFixedPointIterations
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
num_steps = 2
dt = 0.1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 30
nl_abs_tol = 1e-14
[]
[Outputs]
exodus = true
[]
[MultiApps]
active = 'sub' # will be modified by CLI overrides
[sub]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0 0 0'
input_files = picard_sub.i
[]
[sub_no_fail]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0 0 0'
input_files = picard_sub_no_fail.i
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(test/tests/transfers/get_transfers_from_feproblem/parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
# This test currently diffs when run in parallel with DistributedMesh enabled,
# most likely due to the fact that it uses some geometric search stuff.
# For more information, see #2121.
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[UserObjects]
[layered_average]
type = GetTransferUserObject
[]
[]
[Executioner]
type = Transient
num_steps = 1
dt = 1
nl_rel_tol = 1e-10
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
execute_on = timestep_end
positions = '0 0 0'
input_files = sub.i
[]
[]
[Transfers]
[nearest_node]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = nearest_node
[]
[mesh_function]
type = MultiAppGeneralFieldShapeEvaluationTransfer
to_multi_app = sub
source_variable = u
variable = mesh_function
[]
[]
(test/tests/multiapps/picard_multilevel/picard_sub.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[Variables]
[v]
[]
[]
[AuxVariables]
[v2]
[]
[]
[Kernels]
[diff_v]
type = Diffusion
variable = v
[]
[coupled_force]
type = CoupledForce
variable = v
v = v2
[]
[td_v]
type = TimeDerivative
variable = v
[]
[]
[BCs]
[left_v]
type = DirichletBC
variable = v
boundary = left
value = 1
[]
[right_v]
type = DirichletBC
variable = v
boundary = right
value = 0
[]
[]
[Postprocessors]
# Accumulate the number of times 'timestep_end' is reached
# (which is an indicator of the number of Picard iterations)
[cumulative_picard_its_pp]
type = TestPostprocessor
test_type = custom_execute_on
execute_on = 'timestep_end'
[]
[]
[Executioner]
type = Transient
num_steps = 5
dt = 1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 30
nl_rel_tol = 1e-8
nl_abs_tol = 1e-9
fixed_point_rel_tol = 1e-8
fixed_point_abs_tol = 1e-9
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub2]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0 0 0'
input_files = picard_sub2.i
sub_cycling = true
execute_on = timestep_end
[]
[]
[Transfers]
[v2]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub2
source_variable = v
variable = v2
[]
[]
(test/tests/multiapps/relaxation/picard_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
initial_condition = 1
[]
[inverse_v]
initial_condition = 1
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[time]
type = TimeDerivative
variable = u
[]
[force_u]
type = CoupledForce
variable = u
v = inverse_v
[]
[]
[AuxKernels]
[invert_v]
type = QuotientAux
variable = inverse_v
denominator = v
numerator = 20.0
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[Neumann_right]
type = NeumannBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[picard_its]
type = NumFixedPointIterations
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
num_steps = 4
dt = 0.5
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 30
nl_abs_tol = 1e-14
[]
[Outputs]
exodus = true
execute_on = 'INITIAL TIMESTEP_END'
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
execute_on = timestep_begin
positions = '0 0 0'
input_files = picard_relaxed_sub.i
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(test/tests/multiapps/picard/function_dt_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
ymin = 0
xmax = 1
ymax = 1
nx = 10
ny = 10
[]
[Functions]
[v_fn]
type = ParsedFunction
expression = t*x
[]
[ffn]
type = ParsedFunction
expression = x
[]
[dts]
type = PiecewiseLinear
x = '0.1 10'
y = '0.1 10'
[]
[]
[AuxVariables]
[v]
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[td]
type = TimeDerivative
variable = u
[]
[ufn]
type = BodyForce
variable = u
function = ffn
[]
[]
[BCs]
[all]
type = FunctionDirichletBC
variable = u
boundary = 'left right top bottom'
function = v_fn
[]
[]
[Executioner]
type = Transient
dt = 0.1
solve_type = 'PJFNK'
nl_abs_tol = 1e-10
fixed_point_max_its = 2
start_time = 0
num_steps = 3
[TimeStepper]
type = FunctionDT
function = dts
[]
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub_app]
app_type = MooseTestApp
type = TransientMultiApp
input_files = 'function_dt_sub.i'
execute_on = timestep_end
positions = '0 -1 0'
[]
[]
[Transfers]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub_app
source_variable = u
variable = v
[]
[]
(test/tests/transfers/general_field/nearest_node/nearest_position/main_single_sub.i)
# Base input for testing transfers. It has the following complexities:
# - more than one subapp
# - transfers both from and to the subapps
# - both nodal and elemental variables
# Tests derived from this input may add complexities through command line arguments
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[AuxVariables]
[to_sub]
[InitialCondition]
type = FunctionIC
function = '1 + 2*x*x + 3*y*y*y'
[]
[]
[to_sub_elem]
order = CONSTANT
family = MONOMIAL
[InitialCondition]
type = FunctionIC
function = '2 + 2*x*x + 3*y*y*y'
[]
[]
[from_sub]
initial_condition = -1
[]
[from_sub_elem]
order = CONSTANT
family = MONOMIAL
initial_condition = -1
[]
[]
[Executioner]
type = Steady
[]
[Problem]
solve = false
verbose_multiapps = true
[]
[Outputs]
[out]
type = Exodus
overwrite = true
hide = 'to_sub to_sub_elem'
[]
[]
[Positions]
[single]
type = InputPositions
# Tiny offset to steer clear of equidistance
positions = '0.000001 0.0000000001 0'
[]
[partition_app_domain]
type = InputPositions
# Tiny offsets to steer clear of equi-distance
# The top left and bottom right are closer to top right than to the bottom left corner
# This makes it so that the bottom left "nearest-area" is larger
# and the top-right "nearest" area is smaller
positions = '0.1 0.12 0
0.900008 0.130000000001 0
0.85000007 0.8500001 0
0.10001 0.75003 0'
[]
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
positions_objects = single
app_type = MooseTestApp
input_files = sub_holes.i
output_in_position = true
execute_on = TIMESTEP_END
[]
[]
[Transfers]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main
variable = from_sub
use_nearest_position = partition_app_domain
search_value_conflicts = true
bbox_factor = 10
group_subapps = true
[]
[from_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main_elem
variable = from_sub_elem
use_nearest_position = partition_app_domain
search_value_conflicts = true
bbox_factor = 10
group_subapps = true
[]
[]
(test/tests/multiapps/restart_multilevel/parent2.i)
[Mesh]
type = GeneratedMesh
dim = 2
xmin = 0
ymin = 0
xmax = 1
ymax = 1
nx = 10
ny = 10
[]
[Functions]
[v_fn]
type = ParsedFunction
expression = t*x
[]
[ffn]
type = ParsedFunction
expression = x
[]
[]
[AuxVariables]
[v]
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[td]
type = TimeDerivative
variable = u
[]
[ufn]
type = BodyForce
variable = u
function = ffn
[]
[]
[BCs]
[all]
type = FunctionDirichletBC
variable = u
boundary = 'left right top bottom'
function = v_fn
[]
[]
[Executioner]
type = Transient
num_steps = 5
dt = 0.1
solve_type = 'PJFNK'
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub_app]
app_type = MooseTestApp
type = TransientMultiApp
input_files = 'sub.i'
execute_on = timestep_end
positions = '0 -1 0'
[]
[]
[Transfers]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub_app
source_variable = u
variable = v
[]
[]
[Problem]
restart_file_base = parent_out_cp/0005
[]
(test/tests/transfers/general_field/nearest_node/boundary/main.i)
# Base input for testing transfers. It has the following complexities:
# - more than one subapp
# - transfers both from and to the subapps
# - both nodal and elemental variables
# - subapp meshes are not aligned with the main app
# Tests derived from this input may add complexities through command line arguments
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
nx = 5
ny = 5
nz = 5
[]
[add_block]
type = ParsedSubdomainMeshGenerator
input = gmg
combinatorial_geometry = 'x < 0.5 & y < 0.5'
block_id = 1
[]
[add_internal_sideset]
type = SideSetsBetweenSubdomainsGenerator
input = add_block
primary_block = 0
paired_block = 1
new_boundary = internal
[]
[]
[AuxVariables]
[from_sub]
initial_condition = -1
[]
[from_sub_elem]
order = CONSTANT
family = MONOMIAL
initial_condition = -1
[]
[to_sub]
[InitialCondition]
type = FunctionIC
function = '1 + 2*x*x + 3*y*y*y'
[]
[]
[to_sub_elem]
order = CONSTANT
family = MONOMIAL
[InitialCondition]
type = FunctionIC
function = '2 + 2*x*x + 3*y*y*y'
[]
[]
[]
[Executioner]
type = Transient
num_steps = 1
[]
[Problem]
solve = false
verbose_multiapps = true
[]
[Outputs]
[out]
type = Exodus
hide = 'to_sub to_sub_elem'
overwrite = true
[]
[]
[MultiApps]
[sub]
# 1 on corner, one in the center and one close to a corner
# The subapp mesh is a 0.3-sized cube, no overlap
positions = '0.2222 0.00002 0.0001 0.61111 0.311111 0.31211 0.76666 0.111114 0.81111'
type = TransientMultiApp
app_type = MooseTestApp
input_files = sub.i
execute_on = timestep_end
# Facilitates debugging
output_in_position = true
[]
[]
[Transfers]
# Boundary restrictions are added in the tests specification
[to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub
variable = from_main
[]
[to_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub_elem
variable = from_main_elem
[]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main
variable = from_sub
[]
[from_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main_elem
variable = from_sub_elem
[]
[]
(test/tests/multiapps/steffensen/transient_main.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 5
ny = 5
parallel_type = replicated
uniform_refine = 1
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[time]
type = TimeDerivative
variable = u
[]
[force_u]
type = CoupledForce
variable = u
v = v
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[coupling_its]
type = NumFixedPointIterations
execute_on = 'initial timestep_end'
[]
[unorm]
type = ElementL2Norm
variable = u
[]
[]
[Executioner]
type = Transient
num_steps = 10
dt = 0.1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
nl_abs_tol = 1e-14
fixed_point_algorithm = 'steffensen'
fixed_point_max_its = 30
transformed_variables = 'u'
[]
[Outputs]
csv = true
exodus = false
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0 0 0'
input_files = 'transient_sub.i'
clone_parent_mesh = true
execute_on = 'timestep_begin'
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
execute_on = 'timestep_begin'
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
execute_on = 'timestep_begin'
[]
[]
(test/tests/transfers/general_field/nearest_node/mesh_division/main.i)
# Base input for testing transfers. It has the following complexities:
# - transfers both from and to the subapps
# - both nodal and elemental variables
# Tests derived from this input may add complexities through command line arguments
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
[]
[MeshDivisions]
[middle]
type = CartesianGridDivision
bottom_left = '0.21 0.21 0'
top_right = '0.81 0.81 0'
nx = 2
ny = 2
nz = 1
[]
[]
[AuxVariables]
[from_sub]
initial_condition = -1
[]
[from_sub_elem]
order = CONSTANT
family = MONOMIAL
initial_condition = -1
[]
[to_sub]
[InitialCondition]
type = FunctionIC
function = '1 + 2*x*x + 3*y*y*y'
[]
[]
[to_sub_elem]
order = CONSTANT
family = MONOMIAL
[InitialCondition]
type = FunctionIC
function = '2 + 2*x*x + 3*y*y*y'
[]
[]
[]
[Executioner]
type = Steady
[]
[Problem]
solve = false
[]
[Outputs]
[out]
type = Exodus
hide = 'to_sub to_sub_elem div'
overwrite = true
[]
[]
[MultiApps]
[sub]
type = FullSolveMultiApp
app_type = MooseTestApp
input_files = sub.i
output_in_position = true
# The positions are randomly offset to prevent equi-distant nearest-locations
positions = '0.1001 0.0000013 0
0.30054 0.600001985 0
0.70021 0.0000022 0
0.800212 0.5500022 0'
cli_args = 'base_value=1 base_value=2 base_value=3 base_value=4'
[]
[]
[Transfers]
[to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub
variable = from_main
[]
[to_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = to_sub_elem
variable = from_main_elem
[]
[from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main
variable = from_sub
[]
[from_sub_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = to_main_elem
variable = from_sub_elem
[]
[]
# For debugging purposes
[AuxVariables]
[div]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[mesh_div]
type = MeshDivisionAux
variable = div
mesh_division = 'middle'
[]
[]
(test/tests/outputs/console/multiapp/picard_parent_both.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v_begin]
[]
[v_end]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[time]
type = TimeDerivative
variable = u
[]
[force_u_begin]
type = CoupledForce
variable = u
v = v_begin
[]
[force_u_end]
type = CoupledForce
variable = u
v = v_end
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[picard_its]
type = NumFixedPointIterations
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
num_steps = 10
dt = 0.1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
fixed_point_max_its = 30
nl_abs_tol = 1e-14
[]
[MultiApps]
[sub_begin]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0 0 0'
input_files = picard_sub.i
[]
[sub_end]
type = TransientMultiApp
app_type = MooseTestApp
positions = '1 1 1'
input_files = picard_sub.i
execute_on = 'timestep_end'
[]
[]
[Transfers]
[v_from_sub_begin]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub_begin
source_variable = v
variable = v_begin
[]
[u_to_sub_begin]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub_begin
source_variable = u
variable = u
[]
[v_from_sub_end]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub_end
source_variable = v
variable = v_end
[]
[u_to_sub_end]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub_end
source_variable = u
variable = u
[]
[]
(test/tests/multiapps/picard/picard_abs_tol_parent.i)
[Mesh]
type = GeneratedMesh
dim = 2
nx = 10
ny = 10
parallel_type = replicated
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[v]
[]
[]
[Kernels]
[diff]
type = CoefDiffusion
variable = u
coef = 0.1
[]
[time]
type = TimeDerivative
variable = u
[]
[force_u]
type = CoupledForce
variable = u
v = v
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Executioner]
type = Transient
num_steps = 20
dt = 0.1
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
nl_abs_tol = 1e-12
fixed_point_max_its = 10
fixed_point_abs_tol = 1e-9
[]
[Outputs]
exodus = true
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = MooseTestApp
positions = '0 0 0'
input_files = picard_sub.i
[]
[]
[Transfers]
[v_from_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = sub
source_variable = v
variable = v
[]
[u_to_sub]
type = MultiAppGeneralFieldNearestLocationTransfer
to_multi_app = sub
source_variable = u
variable = u
[]
[]
(test/tests/transfers/general_field/nearest_node/between_siblings/main_between_multiapp.i)
# Base input for testing between-multiapp transfers. It has the following complexities:
# - multiapps may not be run with the same number of ranks
# - both nodal and elemental variables
# - transfers between mixes of nodal and elemental variables
# Tests derived from this input may add or remove complexities through command line arguments
[Problem]
solve = false
[]
[Mesh]
type = GeneratedMesh
dim = 2
[]
# This application use at most 3 processes
[MultiApps/ma1]
type = TransientMultiApp
input_files = sub_between_diffusion1.i
max_procs_per_app = 3
[]
# This application will use as many processes as the main app
[MultiApps/ma2]
type = TransientMultiApp
input_files = sub_between_diffusion2.i
[]
[Transfers]
# Nodal to nodal variables
[app1_to_2_nodal_nodal]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = ma1
to_multi_app = ma2
source_variable = sent_nodal
variable = received_nodal
[]
[app2_to_1_nodal_nodal]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = ma2
to_multi_app = ma1
source_variable = sent_nodal
variable = received_nodal
[]
# Elemental to elemental variables
[app1_to_2_elem_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = ma1
to_multi_app = ma2
source_variable = sent_elem
variable = received_elem
[]
[app2_to_1_elem_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = ma2
to_multi_app = ma1
source_variable = sent_elem
variable = received_elem
[]
# Elemental to nodal variables
[app1_to_2_elem_nodal]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = ma1
to_multi_app = ma2
source_variable = sent_elem
variable = received_nodal
[]
[app2_to_1_elem_nodal]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = ma2
to_multi_app = ma1
source_variable = sent_elem
variable = received_nodal
[]
# Nodal to elemental variables
[app1_to_2_nodal_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = ma1
to_multi_app = ma2
source_variable = sent_nodal
variable = received_elem
[]
[app2_to_1_nodal_elem]
type = MultiAppGeneralFieldNearestLocationTransfer
from_multi_app = ma2
to_multi_app = ma1
source_variable = sent_nodal
variable = received_elem
[]
[]
[Executioner]
type = Transient
num_steps = 1
[]