From a4644e238816189779165038a2bf2907bb282efb Mon Sep 17 00:00:00 2001 From: Cody Permann Date: Wed, 19 Oct 2016 14:17:05 -0500 Subject: [PATCH] Fixup NekTimeStepper with additional methods Also add a new Multiapp coupling example Finally rename NekTimestepper to NekTimeStepper --- .../2D_transient_square_coupled.i | 1 + examples/template_example/picard_master.i | 86 +++++++++++++++++++ examples/template_example/picard_sub.i | 32 +++++++ include/timesteppers/NekTimeStepper.h | 9 +- src/base/MoonApp.C | 2 +- src/timesteppers/NekTimeStepper.C | 25 ++++-- 6 files changed, 142 insertions(+), 13 deletions(-) create mode 100644 examples/template_example/picard_master.i create mode 100644 examples/template_example/picard_sub.i diff --git a/examples/template_example/2D_transient_square_coupled.i b/examples/template_example/2D_transient_square_coupled.i index 79d3504..e72aeec 100644 --- a/examples/template_example/2D_transient_square_coupled.i +++ b/examples/template_example/2D_transient_square_coupled.i @@ -98,6 +98,7 @@ l_tol = 1e-6 dt = 2 end_time = 100 + num_steps = 10 petsc_options_iname = '-pc_type -pc_hypre_type' petsc_options_value = 'hypre boomeramg' [./TimeStepper] diff --git a/examples/template_example/picard_master.i b/examples/template_example/picard_master.i new file mode 100644 index 0000000..147918a --- /dev/null +++ b/examples/template_example/picard_master.i @@ -0,0 +1,86 @@ +[Mesh] + type = GeneratedMesh + dim = 2 + nx = 10 + ny = 10 +[] + +[Variables] + [./u] + [../] +[] + +[AuxVariables] + [./aux] + [../] +[] + +[Kernels] + [./diff] + type = CoefDiffusion + variable = u + coef = 0.1 + [../] + [./time] + type = TimeDerivative + variable = u + [../] +[] + +[BCs] + [./left] + type = DirichletBC + variable = u + boundary = left + value = 0 + [../] + [./right] + type = DirichletBC + variable = u + boundary = right + value = 1 + [../] +[] + +[Executioner] + # Preconditioned JFNK (default) + type = Transient + num_steps = 20 + dt = 0.1 + solve_type = PJFNK + petsc_options_iname = '-pc_type -pc_hypre_type' + petsc_options_value = 'hypre boomeramg' +# picard_max_its = 30 + nl_abs_tol = 1e-14 +[] + +[Outputs] + exodus = true +[] + +[MultiApps] + [./sub] + type = TransientMultiApp + app_type = MoonApp + positions = '0 0 0' + input_files = picard_sub.i + [../] +[] + +[Transfers] + [./u_to_sub] + type = MultiAppNearestNodeTransfer + direction = to_multiapp + multi_app = sub + source_variable = u + variable = aux + [../] + +[./u_from_sub] + type = MultiAppNearestNodeTransfer + direction = from_multiapp + multi_app = sub + source_variable = u + variable = aux + [../] +[] diff --git a/examples/template_example/picard_sub.i b/examples/template_example/picard_sub.i new file mode 100644 index 0000000..218346a --- /dev/null +++ b/examples/template_example/picard_sub.i @@ -0,0 +1,32 @@ +# Minimal Nek-wrapped MOOSE application. +# MOOSE Requires a mesh and a variable even +# if they are not used. + +[Mesh] + type = GeneratedMesh + dim = 1 + nx = 1 +[] + +[Variables] + [./u] + [../] +[] + +[AuxVariables] + [./aux] + [../] +[] + +[Executioner] + type = NekExecutioner + num_steps = 20 + [./TimeStepper] + type = NekTimeStepper + [../] +[] + +[Problem] + kernel_coverage_check = false + solve = false +[] diff --git a/include/timesteppers/NekTimeStepper.h b/include/timesteppers/NekTimeStepper.h index 7e42b84..ea70726 100644 --- a/include/timesteppers/NekTimeStepper.h +++ b/include/timesteppers/NekTimeStepper.h @@ -7,20 +7,21 @@ #include "TimeStepper.h" -class NekTimestepper; +class NekTimeStepper; template<> -InputParameters validParams(); +InputParameters validParams(); -class NekTimestepper : public TimeStepper +class NekTimeStepper : public TimeStepper { public: - NekTimestepper(const InputParameters & parameters); + NekTimeStepper(const InputParameters & parameters); protected: virtual Real computeInitialDT() override; virtual Real computeDT() override; virtual void step() override; + virtual bool converged() override; }; #endif //MOON_NEKTIMESTEPPER_H diff --git a/src/base/MoonApp.C b/src/base/MoonApp.C index 28ea2c5..673f93d 100644 --- a/src/base/MoonApp.C +++ b/src/base/MoonApp.C @@ -71,7 +71,7 @@ void MoonApp::registerObjects(Factory & factory) { registerExecutioner(NekExecutioner); - registerTimeStepper(NekTimestepper); + registerTimeStepper(NekTimeStepper); } // External entry point for dynamic syntax association diff --git a/src/timesteppers/NekTimeStepper.C b/src/timesteppers/NekTimeStepper.C index 0f171da..d51abe1 100644 --- a/src/timesteppers/NekTimeStepper.C +++ b/src/timesteppers/NekTimeStepper.C @@ -2,35 +2,44 @@ // Created by Ron Rahaman on 10/18/16. // -#include "NekTimestepper.h" +#include "NekTimeStepper.h" #include "NekInterface.h" template<> -InputParameters validParams() +InputParameters validParams() { InputParameters params = validParams(); return params; } -NekTimestepper::NekTimestepper(const InputParameters & parameters) : +NekTimeStepper::NekTimeStepper(const InputParameters & parameters) : TimeStepper(parameters) { } Real -NekTimestepper::computeInitialDT() +NekTimeStepper::computeInitialDT() { - return 0; + // TODO: Should report information from Nek + return 1; } Real -NekTimestepper::computeDT() +NekTimeStepper::computeDT() { - return 0; + // TODO: Should report information from Nek + return 1; } void -NekTimestepper::step() +NekTimeStepper::step() { FORTRAN_CALL(Nek5000::nek_step)(); } + +bool +NekTimeStepper::converged() +{ + // TODO: Should report information from Nek + return true; +} -- 2.26.2