ARTS  2.2.66
ppath.h File Reference

Propagation path structure and functions. More...

#include "agenda_class.h"
#include "array.h"
#include "arts.h"
#include "interpolation.h"
#include "matpackI.h"
#include "mystring.h"
Include dependency graph for ppath.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  Ppath
 The structure to describe a propagation path and releated quantities. More...
 

Typedefs

typedef Array< PpathArrayOfPpath
 An array of propagation paths. More...
 

Functions

Numeric geometrical_ppc (const Numeric &r, const Numeric &za)
 geometrical_ppc More...
 
Numeric geompath_za_at_r (const Numeric &ppc, const Numeric &a_za, const Numeric &r)
 geompath_za_at_r More...
 
Numeric geompath_lat_at_za (const Numeric &za0, const Numeric &lat0, const Numeric &za)
 geompath_lat_at_za More...
 
void cart2zaaa (Numeric &za, Numeric &aa, const Numeric &dx, const Numeric &dy, const Numeric &dz)
 cart2zaaa More...
 
void zaaa2cart (Numeric &dx, Numeric &dy, Numeric &dz, const Numeric &za, const Numeric &aa)
 zaaa2cart More...
 
void map_daa (Numeric &za, Numeric &aa, const Numeric &za0, const Numeric &aa0, const Numeric &aa_grid)
 
void find_tanpoint (Index &it, const Ppath ppath)
 find_tanpoint More...
 
void plevel_slope_2d (Numeric &c1, ConstVectorView lat_grid, ConstVectorView refellipsoid, ConstVectorView z_surf, const GridPos &gp, const Numeric &za)
 plevel_slope_2d More...
 
void plevel_slope_3d (Numeric &c1, Numeric &c2, ConstVectorView lat_grid, ConstVectorView lon_grid, ConstVectorView refellipsoid, ConstMatrixView z_surf, const GridPos &gp_lat, const GridPos &gp_lon, const Numeric &aa)
 plevel_slope_3d More...
 
bool is_los_downwards (const Numeric &za, const Numeric &tilt)
 is_los_downwards More...
 
Numeric plevel_angletilt (const Numeric &r, const Numeric &c)
 plevel_angletilt More...
 
void ppath_init_structure (Ppath &ppath, const Index &atmosphere_dim, const Index &np)
 ppath_init_structure More...
 
void ppath_set_background (Ppath &ppath, const Index &case_nr)
 ppath_set_background More...
 
Index ppath_what_background (const Ppath &ppath)
 ppath_what_background More...
 
void ppath_copy (Ppath &ppath1, const Ppath &ppath2, const Index &ncopy)
 ppath_copy More...
 
void ppath_step_geom_1d (Ppath &ppath, ConstVectorView z_field, ConstVectorView refellipsoid, const Numeric &z_surface, const Numeric &lmax)
 ppath_step_geom_1d More...
 
void ppath_geom_updown_1d (Ppath &ppath, ConstVectorView z_field, ConstVectorView refellipsoid, const Numeric &z_surface, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits)
 
void ppath_step_geom_2d (Ppath &ppath, ConstVectorView lat_grid, ConstMatrixView z_field, ConstVectorView refellipsoid, ConstVectorView z_surface, const Numeric &lmax)
 ppath_step_geom_2d More...
 
void ppath_step_geom_3d (Ppath &ppath, ConstVectorView lat_grid, ConstVectorView lon_grid, ConstTensor3View z_field, ConstVectorView refellipsoid, ConstMatrixView z_surface, const Numeric &lmax)
 ppath_step_geom_3d More...
 
void ppath_step_refr_1d (Workspace &ws, Ppath &ppath, ConstVectorView p_grid, ConstTensor3View z_field, ConstTensor3View t_field, ConstTensor4View vmr_field, ConstVectorView f_grid, ConstVectorView refellipsoid, const Numeric &z_surface, const Numeric &lmax, const Agenda &refr_index_agenda, const String &rtrace_method, const Numeric &lraytrace)
 ppath_step_refr_1d More...
 
void ppath_step_refr_2d (Workspace &ws, Ppath &ppath, ConstVectorView p_grid, ConstVectorView lat_grid, ConstTensor3View z_field, ConstTensor3View t_field, ConstTensor4View vmr_field, ConstVectorView f_grid, ConstVectorView refellipsoid, ConstVectorView z_surface, const Numeric &lmax, const Agenda &refr_index_agenda, const String &rtrace_method, const Numeric &lraytrace)
 ppath_step_refr_2d More...
 
void ppath_step_refr_3d (Workspace &ws, Ppath &ppath, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView lon_grid, ConstTensor3View z_field, ConstTensor3View t_field, ConstTensor4View vmr_field, ConstVectorView f_grid, ConstVectorView refellipsoid, ConstMatrixView z_surface, const Numeric &lmax, const Agenda &refr_index_agenda, const String &rtrace_method, const Numeric &lraytrace)
 ppath_step_refr_3d More...
 
void ppath_start_stepping (Ppath &ppath, const Index &atmosphere_dim, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView lon_grid, ConstTensor3View z_field, ConstVectorView refellipsoid, ConstMatrixView z_surface, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const bool &outside_cloudbox, ConstVectorView rte_pos, ConstVectorView rte_los, const Verbosity &verbosity)
 ppath_start_stepping More...
 
void ppath_calc (Workspace &ws, Ppath &ppath, const Agenda &ppath_step_agenda, const Index &atmosphere_dim, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &t_field, const Tensor3 &z_field, const Tensor4 &vmr_field, const Vector &f_grid, const Vector &refellipsoid, const Matrix &z_surface, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Vector &rte_pos, const Vector &rte_los, const Numeric &ppath_lraytrace, const bool &ppath_inside_cloudbox_do, const Verbosity &verbosity)
 ppath_calc More...
 

Variables

const Numeric POLELAT = 90-1e-8
 
const Numeric ANGTOL = 1e-6
 

Detailed Description

Propagation path structure and functions.

Author
Patrick Eriksson Patri.nosp@m.ck.E.nosp@m.rikss.nosp@m.on@c.nosp@m.halme.nosp@m.rs.s.nosp@m.e
Date
2002-05-02

This file contains the definition of the Ppath structure and the functions in ppath.cc that are of interest elsewhere.

Definition in file ppath.h.

Typedef Documentation

◆ ArrayOfPpath

An array of propagation paths.

Definition at line 83 of file ppath.h.

Function Documentation

◆ cart2zaaa()

void cart2zaaa ( Numeric za,
Numeric aa,
const Numeric dx,
const Numeric dy,
const Numeric dz 
)

cart2zaaa

Converts a cartesian directional vector to zenith and azimuth

This function and the sister function cart2zaaa handles transformation of line-of-sights. This in contrast to the sph/poslos functions that handles positions, or combinations of positions and line-of-sight.

The cartesian coordinate system used for these two functions can be defined as z : za = 0 x : za=90, aa=0 y : za=90, aa=90

Parameters
zaOut: LOS zenith angle at observation position.
aaOut: LOS azimuth angle at observation position.
dxx-part of LOS unit vector.
dyy-part of LOS unit vector.
dzz-part of LOS unit vector.
Author
Patrick Eriksson
Date
2009-10-02

Definition at line 443 of file ppath.cc.

References RAD2DEG.

Referenced by adjust_los(), map_daa(), and specular_losCalc().

◆ find_tanpoint()

void find_tanpoint ( Index it,
const Ppath  ppath 
)

find_tanpoint

Identifies the tangent point of a propagation path

The tangent points is defined as the point with the lowest altitude.

The index of the tangent point is determined. If no tangent point is found, the index is set to -1.

Parameters
itOut: Index of tangent point
ppathPropagation path structure.
Author
Patrick Eriksson
Date
2012-04-07

Definition at line 705 of file ppath.cc.

References Ppath::np, and Ppath::pos.

Referenced by defocusing_sat2sat(), TangentPointExtract(), and TangentPointPrint().

◆ geometrical_ppc()

Numeric geometrical_ppc ( const Numeric r,
const Numeric za 
)

geometrical_ppc

Calculates the propagation path constant for pure geometrical calculations.

Both positive and negative zenith angles are handled.

Returns
Path constant.
Parameters
rRadius of the sensor position.
zaZenith angle of the sensor line-of-sight.
Author
Patrick Eriksson
Date
2002-05-17

Definition at line 118 of file ppath.cc.

References abs, and DEG2RAD.

Referenced by ppath_start_stepping(), ppath_step_geom_1d(), ppath_step_geom_2d(), ppath_step_geom_3d(), raytrace_1d_linear_basic(), raytrace_2d_linear_basic(), and raytrace_3d_linear_basic().

◆ geompath_lat_at_za()

Numeric geompath_lat_at_za ( const Numeric za0,
const Numeric lat0,
const Numeric za 
)

geompath_lat_at_za

Calculates the latitude for a given zenith angle along a geometrical propagation path.

Positive and negative zenith angles are handled. A positive zenith angle means a movement towards higher latitudes.

Returns
The latitude of the second point.
Parameters
za0The zenith angle of the starting point.
lat0The latitude of the starting point.
zaThe zenith angle of the second point.
Author
Patrick Eriksson
Date
2002-05-17

Definition at line 218 of file ppath.cc.

References abs.

Referenced by geompath_from_r1_to_r2(), ppath_start_stepping(), r_crossing_2d(), raytrace_1d_linear_basic(), and raytrace_2d_linear_basic().

◆ geompath_za_at_r()

Numeric geompath_za_at_r ( const Numeric ppc,
const Numeric a_za,
const Numeric r 
)

geompath_za_at_r

Calculates the zenith angle for a given radius along a geometrical propagation path.

For downlooking cases, the two points must be on the same side of the tangent point.

Both positive and negative zenith angles are handled.

Returns
Zenith angle at the point of interest.
Parameters
ppcPropagation path constant.
a_zaA zenith angle along the path on the same side of the tangent point as the point of interest.
rRadius of the point of interest.
Author
Patrick Eriksson
Date
2002-05-17

Definition at line 147 of file ppath.cc.

References abs, RAD2DEG, and RTOL.

Referenced by do_gridcell_3d(), geompath_from_r1_to_r2(), ppath_start_stepping(), r_crossing_2d(), raytrace_1d_linear_basic(), raytrace_2d_linear_basic(), and VectorZtanToZa1D().

◆ is_los_downwards()

bool is_los_downwards ( const Numeric za,
const Numeric tilt 
)

is_los_downwards

Determines if a line-of-sight is downwards compared to the angular tilt of the surface or a pressure level.

For example, this function can be used to determine if the line-of-sight goes into the surface for a starting point exactly on the surface radius.

As the radius of the surface and pressure levels varies as a function of latitude, it is not clear if a zenith angle of 90 is above or below e.g. the surface.

Returns
Boolean that is true if LOS is downwards.
Parameters
zaZenith angle of line-of-sight.
tiltAngular tilt of the surface or the pressure level (as returned by plevel_angletilt)
Author
Patrick Eriksson
Date
2002-06-03

Definition at line 875 of file ppath.cc.

References abs.

Referenced by ppath_start_2d(), ppath_start_3d(), and ppath_start_stepping().

◆ map_daa()

void map_daa ( Numeric za,
Numeric aa,
const Numeric za0,
const Numeric aa0,
const Numeric aa_grid 
)

Maps MBLOCK_AA_GRID values to correct ZA and AA

Sensor LOS azimuth angles and mblock_aa_grid values can not be added in a straightforward way due to properties of the polar coordinate system used to define line-of-sights. This function performs a "mapping" ensuring that the pencil beam directions specified by mblock_za_grid and mblock_aa_grid form a rectangular grid (on the unit sphere) for any za.

za0 and aa0 match the angles of the ARTS WSV sensor_los. aa_grid shall hold values "close" to 0. The limit is here set to 5 degrees.

Parameters
zaOut: Zenith angle matching aa0+aa_grid
aaOut: Azimuth angles matching aa0+aa_grid
za0Zenith angle
aa0Centre azimuth angle
aa_gridMBLOCK_AA_GRID values
Author
Patrick Eriksson
Date
2009-10-02

Definition at line 576 of file ppath.cc.

References abs, cart2zaaa(), mult(), rotationmat3D(), and zaaa2cart().

Referenced by iyb_calc_za_loop_body().

◆ plevel_angletilt()

Numeric plevel_angletilt ( const Numeric r,
const Numeric c1 
)

plevel_angletilt

Calculates the angular tilt of the surface or a pressure level.

Note that the tilt value is a local value. The tilt for a constant slope value, is different for different radii.

Returns
The angular tilt.
Parameters
rThe radius for the level at the point of interest.
c1The radial slope, as returned by e.g. plevel_slope_2d.
Author
Patrick Eriksson
Date
2002-06-03

Definition at line 844 of file ppath.cc.

References RAD2DEG.

Referenced by ppath_start_2d(), ppath_start_3d(), ppath_start_stepping(), and specular_losCalc().

◆ plevel_slope_2d()

void plevel_slope_2d ( Numeric c1,
ConstVectorView  lat_grid,
ConstVectorView  refellipsoid,
ConstVectorView  z_surf,
const GridPos gp,
const Numeric za 
)

plevel_slope_2d

Calculates the radial slope of the surface or a pressure level for 2D.

The radial slope is here the derivative of the radius with respect to the latitude. The unit is accordingly m/degree.

Note that the radius is defined to change linearly between grid points, and the slope is constant between to points of the latitude grid. The radius can inside the grid range be expressed as r = r0(lat0) + c1*(lat-lat0) .

Note also that the slope is always calculated with respect to increasing latitudes, independently of the zenith angle. The zenith angle is only used to determine which grid range that is of interest when the position is exactly on top of a grid point.

Parameters
c1Out: The radial slope [m/degree]
lat_gridThe latitude grid.
refellipsoidAs the WSV with the same name.
z_surfGeometrical altitude of the surface, or the pressure level of interest, for the latitide dimension
gpLatitude grid position for the position of interest
zaLOS zenith angle.
Author
Patrick Eriksson
Date
2002-06-03

Definition at line 782 of file ppath.cc.

References gridpos2gridrange(), and refell2r().

Referenced by plevel_crossing_2d(), ppath_start_2d(), ppath_start_stepping(), and specular_losCalc().

◆ plevel_slope_3d()

void plevel_slope_3d ( Numeric c1,
Numeric c2,
ConstVectorView  lat_grid,
ConstVectorView  lon_grid,
ConstVectorView  refellipsoid,
ConstMatrixView  z_surf,
const GridPos gp_lat,
const GridPos gp_lon,
const Numeric aa 
)

plevel_slope_3d

Calculates the radial slope of the surface or a pressure level for 3D.

For 2D where the radius can be expressed as r = r0 + c1*dalpha, where alpha is the latitude. The radius is here for 3D expressed as a second order polynomial: r = r0 + c1*dalpha + c2*dalpha^2, where alpha is the angular change (in degrees) along the great circle along the given azimuth angle.

For a point exactly on a grid value it is not clear if it is the range below or above that is of interest. The azimuth angle is used to resolve such cases.

Parameters
c1Out: See above. Unit is m/degree.
c2Out: See above. Unit is m/degree^2.
lat_gridThe latitude grid.
lon_gridThe longitude grid.
refellipsoidAs the WSV with the same name.
z_surfGeometrical altitude of the surface, or the pressure level of interest.
gp_latLatitude grid position for the position of interest.
gp_lonLongitude grid position for the position of interest.
aaAzimuth angle.
Author
Patrick Eriksson
Date
2002-06-03

Definition at line 1435 of file ppath.cc.

References abs, gridpos2gridrange(), interp(), interpweights(), is_lon_cyclic(), ConstVectorView::nelem(), plevel_slope_3d(), POLELAT, and refell2r().

◆ ppath_calc()

void ppath_calc ( Workspace ws,
Ppath ppath,
const Agenda ppath_step_agenda,
const Index atmosphere_dim,
const Vector p_grid,
const Vector lat_grid,
const Vector lon_grid,
const Tensor3 t_field,
const Tensor3 z_field,
const Tensor4 vmr_field,
const Vector f_grid,
const Vector refellipsoid,
const Matrix z_surface,
const Index cloudbox_on,
const ArrayOfIndex cloudbox_limits,
const Vector rte_pos,
const Vector rte_los,
const Numeric ppath_lraytrace,
const bool &  ppath_inside_cloudbox_do,
const Verbosity verbosity 
)

ppath_calc

This is the core for the WSM ppathStepByStep.

This function takes mainly the same input as ppathStepByStep (that is, those input arguments are the WSV with the same name).

Parameters
wsCurrent Workspace
ppathOutput: A Ppath structure
ppath_step_agendaAs the WSM with the same name.
atmosphere_dimThe atmospheric dimensionality.
p_gridThe pressure grid.
lat_gridThe latitude grid.
lon_gridThe longitude grid.
t_fieldAs the WSM with the same name.
z_fieldAs the WSM with the same name.
vmr_fieldAs the WSM with the same name.
f_gridAs the WSM with the same name.
refellipsoidAs the WSM with the same name.
z_surfaceSurface altitude.
cloudbox_onFlag to activate the cloud box.
cloudbox_limitsIndex limits of the cloud box.
rte_posThe position of the sensor.
rte_losThe line-of-sight of the sensor.
ppath_lraytraceAs the WSM with the same name.
ppath_inside_cloudbox_doAs the WSM with the same name.
Author
Patrick Eriksson
Date
2003-01-08

Definition at line 5344 of file ppath.cc.

References abs, Ppath::background, chk_rte_los(), chk_rte_pos(), Ppath::constant, Ppath::end_los, Ppath::end_lstep, Ppath::end_pos, fractional_gp(), Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, gridpos(), is_gridpos_at_index_i(), joker, Ppath::los, Ppath::lstep, Array< base >::nelem(), ConstVectorView::nelem(), Ppath::ngroup, Ppath::np, Ppath::nreal, Ppath::pos, ppath_copy(), ppath_init_structure(), ppath_set_background(), ppath_start_stepping(), ppath_step_agendaExecute(), ppath_what_background(), Ppath::r, Ppath::start_los, Ppath::start_lstep, and Ppath::start_pos.

Referenced by defocusing_general_sub(), defocusing_sat2sat(), iwp_cloud_opt_pathCalc(), MCIPA(), ppathFromRtePos2(), and ppathStepByStep().

◆ ppath_copy()

void ppath_copy ( Ppath ppath1,
const Ppath ppath2,
const Index ncopy 
)

ppath_copy

Copy the content in ppath2 to ppath1.

The ppath1 structure must be allocated before calling the function. The structure can be allocated to hold more points than found in ppath2. The data of ppath2 is placed in the first positions of ppath1.

Parameters
ppath1Output: Ppath structure.
ppath2The ppath structure to be copied.
ncopyNumber of points in ppath2 to copy. If set to negative, the number is set to ppath2.np.
Author
Patrick Eriksson
Date
2002-07-03

Definition at line 1876 of file ppath.cc.

References Ppath::background, Ppath::constant, Ppath::dim, Ppath::end_los, Ppath::end_lstep, Ppath::end_pos, Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, gridpos_copy(), joker, Ppath::los, Ppath::lstep, Ppath::ngroup, Ppath::np, Ppath::nreal, Ppath::pos, Ppath::r, Ppath::start_los, Ppath::start_lstep, and Ppath::start_pos.

Referenced by ppath_append(), ppath_calc(), and ppathFromRtePos2().

◆ ppath_geom_updown_1d()

void ppath_geom_updown_1d ( Ppath ppath,
ConstVectorView  z_field,
ConstVectorView  refellipsoid,
const Numeric z_surface,
const Index cloudbox_on,
const ArrayOfIndex cloudbox_limits 
)

◆ ppath_init_structure()

void ppath_init_structure ( Ppath ppath,
const Index atmosphere_dim,
const Index np 
)

ppath_init_structure

Initiates a Ppath structure to hold the given number of points.

All fields releated with the surface, symmetry and tangent point are set to 0 or empty. The background field is set to background case 0. The constant field is set to -1. The refraction field is set to 0.

The length of the lstep field is set to np-1.

Parameters
ppathOutput: A Ppath structure.
atmosphere_dimThe atmospheric dimensionality.
npNumber of points of the path.
Author
Patrick Eriksson
Date
2002-05-17

Definition at line 1726 of file ppath.cc.

References Ppath::constant, Ppath::dim, Ppath::end_los, Ppath::end_lstep, Ppath::end_pos, Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, Ppath::los, Ppath::lstep, max, Ppath::ngroup, Ppath::np, Ppath::nreal, Ppath::pos, ppath_set_background(), Ppath::r, Vector::resize(), Matrix::resize(), Ppath::start_los, Ppath::start_lstep, and Ppath::start_pos.

Referenced by cloud_ppath_update1D(), cloud_ppath_update1D_noseq(), cloud_ppath_update3D(), ppath_append(), ppath_calc(), ppath_end_1d(), ppath_end_2d(), ppath_end_3d(), ppath_start_stepping(), and ppathFromRtePos2().

◆ ppath_set_background()

void ppath_set_background ( Ppath ppath,
const Index case_nr 
)

ppath_set_background

Sets the background field of a Ppath structure.

The different background cases have a number coding to simplify a possible change of the strings and checking of the what case that is valid.

The case numbers are:
0. Unvalid.

  1. Space.
  2. The surface.
  3. The cloud box boundary.
  4. The interior of the cloud box.
Parameters
ppathOutput: A Ppath structure.
case_nrCase number (see above)
Author
Patrick Eriksson
Date
2002-05-17

Definition at line 1790 of file ppath.cc.

References Ppath::background.

Referenced by ppath_calc(), ppath_end_1d(), ppath_end_2d(), ppath_end_3d(), ppath_init_structure(), ppath_start_stepping(), and ppathFromRtePos2().

◆ ppath_start_stepping()

void ppath_start_stepping ( Ppath ppath,
const Index atmosphere_dim,
ConstVectorView  p_grid,
ConstVectorView  lat_grid,
ConstVectorView  lon_grid,
ConstTensor3View  z_field,
ConstVectorView  refellipsoid,
ConstMatrixView  z_surface,
const Index cloudbox_on,
const ArrayOfIndex cloudbox_limits,
const bool &  ppath_inside_cloudbox_do,
ConstVectorView  rte_pos,
ConstVectorView  rte_los,
const Verbosity verbosity 
)

ppath_start_stepping

Initiates a Ppath structure for calculation of a path with ppath_step.

The function performs two main tasks. As mentioned above, it initiates a Ppath structure (a), but it also checks that the end point of the path is at an allowed location (b).

(a): The Ppath structure is set to hold the position and LOS of the last point of the path inside the atmosphere. This point is either the sensor position, or the point where the path leaves the model atmosphere. If the path is totally outside the atmosphere, no point is put into the structure. If the (practical) end and start points are identical, such as when the sensor is inside the cloud box, the background field is set.

(b): If it is found that the end point of the path is at an illegal position a detailed error message is given. Not allowed cases are:

  1. The sensor is placed below surface level.
  2. For 2D and 3D, the path leaves the model atmosphere at a latitude or longitude end face.
  3. For 2D and 3D, the path is totally outside the atmosphere and the latitude and longitude of the tangent point is outside the range of the corresponding grids.

All input variables are identical with the WSV with the same name. The output variable is here called ppath for simplicity, but is in fact ppath_step.

Parameters
ppathOutput: A Ppath structure.
atmosphere_dimThe atmospheric dimensionality.
p_gridThe pressure grid.
lat_gridThe latitude grid.
lon_gridThe longitude grid.
z_fieldThe field of geometrical altitudes.
refellipsoidAs the WSV with the same name.
z_surfaceSurface altitude.
cloudbox_onFlag to activate the cloud box.
cloudbox_limitsIndex limits of the cloud box.
ppath_inside_cloudbox_doAs the WSV with the same name.
rte_posThe position of the sensor.
rte_losThe line-of-sight of the sensor.
Author
Patrick Eriksson
Date
2002-05-17

Definition at line 4606 of file ppath.cc.

References abs, cart2poslos(), Ppath::constant, CREATE_OUT1, DEBUG_ONLY, dx, Ppath::end_los, Ppath::end_lstep, Ppath::end_pos, fractional_gp(), geometrical_ppc(), geompath_l_at_r(), geompath_lat_at_za(), geompath_za_at_r(), Ppath::gp_lat, Ppath::gp_lon, Ppath::gp_p, gridpos(), gridpos_check_fd(), gridpos_copy(), interp(), interpweights(), is_los_downwards(), joker, L_NOT_FOUND, LACC, Ppath::los, ConstVectorView::nelem(), Ppath::ngroup, Ppath::nreal, plevel_angletilt(), plevel_slope_2d(), plevel_slope_3d(), Ppath::pos, poslos2cart(), ppath_init_structure(), ppath_set_background(), Ppath::r, r_crossing_2d(), r_crossing_3d(), refell2d(), refell2r(), resolve_lon(), rte_pos2gridpos(), and RTOL.

Referenced by mcPathTraceGeneral(), mcPathTraceIPA(), and ppath_calc().

◆ ppath_step_geom_1d()

void ppath_step_geom_1d ( Ppath ppath,
ConstVectorView  z_field,
ConstVectorView  refellipsoid,
const Numeric z_surface,
const Numeric lmax 
)

ppath_step_geom_1d

Calculates 1D geometrical propagation path steps.

This is the core function to determine 1D propagation path steps by pure geometrical calculations. Path points are included for crossings with the grids, tangent points and points of intersection with the surface. In addition, points are included in the propgation path to ensure that the distance along the path between the points does not exceed the selected maximum length (lmax). If lmax is <= 0, this means that no length criterion shall be applied.

Note that the input variables are here compressed to only hold data for a 1D atmosphere. For example, z_field is z_field(:,0,0).

For more information read the chapter on propagation paths in AUG.

Parameters
ppathOutput: A Ppath structure.
z_fieldGeometrical altitudes corresponding to p_grid.
refellipsoidAs the WSV with the same name.
z_surfaceSurface altitude.
lmaxMaximum allowed length between the path points.
Author
Patrick Eriksson
Date
2002-05-20

Definition at line 2783 of file ppath.cc.

References Ppath::constant, do_gridrange_1d(), geometrical_ppc(), ConstVectorView::nelem(), ppath_end_1d(), and ppath_start_1d().

Referenced by ppath_stepGeometric().

◆ ppath_step_geom_2d()

void ppath_step_geom_2d ( Ppath ppath,
ConstVectorView  lat_grid,
ConstMatrixView  z_field,
ConstVectorView  refellipsoid,
ConstVectorView  z_surface,
const Numeric lmax 
)

ppath_step_geom_2d

Calculates 2D geometrical propagation path steps.

Works as the same function for 1D, despite that some input arguments are of different type.

Parameters
ppathOutput: A Ppath structure.
lat_gridLatitude grid.
z_fieldGeometrical altitudes
refellipsoidAs the WSV with the same name.
z_surfaceSurface altitudes.
lmaxMaximum allowed length between the path points.
Author
Patrick Eriksson
Date
2002-07-03

Definition at line 3136 of file ppath.cc.

References Ppath::constant, do_gridcell_2d_byltest(), geometrical_ppc(), ConstVectorView::nelem(), ppath_end_2d(), and ppath_start_2d().

Referenced by ppath_stepGeometric().

◆ ppath_step_geom_3d()

void ppath_step_geom_3d ( Ppath ppath,
ConstVectorView  lat_grid,
ConstVectorView  lon_grid,
ConstTensor3View  z_field,
ConstVectorView  refellipsoid,
ConstMatrixView  z_surface,
const Numeric lmax 
)

ppath_step_geom_3d

Calculates 3D geometrical propagation path steps.

Works as the same function for 1D despite that some input arguments are of different type.

Parameters
ppathOutput: A Ppath structure.
lat_gridLatitude grid.
lon_gridLongitude grid.
z_fieldGeometrical altitudes
refellipsoidAs the WSV with the same name.
z_surfaceSurface altitudes.
lmaxMaximum allowed length between the path points.
Author
Patrick Eriksson
Date
2002-12-30

Definition at line 3553 of file ppath.cc.

References Ppath::constant, do_gridcell_3d_byltest(), geometrical_ppc(), ConstVectorView::nelem(), ppath_end_3d(), and ppath_start_3d().

Referenced by mcPathTraceGeneral(), and ppath_stepGeometric().

◆ ppath_step_refr_1d()

void ppath_step_refr_1d ( Workspace ws,
Ppath ppath,
ConstVectorView  p_grid,
ConstTensor3View  z_field,
ConstTensor3View  t_field,
ConstTensor4View  vmr_field,
ConstVectorView  f_grid,
ConstVectorView  refellipsoid,
const Numeric z_surface,
const Numeric lmax,
const Agenda refr_index_air_agenda,
const String rtrace_method,
const Numeric lraytrace 
)

ppath_step_refr_1d

Calculates 1D propagation path steps including effects of refraction.

This function works as the function ppath_step_geom_1d but considers also refraction. The upper length of the ray tracing steps is set by the argument lraytrace. This argument controls only the internal calculations. The maximum distance between the path points is still determined by lmax.

Parameters
wsCurrent Workspace
ppathOut: A Ppath structure.
p_gridPressure grid.
z_fieldAs the WSV with the same name.
t_fieldAs the WSV with the same name.
vmr_fieldAs the WSV with the same name.
f_gridAs the WSV with the same name.
refellipsoidAs the WSV with the same name.
z_surfaceSurface altitude (1D).
lmaxMaximum allowed length between the path points.
refr_index_air_agendaThe WSV with the same name.
rtrace_methodString giving which ray tracing method to use. See the function for options.
lraytraceMaximum allowed length for ray tracing steps.
Author
Patrick Eriksson
Date
2002-11-26

Definition at line 3809 of file ppath.cc.

References Ppath::constant, get_refr_index_1d(), joker, Array< base >::nelem(), ppath_end_1d(), ppath_start_1d(), raytrace_1d_linear_basic(), and refraction_ppc().

Referenced by ppath_stepRefractionBasic().

◆ ppath_step_refr_2d()

void ppath_step_refr_2d ( Workspace ws,
Ppath ppath,
ConstVectorView  p_grid,
ConstVectorView  lat_grid,
ConstTensor3View  z_field,
ConstTensor3View  t_field,
ConstTensor4View  vmr_field,
ConstVectorView  f_grid,
ConstVectorView  refellipsoid,
ConstVectorView  z_surface,
const Numeric lmax,
const Agenda refr_index_air_agenda,
const String rtrace_method,
const Numeric lraytrace 
)

ppath_step_refr_2d

Calculates 2D propagation path steps, with refraction, using a simple and fast ray tracing scheme.

Works as the same function for 1D despite that some input arguments are of different type.

Parameters
wsCurrent Workspace
ppathOut: A Ppath structure.
p_gridPressure grid.
lat_gridLatitude grid.
z_fieldAs the WSV with the same name.
t_fieldAs the WSV with the same name.
vmr_fieldAs the WSV with the same name.
f_gridAs the WSV with the same name.
refellipsoidAs the WSV with the same name.
z_surfaceSurface altitudes.
lmaxMaximum allowed length between the path points.
refr_index_air_agendaThe WSV with the same name.
rtrace_methodString giving which ray tracing method to use. See the function for options.
lraytraceMaximum allowed length for ray tracing steps.
Author
Patrick Eriksson
Date
2002-12-02

Definition at line 4121 of file ppath.cc.

References joker, Array< base >::nelem(), ppath_end_2d(), ppath_start_2d(), and raytrace_2d_linear_basic().

Referenced by ppath_stepRefractionBasic().

◆ ppath_step_refr_3d()

void ppath_step_refr_3d ( Workspace ws,
Ppath ppath,
ConstVectorView  p_grid,
ConstVectorView  lat_grid,
ConstVectorView  lon_grid,
ConstTensor3View  z_field,
ConstTensor3View  t_field,
ConstTensor4View  vmr_field,
ConstVectorView  f_grid,
ConstVectorView  refellipsoid,
ConstMatrixView  z_surface,
const Numeric lmax,
const Agenda refr_index_air_agenda,
const String rtrace_method,
const Numeric lraytrace 
)

ppath_step_refr_3d

Calculates 3D propagation path steps, with refraction, using a simple and fast ray tracing scheme.

Works as the same function for 1D despite that some input arguments are of different type.

Parameters
wsCurrent Workspace
ppathOut: A Ppath structure.
p_gridPressure grid.
lat_gridLatitude grid.
lon_gridLongitude grid.
z_fieldGeometrical altitudes.
t_fieldAtmospheric temperatures.
vmr_fieldVMR values.
f_gridAs the WSV with the same name.
refellipsoidAs the WSV with the same name.
z_surfaceSurface altitudes.
lmaxMaximum allowed length between the path points.
refr_index_air_agendaThe WSV with the same name.
rtrace_methodString giving which ray tracing method to use. See the function for options.
lraytraceMaximum allowed length for ray tracing steps.
Author
Patrick Eriksson
Date
2003-01-08

Definition at line 4466 of file ppath.cc.

References Array< base >::nelem(), ppath_end_3d(), ppath_start_3d(), and raytrace_3d_linear_basic().

Referenced by ppath_stepRefractionBasic().

◆ ppath_what_background()

Index ppath_what_background ( const Ppath ppath)

ppath_what_background

Returns the case number for the radiative background.

See further the function ppath_set_background.

Returns
The case number.
Parameters
ppathA Ppath structure.
Author
Patrick Eriksson
Date
2002-05-17

Definition at line 1835 of file ppath.cc.

References Ppath::background.

Referenced by cloud_ppath_update1D(), cloud_ppath_update1D_noseq(), defocusing_general_sub(), defocusing_sat2sat(), fos(), get_iy_of_background(), iwp_cloud_opt_pathCalc(), iyEmissionStandard(), iyRadioLink(), mcPathTraceGeneral(), ppath_append(), ppath_calc(), ppath_stepGeometric(), ppath_stepRefractionBasic(), and ppathFromRtePos2().

◆ zaaa2cart()

void zaaa2cart ( Numeric dx,
Numeric dy,
Numeric dz,
const Numeric za,
const Numeric aa 
)

zaaa2cart

Converts zenith and azimuth angles to a cartesian unit vector.

This function and the sister function cart2zaaa handles transformation of line-of-sights. This in contrast to the sph/poslos functions that handles positions, or combinations of positions and line-of-sight.

The cartesian coordinate system used for these two functions can be defined as z : za = 0 x : za=90, aa=0 y : za=90, aa=90

Parameters
dxOut: x-part of LOS unit vector.
dyOut: y-part of LOS unit vector.
dzOut: z-part of LOS unit vector.
zaLOS zenith angle at observation position.
aaLOS azimuth angle at observation position.
Author
Patrick Eriksson
Date
2009-10-02

Definition at line 484 of file ppath.cc.

References DEG2RAD, and dx.

Referenced by adjust_los(), map_daa(), propmat_clearskyAddZeeman(), and specular_losCalc().

Variable Documentation

◆ ANGTOL

◆ POLELAT

const Numeric POLELAT = 90-1e-8