diff --git a/framework/include/transfers/MultiAppProjectionTransfer.h b/framework/include/transfers/MultiAppProjectionTransfer.h index f1971cb38413..09f3eed876a2 100644 --- a/framework/include/transfers/MultiAppProjectionTransfer.h +++ b/framework/include/transfers/MultiAppProjectionTransfer.h @@ -31,6 +31,8 @@ class MultiAppProjectionTransfer : public MultiAppTransfer MultiAppProjectionTransfer(const std::string & name, InputParameters parameters); virtual ~MultiAppProjectionTransfer(); + virtual void initialSetup(); + virtual void execute(); protected: diff --git a/framework/src/transfers/MultiAppProjectionTransfer.C b/framework/src/transfers/MultiAppProjectionTransfer.C index 648b780b4d8f..b21dd5f90370 100644 --- a/framework/src/transfers/MultiAppProjectionTransfer.C +++ b/framework/src/transfers/MultiAppProjectionTransfer.C @@ -58,6 +58,15 @@ MultiAppProjectionTransfer::MultiAppProjectionTransfer(const std::string & name, _from_var_name(getParam("source_variable")), _proj_type(getParam("proj_type")), _compute_matrix(true) +{ +} + +MultiAppProjectionTransfer::~MultiAppProjectionTransfer() +{ +} + +void +MultiAppProjectionTransfer::initialSetup() { switch (_direction) { @@ -79,11 +88,12 @@ MultiAppProjectionTransfer::MultiAppProjectionTransfer(const std::string & name, FEProblem & to_problem = *_multi_app->appProblem(app); FEType fe_type(Utility::string_to_enum(getParam("order")), Utility::string_to_enum(getParam("family"))); - to_problem.addAuxVariable(_to_var_name, fe_type, NULL); + //to_problem.addAuxVariable(_to_var_name, fe_type, NULL); EquationSystems & to_es = to_problem.es(); LinearImplicitSystem & proj_sys = to_es.add_system("proj-sys-" + Utility::enum_to_string(fe_type.family) - + "-" + Utility::enum_to_string(fe_type.order)); + + "-" + Utility::enum_to_string(fe_type.order) + + "-" + name()); _proj_var_num = proj_sys.add_variable("var", fe_type); proj_sys.attach_assemble_function(assemble_l2_to); @@ -117,26 +127,24 @@ MultiAppProjectionTransfer::MultiAppProjectionTransfer(const std::string & name, FEProblem & to_problem = *_multi_app->problem(); FEType fe_type(Utility::string_to_enum(getParam("order")), Utility::string_to_enum(getParam("family"))); - to_problem.addAuxVariable(_to_var_name, fe_type, NULL); + //to_problem.addAuxVariable(_to_var_name, fe_type, NULL); EquationSystems & to_es = to_problem.es(); LinearImplicitSystem & proj_sys = to_es.add_system("proj-sys-" + Utility::enum_to_string(fe_type.family) - + "-" + Utility::enum_to_string(fe_type.order)); + + "-" + Utility::enum_to_string(fe_type.order) + + "-" + name()); _proj_var_num = proj_sys.add_variable("var", fe_type); proj_sys.attach_assemble_function(assemble_l2_from); _proj_sys[0] = &proj_sys; // to_problem.hideVariableFromOutput("var"); // hide the auxiliary projection variable + to_es.reinit(); } break; } } -MultiAppProjectionTransfer::~MultiAppProjectionTransfer() -{ -} - void MultiAppProjectionTransfer::assembleL2To(EquationSystems & es, const std::string & system_name) { @@ -215,6 +223,7 @@ MultiAppProjectionTransfer::assembleL2To(EquationSystems & es, const std::string system.rhs->add_vector(Fe, dof_indices); } } + delete serialized_from_solution; } void diff --git a/test/tests/transfers/multiapp_projection_transfer/fromsub_master.i b/test/tests/transfers/multiapp_projection_transfer/fromsub_master.i index 522c6ae0dec0..c9af2782d51b 100644 --- a/test/tests/transfers/multiapp_projection_transfer/fromsub_master.i +++ b/test/tests/transfers/multiapp_projection_transfer/fromsub_master.i @@ -14,6 +14,21 @@ [../] [] +[AuxVariables] + [./v_nodal] + [../] + [./v_elemental] + order = CONSTANT + family = MONOMIAL + [../] + [./x_nodal] + [../] + [./x_elemental] + order = CONSTANT + family = MONOMIAL + [../] +[] + [Kernels] [./diff] type = Diffusion diff --git a/test/tests/transfers/multiapp_projection_transfer/tests b/test/tests/transfers/multiapp_projection_transfer/tests index b12f9ccd24f0..c06c12bcd895 100644 --- a/test/tests/transfers/multiapp_projection_transfer/tests +++ b/test/tests/transfers/multiapp_projection_transfer/tests @@ -3,7 +3,7 @@ type = 'Exodiff' input = 'tosub_master.i' exodiff = 'tosub_master_out_sub0.e tosub_master_out_sub1.e' - deleted = 'Need to finish implementaiton - refs #1913' + #deleted = 'Need to finish implementaiton - refs #1913' [../] [./fromsub] diff --git a/test/tests/transfers/multiapp_projection_transfer/tosub_master.i b/test/tests/transfers/multiapp_projection_transfer/tosub_master.i index 202dd371b46b..eee1bfb80d51 100644 --- a/test/tests/transfers/multiapp_projection_transfer/tosub_master.i +++ b/test/tests/transfers/multiapp_projection_transfer/tosub_master.i @@ -65,7 +65,6 @@ dt = 1 solve_type = 'NEWTON' - print_linear_residuals = true [] [Outputs] diff --git a/test/tests/transfers/multiapp_projection_transfer/tosub_sub.i b/test/tests/transfers/multiapp_projection_transfer/tosub_sub.i index d20008233258..e49907aff348 100644 --- a/test/tests/transfers/multiapp_projection_transfer/tosub_sub.i +++ b/test/tests/transfers/multiapp_projection_transfer/tosub_sub.i @@ -14,20 +14,20 @@ [../] [] -#[AuxVariables] -# [./u_nodal] -# [../] -# [./u_elemental] -# order = CONSTANT -# family = MONOMIAL -# [../] -# [./x_elemental] -# order = CONSTANT -# family = MONOMIAL -# [../] -# [./x_nodal] -# [../] -#[] +[AuxVariables] + [./u_nodal] + [../] + [./u_elemental] + order = CONSTANT + family = MONOMIAL + [../] + [./x_elemental] + order = CONSTANT + family = MONOMIAL + [../] + [./x_nodal] + [../] +[] [Kernels] [./diff] @@ -57,12 +57,13 @@ dt = 1 solve_type = 'NEWTON' - print_linear_residuals = true [] [Outputs] output_initial = true - exodus = true - print_linear_residuals = true print_perf_log = true + [./out] + type = Exodus + elemental_as_nodal = true + [../] []