diff --git a/boule/ellipsoid.py b/boule/ellipsoid.py
index b75498b..a71cf6a 100644
--- a/boule/ellipsoid.py
+++ b/boule/ellipsoid.py
@@ -453,6 +453,13 @@ class Ellipsoid:
             The normal gravity in mGal.
 
         """
+        # Warn if height is negative
+        if np.any(height < 0):
+            warn(
+                "Formulas used are valid for points outside the ellipsoid."
+                "Height must be greater than or equal to zero."
+            )
+
         sinlat = np.sin(np.deg2rad(latitude))
         coslat = np.sqrt(1 - sinlat ** 2)
         # The terms below follow the variable names from Li and Goetze (2001)
diff --git a/boule/sphere.py b/boule/sphere.py
index 15e8ea7..895cadd 100644
--- a/boule/sphere.py
+++ b/boule/sphere.py
@@ -193,6 +193,12 @@ class Sphere(Ellipsoid):
             The normal gravity in mGal.
 
         """
+        # Warn if height is negative
+        if np.any(height < 0):
+            warn(
+                "Formulas used are valid for points outside the ellipsoid."
+                "Height must be greater than or equal to zero."
+            )
         radial_distance = self.radius + height
         gravity_acceleration = self.geocentric_grav_const / (radial_distance) ** 2
         gamma = np.sqrt(

diff --git a/boule/tests/test_ellipsoid.py b/boule/tests/test_ellipsoid.py
index b509f43..e96dabf 100644
--- a/boule/tests/test_ellipsoid.py
+++ b/boule/tests/test_ellipsoid.py
@@ -325,3 +325,14 @@ def test_normal_gravity_against_somigliana(ellipsoid):
             ellipsoid.normal_gravity(latitude, height=0),
             normal_gravity_surface(latitude, ellipsoid),
         )
+
+
+@pytest.mark.parametrize("ellipsoid", ELLIPSOIDS, ids=ELLIPSOID_NAMES)
+def test_normal_gravity_computed_on_internal_point(ellipsoid):
+    """
+    Check if warn is raised if height is negative
+    """
+    latitude = np.linspace(-90, 90, 100)
+    with warnings.catch_warnings(record=True) as warn:
+        ellipsoid.normal_gravity(latitude, height=-10)
+        assert len(warn) >= 1

Check if normal gravity is computed on internal point
**Description of the desired feature**

The normal gravity formulas used on `boule.Ellipsoid.normal_gravity()` and `boule.Sphere.normal_gravity()` are valid only for points outside the ellipsoid.
Would be nice to add a warning in case the given point falls inside it.
To do so we just need to check if the `height` is positive or equal to zero.

**Are you willing to help implement and maintain this feature?** Yes, but would be glad to help anyone who wants to implement it.

<!--
Every feature we add is code that we will have to maintain and keep updated.
This takes a lot of effort. If you are willing to be involved in the project
and help maintain your feature, it will make it easier for us to accept it.
-->

boule/tests/test_ellipsoid.py::test_normal_gravity_computed_on_internal_point[WGS84] boule/tests/test_ellipsoid.py::test_normal_gravity_computed_on_internal_point[GRS80] boule/tests/test_ellipsoid.py::test_normal_gravity_computed_on_internal_point[MARS] boule/tests/test_ellipsoid.py::test_normal_gravity_computed_on_internal_point[VENUS] boule/tests/test_ellipsoid.py::test_normal_gravity_computed_on_internal_point[MOON] boule/tests/test_ellipsoid.py::test_normal_gravity_computed_on_internal_point[MERCURY]
boule/tests/test_ellipsoid.py::test_check_flattening boule/tests/test_ellipsoid.py::test_check_semimajor_axis boule/tests/test_ellipsoid.py::test_check_geocentric_grav_const boule/tests/test_ellipsoid.py::test_geodetic_to_spherical_on_equator[WGS84] boule/tests/test_ellipsoid.py::test_geodetic_to_spherical_on_equator[GRS80] boule/tests/test_ellipsoid.py::test_geodetic_to_spherical_on_equator[MARS] boule/tests/test_ellipsoid.py::test_geodetic_to_spherical_on_equator[VENUS] boule/tests/test_ellipsoid.py::test_geodetic_to_spherical_on_equator[MOON] boule/tests/test_ellipsoid.py::test_geodetic_to_spherical_on_equator[MERCURY] boule/tests/test_ellipsoid.py::test_geodetic_to_spherical_on_poles[WGS84] boule/tests/test_ellipsoid.py::test_geodetic_to_spherical_on_poles[GRS80] boule/tests/test_ellipsoid.py::test_geodetic_to_spherical_on_poles[MARS] boule/tests/test_ellipsoid.py::test_geodetic_to_spherical_on_poles[VENUS] boule/tests/test_ellipsoid.py::test_geodetic_to_spherical_on_poles[MOON] boule/tests/test_ellipsoid.py::test_geodetic_to_spherical_on_poles[MERCURY] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_on_equator[WGS84] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_on_equator[GRS80] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_on_equator[MARS] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_on_equator[VENUS] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_on_equator[MOON] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_on_equator[MERCURY] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_on_poles[WGS84] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_on_poles[GRS80] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_on_poles[MARS] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_on_poles[VENUS] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_on_poles[MOON] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_on_poles[MERCURY] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_identity[WGS84] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_identity[GRS80] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_identity[MARS] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_identity[VENUS] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_identity[MOON] boule/tests/test_ellipsoid.py::test_spherical_to_geodetic_identity[MERCURY] boule/tests/test_ellipsoid.py::test_normal_gravity_pole_equator[WGS84] boule/tests/test_ellipsoid.py::test_normal_gravity_pole_equator[GRS80] boule/tests/test_ellipsoid.py::test_normal_gravity_pole_equator[MARS] boule/tests/test_ellipsoid.py::test_normal_gravity_pole_equator[VENUS] boule/tests/test_ellipsoid.py::test_normal_gravity_pole_equator[MOON] boule/tests/test_ellipsoid.py::test_normal_gravity_pole_equator[MERCURY] boule/tests/test_ellipsoid.py::test_normal_gravity_arrays[WGS84-mGal] boule/tests/test_ellipsoid.py::test_normal_gravity_arrays[WGS84-SI] boule/tests/test_ellipsoid.py::test_normal_gravity_arrays[GRS80-mGal] boule/tests/test_ellipsoid.py::test_normal_gravity_arrays[GRS80-SI] boule/tests/test_ellipsoid.py::test_normal_gravity_arrays[MARS-mGal] boule/tests/test_ellipsoid.py::test_normal_gravity_arrays[MARS-SI] boule/tests/test_ellipsoid.py::test_normal_gravity_arrays[VENUS-mGal] boule/tests/test_ellipsoid.py::test_normal_gravity_arrays[VENUS-SI] boule/tests/test_ellipsoid.py::test_normal_gravity_arrays[MOON-mGal] boule/tests/test_ellipsoid.py::test_normal_gravity_arrays[MOON-SI] boule/tests/test_ellipsoid.py::test_normal_gravity_arrays[MERCURY-mGal] boule/tests/test_ellipsoid.py::test_normal_gravity_arrays[MERCURY-SI] boule/tests/test_ellipsoid.py::test_normal_gravity_non_zero_height[WGS84] boule/tests/test_ellipsoid.py::test_normal_gravity_non_zero_height[GRS80] boule/tests/test_ellipsoid.py::test_normal_gravity_non_zero_height[MARS] boule/tests/test_ellipsoid.py::test_normal_gravity_non_zero_height[VENUS] boule/tests/test_ellipsoid.py::test_normal_gravity_non_zero_height[MOON] boule/tests/test_ellipsoid.py::test_normal_gravity_non_zero_height[MERCURY] boule/tests/test_ellipsoid.py::test_prime_vertical_radius[WGS84] boule/tests/test_ellipsoid.py::test_prime_vertical_radius[GRS80] boule/tests/test_ellipsoid.py::test_prime_vertical_radius[MARS] boule/tests/test_ellipsoid.py::test_prime_vertical_radius[VENUS] boule/tests/test_ellipsoid.py::test_prime_vertical_radius[MOON] boule/tests/test_ellipsoid.py::test_prime_vertical_radius[MERCURY] boule/tests/test_ellipsoid.py::test_geocentric_radius[WGS84] boule/tests/test_ellipsoid.py::test_geocentric_radius[GRS80] boule/tests/test_ellipsoid.py::test_geocentric_radius[MARS] boule/tests/test_ellipsoid.py::test_geocentric_radius[VENUS] boule/tests/test_ellipsoid.py::test_geocentric_radius[MOON] boule/tests/test_ellipsoid.py::test_geocentric_radius[MERCURY] boule/tests/test_ellipsoid.py::test_geocentric_radius_pole_equator[WGS84] boule/tests/test_ellipsoid.py::test_geocentric_radius_pole_equator[GRS80] boule/tests/test_ellipsoid.py::test_geocentric_radius_pole_equator[MARS] boule/tests/test_ellipsoid.py::test_geocentric_radius_pole_equator[VENUS] boule/tests/test_ellipsoid.py::test_geocentric_radius_pole_equator[MOON] boule/tests/test_ellipsoid.py::test_geocentric_radius_pole_equator[MERCURY] boule/tests/test_ellipsoid.py::test_geocentric_radius_geocentric[WGS84] boule/tests/test_ellipsoid.py::test_geocentric_radius_geocentric[GRS80] boule/tests/test_ellipsoid.py::test_geocentric_radius_geocentric[MARS] boule/tests/test_ellipsoid.py::test_geocentric_radius_geocentric[VENUS] boule/tests/test_ellipsoid.py::test_geocentric_radius_geocentric[MOON] boule/tests/test_ellipsoid.py::test_geocentric_radius_geocentric[MERCURY] boule/tests/test_ellipsoid.py::test_geocentric_radius_geocentric_pole_equator[WGS84] boule/tests/test_ellipsoid.py::test_geocentric_radius_geocentric_pole_equator[GRS80] boule/tests/test_ellipsoid.py::test_geocentric_radius_geocentric_pole_equator[MARS] boule/tests/test_ellipsoid.py::test_geocentric_radius_geocentric_pole_equator[VENUS] boule/tests/test_ellipsoid.py::test_geocentric_radius_geocentric_pole_equator[MOON] boule/tests/test_ellipsoid.py::test_geocentric_radius_geocentric_pole_equator[MERCURY] boule/tests/test_ellipsoid.py::test_normal_gravity_against_somigliana[WGS84] boule/tests/test_ellipsoid.py::test_normal_gravity_against_somigliana[GRS80] boule/tests/test_ellipsoid.py::test_normal_gravity_against_somigliana[MARS] boule/tests/test_ellipsoid.py::test_normal_gravity_against_somigliana[VENUS] boule/tests/test_ellipsoid.py::test_normal_gravity_against_somigliana[MOON] boule/tests/test_ellipsoid.py::test_normal_gravity_against_somigliana[MERCURY]