class_docstr: generate reference ellipsoid parameters
  
  as everywhere else in pymap3d, distance units are METERS
  
  Ellipsoid sources
  -----------------
  
  maupertuis, plessis, everest1830, everest1830m, everest1967,
  airy, bessel, clarke1866, clarke1878, clarke1860, helmert, hayford,
  international1924, krassovsky1940, wgs66, australian, international1967,
  grs67, sa1969, wgs72, iers1989, iers2003:
  
  - https://en.wikipedia.org/wiki/Earth_ellipsoid#Historical_Earth_ellipsoids
  - https://en.wikibooks.org/wiki/PROJ.4#Spheroid
  
  wgs84: https://en.wikipedia.org/wiki/World_Geodetic_System#WGS84
  
  wgs84_mean: https://en.wikipedia.org/wiki/Earth_radius#Mean_radii
  
  grs80: https://en.wikipedia.org/wiki/GRS_80
  
  io: https://doi.org/10.1006/icar.1998.5987
  
  pz90.11: https://structure.mil.ru/files/pz-90.pdf
  
  gsk2011: https://racurs.ru/downloads/documentation/gost_r_32453-2017.pdf
  
  mars: https://tharsis.gsfc.nasa.gov/geodesy.html
  
  mercury, venus, moon, jupiter, saturn, uranus, neptune:
  
  - https://nssdc.gsfc.nasa.gov/planetary/factsheet/index.html
  
  feel free to suggest additional ellipsoids
docstr: Ellipsoidal model of world
  
  Parameters
  ----------
  semimajor_axis : float
      semimajor axis in meters
  semiminor_axis : float
      semiminor axis in meters
  name: str, optional
      Human-friendly name for the ellipsoid
  model: str, optional
      Short name for the ellipsoid
docstr_tok: ["Ellipsoidal","model","of","world","Parameters","--","--","--","--","--","semimajor_axis",":","float","semimajor","axis","in","meters","semiminor_axis",":","float","semiminor","axis","in","meters","name",":","str",",","optional","Human-friendly","name","for","the","ellipsoid","model",":","str",",","optional","Short","name","for","the","ellipsoid"]
code: def __init__(
      self,
      semimajor_axis: float,
      semiminor_axis: float,
      name: str = "",
      model: str = "",
  ):
      """
      Ellipsoidal model of world
  
      Parameters
      ----------
      semimajor_axis : float
          semimajor axis in meters
      semiminor_axis : float
          semiminor axis in meters
      name: str, optional
          Human-friendly name for the ellipsoid
      model: str, optional
          Short name for the ellipsoid
      """
  
      self.flattening = (
          semimajor_axis - semiminor_axis
      ) / semimajor_axis
      assert self.flattening >= 0, "flattening must be >= 0"
      self.thirdflattening = (semimajor_axis - semiminor_axis) / (
          semimajor_axis + semiminor_axis
      )
      self.eccentricity = sqrt(
          2 * self.flattening - self.flattening**2
      )
  
      self.name = name
      self.model = model
      self.semimajor_axis = semimajor_axis
      self.semiminor_axis = semiminor_axis
  
file_path: pymap3d/src/pymap3d/ellipsoid.py
imports: from __future__ import annotations
  from math import sqrt
  from dataclasses import dataclass, field
  from typing import TypedDict
  import sys
label_desc: Use image node_id 1 to create a new Ellipsoid object  with example: obj = Ellipsoid(semimajor_axis, semiminor_axis, name, model)