/* * Copyright 2017 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 . */ #include #include "common.h" #include "pssolve.h" #include "td_constraints.h" #include "eval_constraints.c" #include "eval_k_rtheta.c" #define EQNAME constraint_eq_ham #define EQUATION TD_CONSTRAINT_EQ_HAM #include "td_constraints_template.c" #undef EQNAME #undef EQUATION #define EQNAME constraint_eq_mom_0 #define EQUATION TD_CONSTRAINT_EQ_MOM_0 #include "td_constraints_template.c" #undef EQNAME #undef EQUATION #define EQNAME constraint_eq_mom_1 #define EQUATION TD_CONSTRAINT_EQ_MOM_1 #include "td_constraints_template.c" #undef EQNAME #undef EQUATION void (*constraint_funcs[TD_CONSTRAINT_EQ_NB])(const double a, unsigned int nb_coords[2], double *coords[2], double *vars[TD_CONSTRAINT_VAR_NB][PSSOLVE_DIFF_ORDER_NB], double *out) = { [TD_CONSTRAINT_EQ_HAM] = constraint_eq_ham, [TD_CONSTRAINT_EQ_MOM_0] = constraint_eq_mom_0, [TD_CONSTRAINT_EQ_MOM_1] = constraint_eq_mom_1, }; int tdi_constraints_eval(enum TDConstraintEq eq, const double a, unsigned int nb_coords[2], double *coords[2], double *vars[TD_CONSTRAINT_VAR_NB][PSSOLVE_DIFF_ORDER_NB], double *out) { constraint_funcs[eq](a, nb_coords, coords, vars, out); return 0; }