Something like:
#define ARTEMIS_FOR_ALL_GEOMS(M) \
M(Coordinates::cartesian) \
M(Coordinates::cylindrical) \
M(Coordinates::spherical1D) \
M(Coordinates::spherical2D) \
M(Coordinates::spherical3D) \
M(Coordinates::axisymmetric)
and then,
#define INSTANTIATE_ESTIMATE(G) \
template Real EstimateTimestepMesh<G>(MeshData<Real> *md);
ARTEMIS_FOR_ALL_GEOMS(INSTANTIATE_ESTIMATE)
#undef INSTANTIATE_ESTIMATE
Something like:
and then,