Skip to content

Commit

Permalink
Fixed ProjectionTransfer crash refs idaholab#1913
Browse files Browse the repository at this point in the history
  • Loading branch information
smharper committed Jun 16, 2015
1 parent b109b94 commit aa1b668
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 27 deletions.
2 changes: 2 additions & 0 deletions framework/include/transfers/MultiAppProjectionTransfer.h
Expand Up @@ -31,6 +31,8 @@ class MultiAppProjectionTransfer : public MultiAppTransfer
MultiAppProjectionTransfer(const std::string & name, InputParameters parameters);
virtual ~MultiAppProjectionTransfer();

virtual void initialSetup();

virtual void execute();

protected:
Expand Down
25 changes: 17 additions & 8 deletions framework/src/transfers/MultiAppProjectionTransfer.C
Expand Up @@ -58,6 +58,15 @@ MultiAppProjectionTransfer::MultiAppProjectionTransfer(const std::string & name,
_from_var_name(getParam<VariableName>("source_variable")),
_proj_type(getParam<MooseEnum>("proj_type")),
_compute_matrix(true)
{
}

MultiAppProjectionTransfer::~MultiAppProjectionTransfer()
{
}

void
MultiAppProjectionTransfer::initialSetup()
{
switch (_direction)
{
Expand All @@ -79,11 +88,12 @@ MultiAppProjectionTransfer::MultiAppProjectionTransfer(const std::string & name,
FEProblem & to_problem = *_multi_app->appProblem(app);
FEType fe_type(Utility::string_to_enum<Order>(getParam<MooseEnum>("order")),
Utility::string_to_enum<FEFamily>(getParam<MooseEnum>("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<LinearImplicitSystem>("proj-sys-" + Utility::enum_to_string<FEFamily>(fe_type.family)
+ "-" + Utility::enum_to_string<Order>(fe_type.order));
+ "-" + Utility::enum_to_string<Order>(fe_type.order)
+ "-" + name());
_proj_var_num = proj_sys.add_variable("var", fe_type);
proj_sys.attach_assemble_function(assemble_l2_to);

Expand Down Expand Up @@ -117,26 +127,24 @@ MultiAppProjectionTransfer::MultiAppProjectionTransfer(const std::string & name,
FEProblem & to_problem = *_multi_app->problem();
FEType fe_type(Utility::string_to_enum<Order>(getParam<MooseEnum>("order")),
Utility::string_to_enum<FEFamily>(getParam<MooseEnum>("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<LinearImplicitSystem>("proj-sys-" + Utility::enum_to_string<FEFamily>(fe_type.family)
+ "-" + Utility::enum_to_string<Order>(fe_type.order));
+ "-" + Utility::enum_to_string<Order>(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)
{
Expand Down Expand Up @@ -215,6 +223,7 @@ MultiAppProjectionTransfer::assembleL2To(EquationSystems & es, const std::string
system.rhs->add_vector(Fe, dof_indices);
}
}
delete serialized_from_solution;
}

void
Expand Down
15 changes: 15 additions & 0 deletions test/tests/transfers/multiapp_projection_transfer/fromsub_master.i
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion test/tests/transfers/multiapp_projection_transfer/tests
Expand Up @@ -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]
Expand Down
Expand Up @@ -65,7 +65,6 @@
dt = 1

solve_type = 'NEWTON'
print_linear_residuals = true
[]

[Outputs]
Expand Down
35 changes: 18 additions & 17 deletions test/tests/transfers/multiapp_projection_transfer/tosub_sub.i
Expand Up @@ -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]
Expand Down Expand Up @@ -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
[../]
[]

0 comments on commit aa1b668

Please sign in to comment.