From 6068f9f8fc46b54c8dd98e83cbc717d481bc65cc Mon Sep 17 00:00:00 2001 From: "Roy H. Stogner" Date: Thu, 26 Feb 2015 11:06:28 -0600 Subject: [PATCH] Reinit EquationSystems after adding new Systems This is one step towards getting #1913 working --- .../src/transfers/MultiAppProjectionTransfer.C | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/framework/src/transfers/MultiAppProjectionTransfer.C b/framework/src/transfers/MultiAppProjectionTransfer.C index 2ed3b77010ab..4ecd4edbe134 100644 --- a/framework/src/transfers/MultiAppProjectionTransfer.C +++ b/framework/src/transfers/MultiAppProjectionTransfer.C @@ -65,6 +65,11 @@ MultiAppProjectionTransfer::MultiAppProjectionTransfer(const std::string & name, { unsigned int n_apps = _multi_app->numGlobalApps(); _proj_sys.resize(n_apps, NULL); + + // Keep track of which EquationSystems just had new Systems + // added to them + std::set augmented_es; + for (unsigned int app = 0; app < n_apps; app++) { if (_multi_app->hasLocalApp(app)) @@ -84,11 +89,24 @@ MultiAppProjectionTransfer::MultiAppProjectionTransfer(const std::string & name, _proj_sys[app] = &proj_sys; + // We'll defer to_es.reinit() so we don't do it multiple + // times even if we add multiple new systems + augmented_es.insert(&to_es); + //to_problem.hideVariableFromOutput("var"); // hide the auxiliary projection variable Moose::swapLibMeshComm(swapped); } } + + // Make sure all new systems are initialized. + for (std::set::iterator es_iter = + augmented_es.begin(); + es_iter != augmented_es.end(); ++es_iter) + { + EquationSystems *es = *es_iter; + es->reinit(); + } } break;