ARTS
2.2.66
|
Workspace functions associated wih the surface and its properties. More...
#include <cmath>
#include "arts.h"
#include "auto_md.h"
#include "check_input.h"
#include "complex.h"
#include "geodetic.h"
#include "math_funcs.h"
#include "messages.h"
#include "special_interp.h"
#include "interpolation.h"
#include "physics_funcs.h"
#include "rte.h"
#include "surface.h"
Go to the source code of this file.
Functions | |
void | InterpSurfaceFieldToPosition (Numeric &outvalue, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lon_grid, const Vector &rtp_pos, const Matrix &z_surface, const Matrix &field, const Verbosity &verbosity) |
WORKSPACE METHOD: InterpSurfaceFieldToPosition. More... | |
void | iySurfaceRtpropAgenda (Workspace &ws, Matrix &iy, ArrayOfTensor3 &diy_dx, const Tensor3 &iy_transmission, const Index &jacobian_do, const Index &atmosphere_dim, const Tensor3 &t_field, const Tensor3 &z_field, const Tensor4 &vmr_field, const Index &cloudbox_on, const Index &stokes_dim, const Vector &f_grid, const Vector &rtp_pos, const Vector &rtp_los, const Vector &rte_pos2, const Agenda &iy_main_agenda, const Agenda &surface_rtprop_agenda, const Verbosity &) |
WORKSPACE METHOD: iySurfaceRtpropAgenda. More... | |
void | specular_losCalc (Vector &specular_los, Vector &surface_normal, const Vector &rtp_pos, const Vector &rtp_los, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lon_grid, const Vector &refellipsoid, const Matrix &z_surface, const Verbosity &) |
WORKSPACE METHOD: specular_losCalc. More... | |
void | surfaceBlackbody (Workspace &ws, Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Vector &f_grid, const Index &stokes_dim, const Numeric &surface_skin_t, const Agenda &blackbody_radiation_agenda, const Verbosity &verbosity) |
WORKSPACE METHOD: surfaceBlackbody. More... | |
void | surfaceFlatRefractiveIndex (Workspace &ws, Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Vector &f_grid, const Index &stokes_dim, const Index &atmosphere_dim, const Vector &rtp_los, const Vector &specular_los, const Numeric &surface_skin_t, const GriddedField3 &surface_complex_refr_index, const Agenda &blackbody_radiation_agenda, const Verbosity &verbosity) |
WORKSPACE METHOD: surfaceFlatRefractiveIndex. More... | |
void | surfaceFlatReflectivity (Workspace &ws, Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Vector &f_grid, const Index &stokes_dim, const Index &atmosphere_dim, const Vector &specular_los, const Numeric &surface_skin_t, const Tensor3 &surface_reflectivity, const Agenda &blackbody_radiation_agenda, const Verbosity &verbosity) |
WORKSPACE METHOD: surfaceFlatReflectivity. More... | |
void | surfaceFlatScalarReflectivity (Workspace &ws, Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Vector &f_grid, const Index &stokes_dim, const Index &atmosphere_dim, const Vector &specular_los, const Numeric &surface_skin_t, const Vector &surface_scalar_reflectivity, const Agenda &blackbody_radiation_agenda, const Verbosity &verbosity) |
WORKSPACE METHOD: surfaceFlatScalarReflectivity. More... | |
void | surfaceLambertianSimple (Workspace &ws, Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Vector &f_grid, const Index &stokes_dim, const Index &atmosphere_dim, const Vector &rtp_los, const Numeric &surface_skin_t, const Vector &surface_scalar_reflectivity, const Index &lambertian_nza, const Agenda &blackbody_radiation_agenda, const Numeric &za_pos, const Verbosity &) |
WORKSPACE METHOD: surfaceLambertianSimple. More... | |
void | surface_complex_refr_indexFromGriddedField5 (GriddedField3 &surface_complex_refr_index, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lat_true, const Vector &lon_true, const Vector &rtp_pos, const GriddedField5 &complex_n_field, const Verbosity &) |
WORKSPACE METHOD: surface_complex_refr_indexFromGriddedField5. More... | |
void | surface_reflectivityFromGriddedField6 (Tensor3 &surface_reflectivity, const Index &stokes_dim, const Vector &f_grid, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lat_true, const Vector &lon_true, const Vector &rtp_pos, const Vector &rtp_los, const GriddedField6 &r_field, const Verbosity &) |
WORKSPACE METHOD: surface_reflectivityFromGriddedField6. More... | |
void | surface_scalar_reflectivityFromGriddedField4 (Vector &surface_scalar_reflectivity, const Index &stokes_dim, const Vector &f_grid, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lat_true, const Vector &lon_true, const Vector &rtp_pos, const Vector &rtp_los, const GriddedField4 &r_field, const Verbosity &) |
WORKSPACE METHOD: surface_scalar_reflectivityFromGriddedField4. More... | |
Variables | |
const Numeric | DEG2RAD |
Workspace functions associated wih the surface and its properties.
These functions are listed in the doxygen documentation as entries of the file auto_md.h.
Definition in file m_surface.cc.
void InterpSurfaceFieldToPosition | ( | Numeric & | out, |
const Index & | atmosphere_dim, | ||
const Vector & | lat_grid, | ||
const Vector & | lon_grid, | ||
const Vector & | rtp_pos, | ||
const Matrix & | z_surface, | ||
const Matrix & | field, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: InterpSurfaceFieldToPosition.
Point interpolation of surface fields.
The default way to specify the position is by rtp_pos.
Linear interpolation is applied.
The interpolation is done for the latitude and longitude in rtp_pos*, while the altitude in rtp_pos is not part of the calculations. However, it is checked that the altitude of rtp_pos is inside the range covered by z_surface with a 1 m margin, to give a warning when the specified position is not consistent with the surface altitudes.
[out] | out | Generic output |
[in] | atmosphere_dim | WS Input |
[in] | lat_grid | WS Input |
[in] | lon_grid | WS Input |
[in] | rtp_pos | WS Input |
[in] | z_surface | WS Input |
[in] | field | Generic Input |
Definition at line 68 of file m_surface.cc.
References chk_atm_grids(), chk_atm_surface(), chk_interpolation_grids(), chk_rte_pos(), CREATE_OUT3, gridpos(), interp_atmsurface_by_gp(), max, and min.
Referenced by InterpSurfaceFieldToPosition_g().
void iySurfaceRtpropAgenda | ( | Workspace & | ws, |
Matrix & | iy, | ||
ArrayOfTensor3 & | diy_dx, | ||
const Tensor3 & | iy_transmission, | ||
const Index & | jacobian_do, | ||
const Index & | atmosphere_dim, | ||
const Tensor3 & | t_field, | ||
const Tensor3 & | z_field, | ||
const Tensor4 & | vmr_field, | ||
const Index & | cloudbox_on, | ||
const Index & | stokes_dim, | ||
const Vector & | f_grid, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Vector & | rte_pos2, | ||
const Agenda & | iy_main_agenda, | ||
const Agenda & | surface_rtprop_agenda, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iySurfaceRtpropAgenda.
Interface to surface_rtprop_agenda for iy_surface_agenda.
This method is designed to be part of iy_surface_agenda. It determines the radiative properties of the surface by surface_rtprop_agenda* and calculates the downwelling radiation by iy_main_agenda, and sums up the terms as described in AUG. That is, this WSM uses the output from surface_rtprop_agenda in a straightforward fashion.
[in,out] | ws | Workspace |
[out] | iy | WS Output |
[out] | diy_dx | WS Output |
[in] | iy_transmission | WS Input |
[in] | jacobian_do | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | t_field | WS Input |
[in] | z_field | WS Input |
[in] | vmr_field | WS Input |
[in] | cloudbox_on | WS Input |
[in] | stokes_dim | WS Input |
[in] | f_grid | WS Input |
[in] | rtp_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | rte_pos2 | WS Input |
[in] | iy_main_agenda | WS Input |
[in] | surface_rtprop_agenda | WS Input |
Definition at line 124 of file m_surface.cc.
References chk_if_in_range(), chk_rte_los(), chk_rte_pos(), iy_main_agendaExecute(), iy_transmission_mult(), joker, Agenda::name(), ConstTensor4View::nbooks(), ConstMatrixView::ncols(), ConstTensor4View::ncols(), ConstVectorView::nelem(), ConstTensor3View::npages(), ConstTensor4View::npages(), ConstMatrixView::nrows(), ConstTensor4View::nrows(), surface_calc(), and surface_rtprop_agendaExecute().
Referenced by iySurfaceRtpropAgenda_g().
void specular_losCalc | ( | Vector & | specular_los, |
Vector & | surface_normal, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Index & | atmosphere_dim, | ||
const Vector & | lat_grid, | ||
const Vector & | lon_grid, | ||
const Vector & | refellipsoid, | ||
const Matrix & | z_surface, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: specular_losCalc.
Calculates the specular direction for intersections with the surface.
A help method to set up the surface properties. This method calculates specular_los, that is required in several methods to convert zenith angles to incidence angles.
The method also returns the line-of-sight for the surface normal.
[out] | specular_los | WS Output |
[out] | surface_normal | WS Output |
[in] | rtp_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | lat_grid | WS Input |
[in] | lon_grid | WS Input |
[in] | refellipsoid | WS Input |
[in] | z_surface | WS Input |
Definition at line 243 of file m_surface.cc.
References cart2zaaa(), chk_interpolation_grids(), cross3(), fac(), gridpos(), interp(), interpweights(), joker, max, plevel_angletilt(), plevel_slope_2d(), plevel_slope_3d(), refell2d(), Vector::resize(), sign(), and zaaa2cart().
Referenced by specular_losCalc_g().
void surface_complex_refr_indexFromGriddedField5 | ( | GriddedField3 & | surface_complex_refr_index, |
const Index & | atmosphere_dim, | ||
const Vector & | lat_grid, | ||
const Vector & | lat_true, | ||
const Vector & | lon_true, | ||
const Vector & | rtp_pos, | ||
const GriddedField5 & | complex_refr_index_field, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surface_complex_refr_indexFromGriddedField5.
Extracts complex refractive index from a field of such data.
The method allows to obtain surface_complex_refr_index by interpolation of a geographical field of such data. The position for which refraction shall be extracted is given by rtp_pos. The refractive index field is expected to be stored as: <br> GriddedField5: <br> Vector f_grid[N_f] <br> Vector T_grid[N_T] <br> ArrayOfString Complex[2] <br> Vector "Latitude" [N_lat] <br> Vector "Longitude" [N_lon] <br> Tensor5 data[N_f][N_T][2][N_lat][N_lon]
Definition and treatment of the three first dimensions follows complex_refr_index*, e.g. the temperature grid is allowed to have length 1. The grids for latitude and longitude must have a length of >= 2 (ie. no automatic expansion).
Hence, this method performs an interpolation only in the lat and lon dimensions, to a single point. The remaining GriddedField3 is simply returned as surface_complex_refr_index.
[out] | surface_complex_refr_index | WS Output |
[in] | atmosphere_dim | WS Input |
[in] | lat_grid | WS Input |
[in] | lat_true | WS Input |
[in] | lon_true | WS Input |
[in] | rtp_pos | WS Input |
[in] | complex_refr_index_field | Generic Input |
Definition at line 693 of file m_surface.cc.
References GriddedField5::checksize_strict(), chk_griddedfield_gridname(), chk_if_in_range(), chk_latlon_true(), chk_rte_pos(), GriddedField3::data, GriddedField5::data, GriddedField::get_numeric_grid(), gridpos(), interp(), interpweights(), joker, lon_shiftgrid(), ConstTensor5View::nbooks(), ConstTensor5View::ncols(), ConstTensor5View::npages(), ConstTensor5View::nrows(), ConstTensor5View::nshelves(), pos2true_latlon(), GriddedField3::resize(), GriddedField::set_grid(), and GriddedField::set_grid_name().
Referenced by surface_complex_refr_indexFromGriddedField5_g().
void surface_reflectivityFromGriddedField6 | ( | Tensor3 & | surface_reflectivity, |
const Index & | stokes_dim, | ||
const Vector & | f_grid, | ||
const Index & | atmosphere_dim, | ||
const Vector & | lat_grid, | ||
const Vector & | lat_true, | ||
const Vector & | lon_true, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const GriddedField6 & | r_field, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surface_reflectivityFromGriddedField6.
Extracts surface reflectivities from a field of such data.
This method allows to specify a field of surface reflectivity for automatic interpolation to points of interest. The position and direction for which the reflectivity shall be extracted are given by rtp_pos and rtp_los. The reflectivity field is expected to be stored as: <br> GriddedField6: <br> Vector "Frequency" [N_f] <br> Vector "Stokes element" [N_s1] <br> Vector "Stokes_element" [N_s2] <br> Vector "Incidence angle" [N_ia] <br> Vector "Latitude" [N_lat] <br> Vector "Longitude" [N_lon] <br> Tensor6 data[N_f][N_s1][N_s2][N_ia][N_lat][N_lon]
Grids for incidence angle, latitude and longitude must have a length of >= 2 (ie. no automatic expansion). If the frequency grid has length 1, this is taken as that the reflectivity is constant, following the definition of surface_scalar_reflectivity. The data can cover higher Stokes dimensionalities than set by stokes_dim*. Data for non-used Stokes elements are just cropped. The order between the two Stokes dimensions is the same as in surface_reflectivity* and surface_rmatrix*.
The interpolation is done in steps: <br> 1: Linear interpolation for lat and lon (std. extrapolation). <br> 2: Interpolation in incidence angle (std. extrapolation). <br> If the grid has a length of >= 4, cubic interpolation is <br> applied. Otherwise linear interpolation. <br> 3. Linear interpolation in frequency (if input data have more <br> than one frequency).
[out] | surface_reflectivity | WS Output |
[in] | stokes_dim | WS Input |
[in] | f_grid | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | lat_grid | WS Input |
[in] | lat_true | WS Input |
[in] | lon_true | WS Input |
[in] | rtp_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | r_field | Generic Input |
Definition at line 796 of file m_surface.cc.
References GriddedField6::checksize_strict(), chk_griddedfield_gridname(), chk_if_in_range(), chk_interpolation_grids(), chk_latlon_true(), chk_rte_los(), chk_rte_pos(), GriddedField6::data, GriddedField::get_numeric_grid(), gridpos(), gridpos_poly(), interp(), interpweights(), joker, lon_shiftgrid(), ConstTensor6View::nbooks(), ConstTensor6View::ncols(), ConstVectorView::nelem(), ConstTensor6View::npages(), ConstTensor6View::nrows(), ConstTensor6View::nshelves(), ConstTensor6View::nvitrines(), pos2true_latlon(), and Tensor3::resize().
Referenced by surface_reflectivityFromGriddedField6_g().
void surface_scalar_reflectivityFromGriddedField4 | ( | Vector & | surface_scalar_reflectivity, |
const Index & | stokes_dim, | ||
const Vector & | f_grid, | ||
const Index & | atmosphere_dim, | ||
const Vector & | lat_grid, | ||
const Vector & | lat_true, | ||
const Vector & | lon_true, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const GriddedField4 & | r_field, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surface_scalar_reflectivityFromGriddedField4.
Extracts scalar surface reflectivities from a field of such data.
This method allows to specify a field of surface reflectivity for automatic interpolation to points of interest. The position and direction for which the reflectivity shall be extracted are given by rtp_pos and rtp_los. The reflectivity field is expected to be stored as: <br> GriddedField4: <br> Vector "Frequency" [N_f] <br> Vector "Incidence angle" [N_ia] <br> Vector "Latitude" [N_lat] <br> Vector "Longitude" [N_lon] <br> Tensor4 data[N_f][N_ia][N_lat][N_lon]
Grids for incidence angle, latitude and longitude must have a length of >= 2 (ie. no automatic expansion). If the frequency grid has length 1, this is taken as the reflectivity is constant, following the definition of surface_scalar_reflectivity.
The interpolation is done in steps: <br> 1: Linear interpolation for lat and lon (std. extrapolation). <br> 2: Interpolation in incidence angle (std. extrapolation). <br> If the grid has a length of >= 4, cubic interpolation is <br> applied. Otherwise linear interpolation. <br> 3. Linear interpolation if frequency (if input data have more <br> than one frequency).
[out] | surface_scalar_reflectivity | WS Output |
[in] | stokes_dim | WS Input |
[in] | f_grid | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | lat_grid | WS Input |
[in] | lat_true | WS Input |
[in] | lon_true | WS Input |
[in] | rtp_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | r_field | Generic Input |
Definition at line 933 of file m_surface.cc.
References GriddedField4::checksize_strict(), chk_griddedfield_gridname(), chk_if_in_range(), chk_interpolation_grids(), chk_latlon_true(), chk_rte_los(), chk_rte_pos(), GriddedField4::data, GriddedField::get_numeric_grid(), gridpos(), gridpos_poly(), interp(), interpweights(), joker, lon_shiftgrid(), ConstTensor4View::nbooks(), ConstTensor4View::ncols(), ConstVectorView::nelem(), ConstTensor4View::npages(), ConstTensor4View::nrows(), pos2true_latlon(), and Vector::resize().
Referenced by surface_scalar_reflectivityFromGriddedField4_g().
void surfaceBlackbody | ( | Workspace & | ws, |
Matrix & | surface_los, | ||
Tensor4 & | surface_rmatrix, | ||
Matrix & | surface_emission, | ||
const Vector & | f_grid, | ||
const Index & | stokes_dim, | ||
const Numeric & | surface_skin_t, | ||
const Agenda & | blackbody_radiation_agenda, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surfaceBlackbody.
Creates variables to mimic a blackbody surface.
This method sets up surface_los, surface_rmatrix and surface_emission* for surface_rtprop_agenda. Here, surface_los and surface_rmatrix are set to be empty, and surface_emission to hold blackbody radiation for a temperature of surface_skin_t.
[in,out] | ws | Workspace |
[out] | surface_los | WS Output |
[out] | surface_rmatrix | WS Output |
[out] | surface_emission | WS Output |
[in] | f_grid | WS Input |
[in] | stokes_dim | WS Input |
[in] | surface_skin_t | WS Input |
[in] | blackbody_radiation_agenda | WS Input |
Definition at line 324 of file m_surface.cc.
References blackbody_radiation_agendaExecute(), chk_if_in_range(), chk_not_negative(), CREATE_OUT2, ConstVectorView::nelem(), Tensor4::resize(), and Matrix::resize().
Referenced by surfaceBlackbody_g().
void surfaceFlatReflectivity | ( | Workspace & | ws, |
Matrix & | surface_los, | ||
Tensor4 & | surface_rmatrix, | ||
Matrix & | surface_emission, | ||
const Vector & | f_grid, | ||
const Index & | stokes_dim, | ||
const Index & | atmosphere_dim, | ||
const Vector & | specular_los, | ||
const Numeric & | surface_skin_t, | ||
const Tensor3 & | surface_reflectivity, | ||
const Agenda & | blackbody_radiation_agenda, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surfaceFlatReflectivity.
Creates variables to mimic specular reflection by a (flat) surface where surface_reflectivity is specified.
Works basically as surfaceFlatScalarReflectivity but is more general as also vector radiative transfer is handled. See the ARTS theory document (ATD) for details around how surface_emission* is determined. In the nomenclature of ATD, surface_reflectivity* gives R.
[in,out] | ws | Workspace |
[out] | surface_los | WS Output |
[out] | surface_rmatrix | WS Output |
[out] | surface_emission | WS Output |
[in] | f_grid | WS Input |
[in] | stokes_dim | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | specular_los | WS Input |
[in] | surface_skin_t | WS Input |
[in] | surface_reflectivity | WS Input |
[in] | blackbody_radiation_agenda | WS Input |
Definition at line 431 of file m_surface.cc.
References blackbody_radiation_agendaExecute(), chk_if_in_range(), chk_not_negative(), CREATE_OUT2, joker, mult(), ConstTensor3View::ncols(), ConstVectorView::nelem(), ConstTensor3View::npages(), ConstTensor3View::nrows(), Tensor4::resize(), and Matrix::resize().
Referenced by surfaceFlatReflectivity_g().
void surfaceFlatRefractiveIndex | ( | Workspace & | ws, |
Matrix & | surface_los, | ||
Tensor4 & | surface_rmatrix, | ||
Matrix & | surface_emission, | ||
const Vector & | f_grid, | ||
const Index & | stokes_dim, | ||
const Index & | atmosphere_dim, | ||
const Vector & | rtp_los, | ||
const Vector & | specular_los, | ||
const Numeric & | surface_skin_t, | ||
const GriddedField3 & | surface_complex_refr_index, | ||
const Agenda & | blackbody_radiation_agenda, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surfaceFlatRefractiveIndex.
Creates variables to mimic specular reflection by a (flat) surface where the complex refractive index is specified.
The dielectric properties of the surface are described by surface_complex_refr_index*. The Fresnel equations are used to calculate amplitude reflection coefficients. The method can thus result in that the reflection properties differ between frequencies and polarisations.
Local thermodynamic equilibrium is assumed, which corresponds to that the reflection and emission coefficients add up to 1.
[in,out] | ws | Workspace |
[out] | surface_los | WS Output |
[out] | surface_rmatrix | WS Output |
[out] | surface_emission | WS Output |
[in] | f_grid | WS Input |
[in] | stokes_dim | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | rtp_los | WS Input |
[in] | specular_los | WS Input |
[in] | surface_skin_t | WS Input |
[in] | surface_complex_refr_index | WS Input |
[in] | blackbody_radiation_agenda | WS Input |
Definition at line 364 of file m_surface.cc.
References calc_incang(), chk_if_in_range(), chk_not_negative(), complex_n_interp(), CREATE_OUT2, CREATE_OUT3, fresnel(), joker, ConstVectorView::nelem(), Tensor4::resize(), Matrix::resize(), and surface_specular_R_and_b().
Referenced by surfaceFlatRefractiveIndex_g().
void surfaceFlatScalarReflectivity | ( | Workspace & | ws, |
Matrix & | surface_los, | ||
Tensor4 & | surface_rmatrix, | ||
Matrix & | surface_emission, | ||
const Vector & | f_grid, | ||
const Index & | stokes_dim, | ||
const Index & | atmosphere_dim, | ||
const Vector & | specular_los, | ||
const Numeric & | surface_skin_t, | ||
const Vector & | surface_scalar_reflectivity, | ||
const Agenda & | blackbody_radiation_agenda, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surfaceFlatScalarReflectivity.
Creates variables to mimic specular reflection by a (flat) surface where surface_scalar_reflectivity is specified.
The method can only be used for stokes_dim equal to 1. Local thermodynamic equilibrium is assumed, which corresponds to that reflectivity and emissivity add up to 1.
[in,out] | ws | Workspace |
[out] | surface_los | WS Output |
[out] | surface_rmatrix | WS Output |
[out] | surface_emission | WS Output |
[in] | f_grid | WS Input |
[in] | stokes_dim | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | specular_los | WS Input |
[in] | surface_skin_t | WS Input |
[in] | surface_scalar_reflectivity | WS Input |
[in] | blackbody_radiation_agenda | WS Input |
Definition at line 523 of file m_surface.cc.
References blackbody_radiation_agendaExecute(), chk_if_in_range(), chk_not_negative(), CREATE_OUT2, CREATE_OUT3, joker, max, min, ConstVectorView::nelem(), Tensor4::resize(), and Matrix::resize().
Referenced by surfaceFlatScalarReflectivity_g().
void surfaceLambertianSimple | ( | Workspace & | ws, |
Matrix & | surface_los, | ||
Tensor4 & | surface_rmatrix, | ||
Matrix & | surface_emission, | ||
const Vector & | f_grid, | ||
const Index & | stokes_dim, | ||
const Index & | atmosphere_dim, | ||
const Vector & | rtp_los, | ||
const Numeric & | surface_skin_t, | ||
const Vector & | surface_scalar_reflectivity, | ||
const Index & | lambertian_nza, | ||
const Agenda & | blackbody_radiation_agenda, | ||
const Numeric & | za_pos, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surfaceLambertianSimple.
Creates variables to mimic a Lambertian surface.
The method can only be used for 1D calculations.
A Lambertian surface can be characterised solely by its reflectivity, here taken from surface_scalar_reflectivity.
The down-welling radiation field is estimated by making calculations for lambertian_nza directions. The range of zenith angles ([0,90]) is divided in an equidistant manner. The values for surface_rmatrix are assuming a constant radiance over each zenith angle range. See AUG.
Default is to select the zenith angles for sensor_los to be placed centrally in the grid ranges. For example, if lambertian_nza is set to 9, down-welling radiation will be calculated for zenith angles = 5, 15, ..., 85. The position of these angles can be shifted by za_pos*. This variable specifies the fractional distance inside the ranges. For example, a za_pos of 0.7 (np still 9) gives the angles 7, 17, ..., 87.
Only upper-left diagonal element of the surface_rmatrix-es is non-zero. That is, the upwelling radiation is always unpolarised.
Local thermodynamic equilibrium is assumed, which corresponds to that the reflection and emission coefficients "add up to 1".
[in,out] | ws | Workspace |
[out] | surface_los | WS Output |
[out] | surface_rmatrix | WS Output |
[out] | surface_emission | WS Output |
[in] | f_grid | WS Input |
[in] | stokes_dim | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | rtp_los | WS Input |
[in] | surface_skin_t | WS Input |
[in] | surface_scalar_reflectivity | WS Input |
[in] | lambertian_nza | WS Input |
[in] | blackbody_radiation_agenda | WS Input |
[in] | za_pos | Generic Input (Default: "0.5") |
Definition at line 594 of file m_surface.cc.
References blackbody_radiation_agendaExecute(), chk_if_in_range(), chk_not_negative(), DEG2RAD, max, min, ConstVectorView::nelem(), Tensor4::resize(), Matrix::resize(), and w().
Referenced by surfaceLambertianSimple_g().
|
extern |
Referenced by surfaceLambertianSimple().