#include #include #include #include "cctk.h" #include "cctk_Arguments.h" #include "cctk_Parameters.h" #include "CactusElliptic/EllBase/src/EllBase.h" #include "CactusElliptic/EllBase/src/Ell_DBstructure.h" void sor_confmetric(cGH *GH, int *MetricPsiI, int FieldI, int MI, int NI, CCTK_REAL *AbsTol, CCTK_REAL *RelTol); void sor_flat(cGH *GH, int FieldI, int MI, int NI, CCTK_REAL *AbsTol, CCTK_REAL *RelTol); /* routine registers the SOR solver "sor_confmetric" under the name "sor" with the Elliptic Class "LinConfMetric". */ void EllSOR_Register(CCTK_ARGUMENTS) { DECLARE_CCTK_ARGUMENTS DECLARE_CCTK_PARAMETERS int err; /* Register the solver with the elliptic classes */ err = Ell_RegisterSolver(sor_confmetric,"sor","Ell_LinConfMetric"); if (!err==ELL_SUCCESS) { CCTK_WARN(0,"Failed to register sor for Ell_LinConfMetric"); } err = Ell_RegisterSolver(sor_flat,"sor","Ell_LinFlat"); if (!err==ELL_SUCCESS) { CCTK_WARN(0,"Failed to register sor for Ell_LinFlat"); } /* These "keys" have to be same in other elliptic solver and in the routines that sets them ! */ /* Register boundary SOR can handle */ err = Ell_CreateKey(CCTK_VARIABLE_STRING,"EllSOR::Bnd::Robin"); err = Ell_CreateKey(CCTK_VARIABLE_STRING,"EllSOR::Bnd::Const"); }