MultiAppConservativeTransfer
It is essential to preserve a physics quantity during the transfer process for specific applications. For instance, neutron calculations' total power needs to be preserved when the power density is transferred to thermal calculations. That was implemented in the conservative transfer. The transfer is performed in the following steps:
Users get a solution in the source app ready and calculate to-be-preserved physics quantity based on the solution. The physics quantity is calculated using a postprocessor where users determine how they want to compute this quantity.
The solution is transferred to the target domain. A new physics quantity is calculated using the target solution. Again, that calculation is implemented as a postprocessor, where users should compute that according to the physics.
The target solution will be adjusted according to the source physics quantity and the target physics quantity.
The conservative quantity will be calculated again based on the adjusted target solution. The value is often printed on the screen for users' convenience.
The main picture of the conservative transfer can be explained mathematically as follows
,
where is a function used to compute a quantity of interest on the source domain and is a source physics field. is implemented as a postprocessor. and are corresponding counterparts on the target side. We emphasize that users are free to implement any postprocessor for according to the physics of interest.
Example Input File Syntax
The following examples demonstrate the use of the MultiAppConservativeTransfer for transferring solution.
[Transfers]
[to_sub]
type = MultiAppGeneralFieldShapeEvaluationTransfer
source_variable = u
variable = aux_u
to_multi_app = sub
from_postprocessors_to_be_preserved = 'from_postprocessor'
to_postprocessors_to_be_preserved = 'to_postprocessor'
[]
[]
(moose/test/tests/transfers/multiapp_conservative_transfer/parent_conservative_transfer.i)[Postprocessors]
[from_postprocessor]
type = ElementIntegralVariablePostprocessor
variable = u
[]
[]
(moose/test/tests/transfers/multiapp_conservative_transfer/parent_conservative_transfer.i)[Postprocessors]
[./to_postprocessor]
type = ElementIntegralVariablePostprocessor
variable = aux_u
execute_on = 'transfer'
[../]
[]
(moose/test/tests/transfers/multiapp_conservative_transfer/sub_conservative_transfer.i)