diff --git a/framework/include/base/Adaptivity.h b/framework/include/base/Adaptivity.h index ccc1c453920e..15c7eb894f1f 100644 --- a/framework/include/base/Adaptivity.h +++ b/framework/include/base/Adaptivity.h @@ -100,8 +100,10 @@ class Adaptivity /** * Adapts the mesh based on the error estimator used + * + * @return a boolean that indicates whether the mesh was changed */ - void adaptMesh(); + bool adaptMesh(); /** * Used during initial adaptivity. diff --git a/framework/src/base/Adaptivity.C b/framework/src/base/Adaptivity.C index abb34c73c2c4..ba84501e4639 100644 --- a/framework/src/base/Adaptivity.C +++ b/framework/src/base/Adaptivity.C @@ -111,9 +111,10 @@ Adaptivity::setErrorNorm(SystemNorm & sys_norm) _error_estimator->error_norm = sys_norm; } -void +bool Adaptivity::adaptMesh() { + bool meshChanged = false; if (_mesh_refinement_on && (_start_time <= _t && _t < _stop_time)) { if(_use_new_system) @@ -147,17 +148,23 @@ Adaptivity::adaptMesh() } // Perform refinement and coarsening - _mesh_refinement->refine_and_coarsen_elements(); + meshChanged = _mesh_refinement->refine_and_coarsen_elements(); if (_displaced_problem) - _displaced_mesh_refinement->refine_and_coarsen_elements(); + { + bool dispMeshChanged = _displaced_mesh_refinement->refine_and_coarsen_elements(); + if ((meshChanged && !dispMeshChanged) || + (!meshChanged && dispMeshChanged)) + mooseError("If either undisplaced mesh or displaced mesh changes due to adaptivity, both must change"); + } - if (_print_mesh_changed) + if (meshChanged && _print_mesh_changed) { std::cout << "\nMesh Changed:\n"; _mesh.printInfo(); } } + return meshChanged; } void diff --git a/framework/src/base/FEProblem.C b/framework/src/base/FEProblem.C index dd0986b5447b..fd05e46e6c70 100644 --- a/framework/src/base/FEProblem.C +++ b/framework/src/base/FEProblem.C @@ -3018,15 +3018,15 @@ FEProblem::adaptMesh() unsigned int cycles_per_step = _adaptivity.getCyclesPerStep(); for (unsigned int i=0; i < cycles_per_step; ++i) { - _adaptivity.adaptMesh(); - meshChanged(); + if (_adaptivity.adaptMesh()) + meshChanged(); } } #endif //LIBMESH_ENABLE_AMR void FEProblem::meshChanged() - { +{ if (_material_props.hasStatefulProperties()) _mesh.cacheChangedLists(); // Currently only used with adaptivity and stateful material properties @@ -3062,6 +3062,7 @@ FEProblem::meshChanged() } } + _out.meshChanged(); } void diff --git a/framework/src/executioners/Steady.C b/framework/src/executioners/Steady.C index c0ee74131a21..4e5ea0e3b600 100644 --- a/framework/src/executioners/Steady.C +++ b/framework/src/executioners/Steady.C @@ -91,7 +91,6 @@ Steady::execute() if(r_step != steps) { _problem.adaptMesh(); - _problem.out().meshChanged(); } _time_step++; diff --git a/framework/src/executioners/Transient.C b/framework/src/executioners/Transient.C index 16c3b918f7b9..303cd15542e6 100644 --- a/framework/src/executioners/Transient.C +++ b/framework/src/executioners/Transient.C @@ -306,7 +306,6 @@ Transient::endStep() if (_problem.adaptivity().isOn()) { _problem.adaptMesh(); - _problem.out().meshChanged(); } #endif diff --git a/framework/src/executioners/TransientAdaptive.C b/framework/src/executioners/TransientAdaptive.C index c450998c7aad..52287d815845 100644 --- a/framework/src/executioners/TransientAdaptive.C +++ b/framework/src/executioners/TransientAdaptive.C @@ -314,7 +314,6 @@ TransientAdaptive::execute() if (_fe_problem.adaptivity().isOn()) { _fe_problem.adaptMesh(); - _fe_problem.out().meshChanged(); } #endif } diff --git a/test/tests/adaptivity/initial_adapt/gold/initial_adapt_out.e b/test/tests/adaptivity/initial_adapt/gold/initial_adapt_out.e new file mode 100644 index 000000000000..30213a20aa99 Binary files /dev/null and b/test/tests/adaptivity/initial_adapt/gold/initial_adapt_out.e differ diff --git a/test/tests/adaptivity/initial_adapt/gold/initial_adapt_out.e-s004 b/test/tests/adaptivity/initial_adapt/gold/initial_adapt_out.e-s004 deleted file mode 100644 index 9629ce0c5454..000000000000 Binary files a/test/tests/adaptivity/initial_adapt/gold/initial_adapt_out.e-s004 and /dev/null differ diff --git a/test/tests/adaptivity/initial_adapt/tests b/test/tests/adaptivity/initial_adapt/tests index c533bc33df93..90f38e500b91 100644 --- a/test/tests/adaptivity/initial_adapt/tests +++ b/test/tests/adaptivity/initial_adapt/tests @@ -2,6 +2,6 @@ [./test] type = 'Exodiff' input = 'initial_adapt.i' - exodiff = 'initial_adapt_out.e-s004' + exodiff = 'initial_adapt_out.e' [../] [] diff --git a/test/tests/adaptivity/initial_marker/gold/initial_marker_out.e-s004 b/test/tests/adaptivity/initial_marker/gold/initial_marker_out.e-s003 similarity index 65% rename from test/tests/adaptivity/initial_marker/gold/initial_marker_out.e-s004 rename to test/tests/adaptivity/initial_marker/gold/initial_marker_out.e-s003 index 821ff9cb191a..40aa2d4a617a 100644 Binary files a/test/tests/adaptivity/initial_marker/gold/initial_marker_out.e-s004 and b/test/tests/adaptivity/initial_marker/gold/initial_marker_out.e-s003 differ diff --git a/test/tests/adaptivity/initial_marker/tests b/test/tests/adaptivity/initial_marker/tests index 2d3d1de5a90f..e67396911ead 100644 --- a/test/tests/adaptivity/initial_marker/tests +++ b/test/tests/adaptivity/initial_marker/tests @@ -2,6 +2,6 @@ [./test] type = 'Exodiff' input = 'initial_marker.i' - exodiff = 'initial_marker_out.e-s004' + exodiff = 'initial_marker_out.e-s003' [../] [] diff --git a/test/tests/adaptivity/max_h_level/gold/max_h_level_out.e-s004 b/test/tests/adaptivity/max_h_level/gold/max_h_level_out.e-s003 similarity index 67% rename from test/tests/adaptivity/max_h_level/gold/max_h_level_out.e-s004 rename to test/tests/adaptivity/max_h_level/gold/max_h_level_out.e-s003 index d67d97d15285..f9ab5177cac1 100644 Binary files a/test/tests/adaptivity/max_h_level/gold/max_h_level_out.e-s004 and b/test/tests/adaptivity/max_h_level/gold/max_h_level_out.e-s003 differ diff --git a/test/tests/adaptivity/max_h_level/tests b/test/tests/adaptivity/max_h_level/tests index de21d111b855..722a8bcd5ff4 100644 --- a/test/tests/adaptivity/max_h_level/tests +++ b/test/tests/adaptivity/max_h_level/tests @@ -2,6 +2,6 @@ [./test] type = 'Exodiff' input = 'max_h_level.i' - exodiff = 'max_h_level_out.e-s004' + exodiff = 'max_h_level_out.e-s003' [../] [] diff --git a/test/tests/mesh/adapt/gold/out_time.e-s002 b/test/tests/mesh/adapt/gold/out_time.e-s002 new file mode 100644 index 000000000000..9ad2ea8d1a73 Binary files /dev/null and b/test/tests/mesh/adapt/gold/out_time.e-s002 differ diff --git a/test/tests/mesh/adapt/gold/out_time.e-s007 b/test/tests/mesh/adapt/gold/out_time.e-s007 deleted file mode 100644 index bbfe45dcd295..000000000000 Binary files a/test/tests/mesh/adapt/gold/out_time.e-s007 and /dev/null differ diff --git a/test/tests/mesh/adapt/tests b/test/tests/mesh/adapt/tests index 00c3fbc4e82b..00d890a6af93 100644 --- a/test/tests/mesh/adapt/tests +++ b/test/tests/mesh/adapt/tests @@ -10,7 +10,7 @@ [./test_time] type = 'Exodiff' input = 'adapt_time_test.i' - exodiff = 'out_time.e-s007' + exodiff = 'out_time.e-s002' group = 'adaptive' [../]