ARTS 2.5.11 (git: 6827797f)
surface.cc File Reference
#include "surface.h"
#include <cmath>
#include "auto_md.h"
#include "check_input.h"
#include "matpack_complex.h"
#include "geodetic.h"
#include "math_funcs.h"
#include "matpack_data.h"
#include "physics_funcs.h"
#include "workspace_ng.h"

Go to the source code of this file.

Functions

Numeric calc_incang (ConstVectorView rte_los, ConstVectorView specular_los)
 Calculates the incidence angle for a flat surface, based on rte_los and specular_los.
 
Index index_of_zsurface (const Numeric &z_surface, ConstVectorView z_profile)
 Lccates the surface with respect to pressure levels.
 
void surface_calc (Matrix &iy, ConstTensor3View I, ConstMatrixView surface_los, ConstTensor4View surface_rmatrix, ConstMatrixView surface_emission)
 Weights together downwelling radiation and surface emission.
 
void surface_specular_R_and_b (MatrixView surface_rmatrix, VectorView surface_emission, const Complex &Rv, const Complex &Rh, const Numeric &f, const Index &stokes_dim, const Numeric &surface_skin_t)
 Sets up the surface reflection matrix and emission vector for the case of specular reflection.
 
void surface_props_check (const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &surface_props_data, const ArrayOfString &surface_props_names)
 Peforms basic checks of surface_props_data and surface_props_names
 
void surface_props_interp (Vector &v, const String &vname, const Index &atmosphere_dim, const ArrayOfGridPos &gp_lat, const ArrayOfGridPos &gp_lon, const Matrix &itw, const Tensor3 &surface_props_data, const ArrayOfString &surface_props_names)
 Peforms an interpolation of surface_props_data
 
void dsurface_check (const ArrayOfString &surface_props_names, const ArrayOfString &dsurface_names, const ArrayOfTensor4 dsurface_rmatrix_dx, const ArrayOfMatrix &dsurface_emission_dx)
 Peforms basic checks of the dsurface variables.
 
void surface_get_incoming_direct (Workspace &ws, Matrix &iy_incoming, Index &stars_visible, Vector &specular_los, const Vector &rtp_pos, const Vector &rtp_los, const Index &stokes_dim, const Vector &f_grid, const Index &atmosphere_dim, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &z_field, const Tensor3 &t_field, const EnergyLevelMap &nlte_field, const Tensor4 &vmr_field, const ArrayOfArrayOfSpeciesTag &abs_species, const Tensor3 &wind_u_field, const Tensor3 &wind_v_field, const Tensor3 &wind_w_field, const Tensor3 &mag_u_field, const Tensor3 &mag_v_field, const Tensor3 &mag_w_field, const Matrix &z_surface, const Vector &refellipsoid, const Tensor4 &pnd_field, const ArrayOfTensor4 &dpnd_field_dx, const ArrayOfString &scat_species, const ArrayOfArrayOfSingleScatteringData &scat_data, const Numeric &ppath_lmax, const Numeric &ppath_lraytrace, const Index &ppath_inside_cloudbox_do, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Index &gas_scattering_do, const Index &jacobian_do, const ArrayOfRetrievalQuantity &jacobian_quantities, const ArrayOfSun &suns, const Numeric &rte_alonglos_v, const Agenda &propmat_clearsky_agenda, const Agenda &water_p_eq_agenda, const Agenda &gas_scattering_agenda, const Agenda &ppath_step_agenda, const Verbosity &verbosity)
 Calculate the incoming direct radiation at the surface for a given line of sight.
 

Detailed Description

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
2012-02-06

This file contains internal functions associated with the surface.

Definition in file surface.cc.

Function Documentation

◆ calc_incang()

Numeric calc_incang ( ConstVectorView  rte_los,
ConstVectorView  specular_los 
)

Calculates the incidence angle for a flat surface, based on rte_los and specular_los.

Returns
Incidence angle.
Parameters
[in]rte_losAs the WSV with the same name.
[in]specular_losAs the WSV with the same name.
Author
Patrick Eriksson
Date
2012-11-15

Definition at line 33 of file surface.cc.

Referenced by surfaceFlatRefractiveIndex(), and surfaceTelsem().

◆ dsurface_check()

void dsurface_check ( const ArrayOfString surface_props_names,
const ArrayOfString dsurface_names,
const ArrayOfTensor4  dsurface_rmatrix_dx,
const ArrayOfMatrix &  dsurface_emission_dx 
)

Peforms basic checks of the dsurface variables.

No calculaions, just checks

Parameters
[in]surface_props_dataAs the WVS with the same name.
[in]surface_props_namesAs the WVS with the same name.
[in]dsurface_namesAs the WVS with the same name.
[in]dsurface_ratrix_dxAs the WVS with the same name.
[in]dsurface_emission_dxAs the WVS with the same name.
Author
Patrick Eriksson
Date
2018-09-01

Definition at line 185 of file surface.cc.

References ARTS_USER_ERROR_IF, and Array< base >::nelem().

Referenced by iySurfaceFlatReflectivity(), iySurfaceFlatRefractiveIndex(), SurfaceBlackbody(), SurfaceDummy(), SurfaceFastem(), SurfaceFlatScalarReflectivity(), and SurfaceTessem().

◆ index_of_zsurface()

Index index_of_zsurface ( const Numeric &  z_surface,
ConstVectorView  z_profile 
)

Lccates the surface with respect to pressure levels.

The function returns the index of the pressure level at or just below the surface.

Returns
The found index.
Parameters
[in]z_surfaceA surface value (probably a value from WSV z_surface)
[in]z_profileA profile of geometrical altitudes (probably a page of z_field)
Author
Patrick Eriksson
Date
2019-10-26

Definition at line 37 of file surface.cc.

Referenced by spectral_radiance_fieldClearskyPlaneParallel().

◆ surface_calc()

void surface_calc ( Matrix &  iy,
ConstTensor3View  I,
ConstMatrixView  surface_los,
ConstTensor4View  surface_rmatrix,
ConstMatrixView  surface_emission 
)

Weights together downwelling radiation and surface emission.

iy* must have correct size when function is called.

Parameters
[out]iyRadiation matrix, amtching the WSV with the same name.
[in]IDownwelling radiation, with dimensions (surface_los, f_grid, stokes_dim)
[in]surface_losAs the WSV with the same name.
[in]surface_rmatrixAs the WSV with the same name.
[in]surface_emissionAs the WSV with the same name.
Author
Patrick Eriksson
Date
2005-04-07

Definition at line 46 of file surface.cc.

References mult().

Referenced by iySurfaceFastem(), iySurfaceFlatReflectivityDirect(), iySurfaceFlatRefractiveIndexDirect(), iySurfaceRtpropAgenda(), and iySurfaceRtpropCalc().

◆ surface_get_incoming_direct()

void surface_get_incoming_direct ( Workspace ws,
Matrix &  iy_incoming,
Index &  stars_visible,
Vector &  specular_los,
const Vector &  rtp_pos,
const Vector &  rtp_los,
const Index &  stokes_dim,
const Vector &  f_grid,
const Index &  atmosphere_dim,
const Vector &  p_grid,
const Vector &  lat_grid,
const Vector &  lon_grid,
const Tensor3 &  z_field,
const Tensor3 &  t_field,
const EnergyLevelMap nlte_field,
const Tensor4 &  vmr_field,
const ArrayOfArrayOfSpeciesTag abs_species,
const Tensor3 &  wind_u_field,
const Tensor3 &  wind_v_field,
const Tensor3 &  wind_w_field,
const Tensor3 &  mag_u_field,
const Tensor3 &  mag_v_field,
const Tensor3 &  mag_w_field,
const Matrix &  z_surface,
const Vector &  refellipsoid,
const Tensor4 &  pnd_field,
const ArrayOfTensor4 &  dpnd_field_dx,
const ArrayOfString scat_species,
const ArrayOfArrayOfSingleScatteringData scat_data,
const Numeric &  ppath_lmax,
const Numeric &  ppath_lraytrace,
const Index &  ppath_inside_cloudbox_do,
const Index &  cloudbox_on,
const ArrayOfIndex cloudbox_limits,
const Index &  gas_scattering_do,
const Index &  jacobian_do,
const ArrayOfRetrievalQuantity jacobian_quantities,
const ArrayOfSun suns,
const Numeric &  rte_alonglos_v,
const Agenda propmat_clearsky_agenda,
const Agenda water_p_eq_agenda,
const Agenda gas_scattering_agenda,
const Agenda ppath_step_agenda,
const Verbosity verbosity 
)

Calculate the incoming direct radiation at the surface for a given line of sight.

Parameters
[in,out]wsARTS workspace
[out]iy_incomingMatrix Incomming monochromatic radiance
[out]stars_visibleIndex Flag indicating if sun(s) are in line of sight
[in]rtp_posAs the WVS with the same name.
[in]rtp_losAs the WVS with the same name.
[in]stokes_dimAs the WVS with the same name.
[in]f_gridAs the WVS with the same name.
[in]atmosphere_dimAs the WVS with the same name.
[in]p_gridAs the WVS with the same name.
[in]lat_gridAs the WVS with the same name.
[in]lon_gridAs the WVS with the same name.
[in]z_fieldAs the WVS with the same name.
[in]t_fieldAs the WVS with the same name.
[in]nlte_fieldAs the WVS with the same name.
[in]vmr_fieldAs the WVS with the same name.
[in]abs_speciesAs the WVS with the same name.
[in]wind_u_fieldAs the WVS with the same name.
[in]wind_v_fieldAs the WVS with the same name.
[in]wind_w_fieldAs the WVS with the same name.
[in]mag_u_fieldAs the WVS with the same name.
[in]mag_v_fieldAs the WVS with the same name.
[in]mag_w_fieldAs the WVS with the same name.
[in]z_surfaceAs the WVS with the same name.
[in]refellipsoidAs the WVS with the same name.
[in]pnd_fieldAs the WVS with the same name.
[in]dpnd_field_dxAs the WVS with the same name.
[in]scat_speciesAs the WVS with the same name.
[in]scat_dataAs the WVS with the same name.
[in]ppath_lmaxAs the WVS with the same name.
[in]ppath_lraytraceAs the WVS with the same name.
[in]ppath_inside_cloudbox_doAs the WVS with the same name.
[in]cloudbox_onAs the WVS with the same name.
[in]cloudbox_limitsAs the WVS with the same name.
[in]gas_scattering_doAs the WVS with the same name.
[in]jacobian_doAs the WVS with the same name.
[in]jacobian_quantitiesAs the WVS with the same name.
[in]sunsAs the WVS with the same name.
[in]rte_alonglos_vAs the WVS with the same name.
[in]propmat_clearsky_agendaAs the WVS with the same name.
[in]water_p_eq_agendaAs the WVS with the same name.
[in]gas_scattering_agendaAs the WVS with the same name.
[in]ppath_step_agendaAs the WVS with the same name.
[in]verbosityAs the WVS with the same name.

Definition at line 213 of file surface.cc.

References get_sun_background(), iyTransmissionStandard(), ppath_calc(), and specular_losCalc().

Referenced by iySurfaceFlatReflectivityDirect(), and iySurfaceFlatRefractiveIndexDirect().

◆ surface_props_check()

void surface_props_check ( const Index &  atmosphere_dim,
const Vector &  lat_grid,
const Vector &  lon_grid,
const Tensor3 &  surface_props_data,
const ArrayOfString surface_props_names 
)

Peforms basic checks of surface_props_data and surface_props_names

No calculaions, just checks

Parameters
[in]atmosphere_dimAs the WVS with the same name.
[in]lat_gridAs the WVS with the same name.
[in]lon_gridAs the WVS with the same name.
[in]surface_props_dataAs the WVS with the same name.
[in]surface_props_namesAs the WVS with the same name.
Author
Patrick Eriksson
Date
2018-09-01

Definition at line 122 of file surface.cc.

References ARTS_USER_ERROR_IF, and Array< base >::nelem().

Referenced by iySurfaceFlatReflectivity(), iySurfaceFlatRefractiveIndex(), iySurfaceLambertian(), SurfaceBlackbody(), SurfaceDummy(), SurfaceFastem(), SurfaceFlatScalarReflectivity(), SurfaceTessem(), and x2artsAtmAndSurf().

◆ surface_props_interp()

void surface_props_interp ( Vector &  v,
const String vname,
const Index &  atmosphere_dim,
const ArrayOfGridPos gp_lat,
const ArrayOfGridPos gp_lon,
const Matrix &  itw,
const Tensor3 &  surface_props_data,
const ArrayOfString surface_props_names 
)

Peforms an interpolation of surface_props_data

The function assumes that the intrpolatin gives a single value. The vector v* must have lenght 1.

Parameters
[in]vInterpolated value
[in]vnameName of surface variable to interpolate
[in]atmosphere_dimAs the WVS with the same name.
[in]gp_latPre-calculatd latitude grid positions
[in]gp_lonPre-calculatd longitude grid positions
[in]itwPre-calculatd interpolation weight
[in]surface_props_dataAs the WVS with the same name.
[in]surface_props_namesAs the WVS with the same name.
Author
Patrick Eriksson
Date
2018-09-01

Definition at line 156 of file surface.cc.

References ARTS_ASSERT, ARTS_USER_ERROR, interp_atmsurface_by_itw(), Array< base >::nelem(), and v.

Referenced by iySurfaceFlatReflectivity(), iySurfaceFlatRefractiveIndex(), iySurfaceLambertian(), SurfaceBlackbody(), SurfaceFastem(), SurfaceFlatScalarReflectivity(), and SurfaceTessem().

◆ surface_specular_R_and_b()

void surface_specular_R_and_b ( MatrixView  surface_rmatrix,
VectorView  surface_emission,
const Complex &  Rv,
const Complex &  Rh,
const Numeric &  f,
const Index &  stokes_dim,
const Numeric &  surface_skin_t 
)

Sets up the surface reflection matrix and emission vector for the case of specular reflection.

The function handles only one frequency at the time.

See further the surface chapter in the user guide.

Parameters
[out]surface_rmatrixAs the WSV with the same name, but slice for one direction and one frequency.
[out]surface_emissionAs the WSV with the same name, but slice for one direction and one frequency.
[in]RvComplex amplitude relection coefficient vertical polarisation.
[in]RhComplex amplitude relection coefficient horisontal polarisation.
[in]fFrequency (a scalar).
[in]stokes_dimAs the WSV with the same name.
[in]surface_skin_tAs the WSV with the same name.
Author
Patrick Eriksson
Date
2004-09-24

Definition at line 71 of file surface.cc.

References a, ARTS_ASSERT, b, c, d, and planck().

Referenced by surfaceFlatRefractiveIndex().