TY6WZ2R2THWDIQCTDZIFSX3S2SNSC67GUFE7S4TFXLRQNP7SNUBAC
4B36MBHKEUSFI2TUH67YRHFSCMZNI7RXMY6VZN74OLNYAQT55NEAC
NUOLOGCKMF5UOBGBYEOX4O7NQ5AEVVLCH6KRBQRJQXIRDNJ2C2ZQC
FEMASUBNU32NSG4DNXZX54CGCA57PVRGYO46L3A6F2EJ4BCSJ3SAC
722HZ7UFINNE3YKSYKP2NHZ5XEG5QQLQHSKC7PREJZR3EX6RDYUAC
HVV73EHEMEFVCPS75XZAFUGWOY7LBYOJOIDNHJUK4MB5QTS3CTJQC
IVHURSHY4636OGIF3PNDO5CWOVRLJ75M4LP65J6I2E6KAM4QKF4AC
GKKJ75HX2ERLVBZVE2CUB6T3J2SUT7R3UKEKTEYNOG43ZKX6X5MQC
# The overall size of the domain
CCTK_INT FUNCTION GetDomainSpecification
(CCTK_INT IN size,
CCTK_REAL OUT ARRAY physical_min,
CCTK_REAL OUT ARRAY physical_max,
CCTK_REAL OUT ARRAY interior_min,
CCTK_REAL OUT ARRAY interior_max,
CCTK_REAL OUT ARRAY exterior_min,
CCTK_REAL OUT ARRAY exterior_max,
CCTK_REAL OUT ARRAY spacing)
PROVIDES FUNCTION GetDomainSpecification WITH CarpetX_GetDomainSpecification LANGUAGE C
extern "C" CCTK_INT CarpetX_GetDomainSpecification(
CCTK_INT size, CCTK_REAL *restrict const physical_min,
CCTK_REAL *restrict const physical_max,
CCTK_REAL *restrict const interior_min,
CCTK_REAL *restrict const interior_max,
CCTK_REAL *restrict const exterior_min,
CCTK_REAL *restrict const exterior_max, CCTK_REAL *restrict const spacing);
CCTK_INT
CarpetX_GetDomainSpecification(const CCTK_INT size,
CCTK_REAL *restrict const physical_min,
CCTK_REAL *restrict const physical_max,
CCTK_REAL *restrict const interior_min,
CCTK_REAL *restrict const interior_max,
CCTK_REAL *restrict const exterior_min,
CCTK_REAL *restrict const exterior_max,
CCTK_REAL *restrict const spacing) {
assert(size == dim);
assert(!empty(ghext->leveldata));
const auto &fab = *ghext->leveldata.at(0).fab;
const auto &geom = ghext->amrcore->Geom(0);
for (int d = 0; d < dim; ++d) {
// the domain itself (physical faces)
physical_min[d] = geom.ProbDomain().lo(d);
physical_max[d] = geom.ProbDomain().hi(d);
// domain without boundary points (last interior cell centre)
interior_min[d] = geom.ProbDomain().lo(d) + 0.5 * geom.CellSize(d);
interior_max[d] = geom.ProbDomain().hi(d) - 0.5 * geom.CellSize(d);
// domain including boundary/ghost points (last boundary/ghost cell centre)
exterior_min[d] =
geom.ProbDomain().lo(d) - (fab.nGrow(d) - 0.5) * geom.CellSize(d);
exterior_max[d] =
geom.ProbDomain().hi(d) + (fab.nGrow(d) - 0.5) * geom.CellSize(d);
spacing[d] = geom.CellSize(d);
}
return 0;
}