From 30ca9d8f0fa8dcaab5606d03e4cdf4082db9baae Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Fri, 25 Jan 2019 15:55:47 +0100 Subject: mg2d: split the constant definitions into their own header This will allow sharing them with ell_relax. --- mg2d_constants.h | 134 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 mg2d_constants.h (limited to 'mg2d_constants.h') diff --git a/mg2d_constants.h b/mg2d_constants.h new file mode 100644 index 0000000..1ab4bc6 --- /dev/null +++ b/mg2d_constants.h @@ -0,0 +1,134 @@ +/* + * Public API constants. + * Copyright 2019 Anton Khirnov + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef MG2D_CONSTANTS_H +#define MG2D_CONSTANTS_H + +enum MG2DError { + MG2D_ERR_DIVERGE = -0xff00, +}; + +/** + * Type of the boundary condition on a given boundary. + */ +enum MG2DBCType { + /** + * The value of the unknown function is fixed on the boundary. + */ + MG2D_BC_TYPE_FIXVAL, + /** + * The normal derivative of the unkown function is fixed on the boundary. + * + * TODO: the only supported value of the derivative is currently zero, i.e. + * periodic boundary conditions. + */ + MG2D_BC_TYPE_FIXDIFF, +}; + +/** + * Location of the boundary. + */ +enum MG2DBoundaryLoc { + /** + * coord0 lower + */ + MG2D_BOUNDARY_0L, + /** + * coord0 upper + */ + MG2D_BOUNDARY_0U, + /** + * coord1 lower + */ + MG2D_BOUNDARY_1L, + /** + * coord1 upper + */ + MG2D_BOUNDARY_1U, +}; + +/** + * Derivative specifier. + */ +enum MG2DDiffCoeff { + /** + * Zeroth derivative, i.e. function value. + */ + MG2D_DIFF_COEFF_00, + /** + * First derivative wrt coord1. + */ + MG2D_DIFF_COEFF_01, + /** + * First derivative wrt coord0. + */ + MG2D_DIFF_COEFF_10, + /** + * Second derivative, once wrt coord0 and once wrt coord1 + */ + MG2D_DIFF_COEFF_11, + /** + * Second derivative wrt coord1 + */ + MG2D_DIFF_COEFF_02, + /** + * Second derivative wrt coord0 + */ + MG2D_DIFF_COEFF_20, + /** + * Total number of allowed derivatives. + */ + MG2D_DIFF_COEFF_NB, +}; + +enum MG2DLogLevel { + /** + * The log message indicates abnormal program failure. Should never happen + * unless there are bugs or grossly invaid user input. + * Will typically be followed by program termination. + */ + MG2D_LOG_FATAL = 0x0, + /** + * The log message indicates an error state, so that requested operation + * cannot complete successfully. + * Will typically be followed by the API function being called returning an + * error. + */ + MG2D_LOG_ERROR = 0x10, + /** + * The log message indicates a suspicious or suboptimal program state. + */ + MG2D_LOG_WARNING = 0x20, + /** + * The log message provides commonly useful information about normal program + * behaviour. + */ + MG2D_LOG_INFO = 0x30, + /** + * The log message provides detailed extra information about normal program + * behaviour. + */ + MG2D_LOG_VERBOSE = 0x40, + /** + * The log message provides highly detailed extra information about normal + * program behaviour. + */ + MG2D_LOG_DEBUG = 0x50, +}; + +#endif // MG2D_CONSTANTS_H -- cgit v1.2.3