#include #include #include #include "cctk.h" #include "cctk_parameters.h" /* At Startup, EllBase registers the elliptic equation classes for which it provides solvers. Other routines, which may come up with new classes, can registers the classes in their own thorns. */ void Ell_RegisterBaseEqTypes(cGH *GH) { void Ell_RegisterEq(void (*function),const char *); void Ell_LinConfMetricRegistry(void (*function),const char *); void Ell_LinMetricRegistry(void (*function),const char *); void Ell_LinFlatRegistry(void (*function),const char *); void Ell_BrBrConfMetricRegistry(void (*function),const char *); void Ell_PolyConfMetricRegistry(void (*function),const char *); DECLARE_CCTK_PARAMETERS int err; if CCTK_EQUALS(elliptic_verbose,"yes") CCTK_INFO("Registering class: Ell_LinConfMetric....done"); Ell_RegisterEq(Ell_LinConfMetricRegistry,"Ell_LinConfMetric"); if CCTK_EQUALS(elliptic_verbose,"yes") CCTK_INFO("Registering class: Ell_BrBrConfMetric....done"); Ell_RegisterEq(Ell_BrBrConfMetricRegistry,"Ell_LinFlat"); if CCTK_EQUALS(elliptic_verbose,"yes") CCTK_INFO("Registering class: Ell_PolyConfMetric....done"); Ell_RegisterEq(Ell_PolyConfMetricRegistry,"Ell_LinFlat"); if CCTK_EQUALS(elliptic_verbose,"yes") CCTK_INFO("Registering class: Ell_LinMetric....done"); Ell_RegisterEq(Ell_LinMetricRegistry,"Ell_LinMetric"); if CCTK_EQUALS(elliptic_verbose,"yes") CCTK_INFO("Registering class: Ell_LinFlat....done"); Ell_RegisterEq(Ell_LinFlatRegistry,"Ell_LinFlat"); /* Register boundary SOR can handle */ err = err = Ell_CreateKey(CCTK_VARIABLE_STRING,"EllLinFlat::Bnd"); err = Ell_CreateKey(CCTK_VARIABLE_STRING,"EllLinConfMetric::Bnd"); err = Ell_CreateKey(CCTK_VARIABLE_STRING,"EllLinMetric::Bnd"); /* Register the variables needed to use these boundaries */ err = Ell_CreateKey(CCTK_VARIABLE_REAL, "EllLinConfMetric::Bnd::Robin::V0"); err = Ell_CreateKey(CCTK_VARIABLE_REAL, "EllLinConfMetric::Bnd::Robin::V1"); err = Ell_CreateKey(CCTK_VARIABLE_REAL, "EllLinConfMetric::BND::Const::V0"); }