File index_derivs.hxx#
Definition of available derivative methods and registration within store
Copyright 2018 D.Dickinson, P.Hill, B.Dudson
Contact: Ben Dudson, bd512@york.ac.uk
This file is part of BOUT++.
BOUT++ is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
BOUT++ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with BOUT++. If not, see http://www.gnu.org/licenses/.
Defines
-
DEFINE_STANDARD_DERIV_CORE(name, key, nGuards, type)#
-
DEFINE_STANDARD_DERIV(name, key, nGuards, type)#
-
DEFINE_UPWIND_DERIV_CORE(name, key, nGuards, type)#
-
DEFINE_UPWIND_DERIV(name, key, nGuards, type)#
-
DEFINE_FLUX_DERIV_CORE(name, key, nGuards, type)#
-
DEFINE_FLUX_DERIV(name, key, nGuards, type)#
-
DEFINE_STANDARD_DERIV_STAGGERED(name, key, nGuards, type)#
-
DEFINE_UPWIND_DERIV_STAGGERED(name, key, nGuards, type)#
-
DEFINE_FLUX_DERIV_STAGGERED(name, key, nGuards, type)#
-
WRAP_ENUM(family, value)#
Some helper defines for now that allow us to wrap up enums and the specific methods.
-
REGISTER_DERIVATIVE(name)#
-
REGISTER_STAGGERED_DERIVATIVE(name)#
-
REGISTER_STANDARD_DERIVATIVE(name, key, nGuards, type)#
-
REGISTER_UPWIND_DERIVATIVE(name, key, nGuards, type)#
-
REGISTER_FLUX_DERIVATIVE(name, key, nGuards, type)#
-
REGISTER_STANDARD_STAGGERED_DERIVATIVE(name, key, nGuards, type)#
-
REGISTER_STANDARD_DERIVATIVE_STAGGERED(name, key, nGuards, type)#
-
REGISTER_UPWIND_STAGGERED_DERIVATIVE(name, key, nGuards, type)#
-
REGISTER_UPWIND_DERIVATIVE_STAGGERED(name, key, nGuards, type)#
-
REGISTER_FLUX_STAGGERED_DERIVATIVE(name, key, nGuards, type)#
-
REGISTER_FLUX_DERIVATIVE_STAGGERED(name, key, nGuards, type)#
Functions
-
struct metaData#
-
template<typename FF>
class DerivativeType# - #include <index_derivs.hxx>
Here we define a helper class that provides a means to use a supplied stencil using functor to calculate a derivative over the entire field. Note we currently have a different interface for some of the derivative types to avoid needing different classes to represent the different operations The use of a functor here makes it possible to wrap up metaData into the type as well.
Public Functions
-
template<DIRECTION direction, STAGGER stagger, int nGuards, typename T>
inline void standard(const T &var, T &result, const std::string ®ion) const#
-
template<DIRECTION direction, STAGGER stagger, int nGuards, typename T>
-
struct registerMethod#
- #include <index_derivs.hxx>
Following code is for dealing with registering a method/methods for all template combinations, in conjunction with the template_combinations code.
Public Functions
-
template<typename Direction, typename Stagger, typename FieldTypeContainer, typename Method>
inline void operator()(Direction, Stagger, FieldTypeContainer, Method)#
-
template<typename Direction, typename Stagger, typename FieldTypeContainer, typename Method>