ray_path_observersFieldProfilePseudo2D

Workspace.ray_path_observersFieldProfilePseudo2D(self, ray_path_observers: pyarts.arts.ArrayOfPropagationPathPoint | None = None, atmospheric_field: pyarts.arts.AtmField | None = None, surface_field: pyarts.arts.SurfaceField | None = None, ray_path_observer_agenda: pyarts.arts.Agenda | None = None, latitude: pyarts.arts.Numeric | None = None, longitude: pyarts.arts.Numeric | None = None, azimuth: pyarts.arts.Numeric | None = None, nup: pyarts.arts.Index | None = None, nlimb: pyarts.arts.Index | None = None, ndown: pyarts.arts.Index | None = None) None

Get a list of observer positions and line of sights to represent observing all angles of a profile.

Three observer types are added:

  • Downward looking. At the top-of-atmosphere, cover [za+e, 180] degrees zenith.

  • Limb looking. At top of the atmosphere, cover [90, za-e] degrees zenith.

  • Upward looking. At the surface, cover [0, 90] degrees zenith.

Here za is the surface tangent zenith angle from the top of the atmosphere. e indicates the smallest possible numerical offset from that angle in the signed direction.

Note

Each position has their zenith angle coverage linearly separated in degrees. To avoid the top-of-atmosphere limb singularity and bottom of atmosphere limb overlap, the limb zentih angle grid is divided into nlimb+1 segments. The 90 degree angle is then discarded.

Below is an example using this method to create a ray_path_field.

import pyarts
import numpy as np

ws = pyarts.Workspace()

ws.atmospheric_fieldRead(toa=100e3, basename="planets/Earth/afgl/tropical/")
ws.surface_fieldEarth()
ws.ray_path_observer_agendaSetGeometric(
    add_crossings=True, remove_non_crossings=True
)
ws.ray_path_observersFieldProfilePseudo2D(nup=3, nlimb=3, ndown=3)
ws.ray_path_fieldFromObserverAgenda()

f, a = None, None
for x in ws.ray_path_field:
    f, a = pyarts.plots.ray_path.polar_ray_path(
        x, draw_za_aa=True, draw_map=False, fig=f, axes=a
    )

(Source code, svg, pdf)

_images/pyarts-workspace-Workspace-ray_path_observersFieldProfilePseudo2D-1.svg

Author(s): Richard Larsson

Parameters:
  • ray_path_observers (ArrayOfPropagationPathPoint, optional) – A list path points making up the observers of a propagation path. See ray_path_observers, defaults to self.ray_path_observers [OUT]

  • atmospheric_field (AtmField, optional) – An atmospheric field in ARTS. See atmospheric_field, defaults to self.atmospheric_field [IN]

  • surface_field (SurfaceField, optional) – The surface field describes the surface properties. See surface_field, defaults to self.surface_field [IN]

  • ray_path_observer_agenda (Agenda, optional) – Get the propagation path as it is obeserved. See ray_path_observer_agenda, defaults to self.ray_path_observer_agenda [IN]

  • latitude (Numeric, optional) – A single latitude. See latitude, defaults to self.latitude [IN]

  • longitude (Numeric, optional) – A single longitude. See longitude, defaults to self.longitude [IN]

  • azimuth (Numeric, optional) – Azimuth angle for the observer. Defaults to 0 [IN]

  • nup (Index) – Number of upward looking observers (min 2). [IN]

  • nlimb (Index) – Number of limb looking observers (min 2). [IN]

  • ndown (Index) – Number of downward looking observers (min 2). [IN]