ARTS
2.4.0(git:4fb77825)
|
Workspace functions associated wih the surface and its properties. More...
#include <cmath>
#include "array.h"
#include "arts.h"
#include "auto_md.h"
#include "check_input.h"
#include "complex.h"
#include "fastem.h"
#include "geodetic.h"
#include "interpolation.h"
#include "math_funcs.h"
#include "messages.h"
#include "physics_funcs.h"
#include "ppath.h"
#include "rte.h"
#include "special_interp.h"
#include "surface.h"
#include "tessem.h"
Go to the source code of this file.
Functions | |
void | FastemStandAlone (Matrix &emissivity, Matrix &reflectivity, const Vector &f_grid, const Numeric &surface_skin_t, const Numeric &za, const Numeric &salinity, const Numeric &wind_speed, const Numeric &rel_aa, const Vector &transmittance, const Index &fastem_version, const Verbosity &) |
WORKSPACE METHOD: FastemStandAlone. More... | |
void | InterpGriddedField2ToPosition (Numeric &outvalue, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lat_true, const Vector &lon_true, const Vector &rtp_pos, const GriddedField2 &gfield2, const Verbosity &) |
WORKSPACE METHOD: InterpGriddedField2ToPosition. More... | |
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 | iySurfaceCallAgendaX (Workspace &ws, Matrix &iy, ArrayOfTensor3 &diy_dx, const String &iy_unit, const Tensor3 &iy_transmission, const Index &iy_id, const Index &cloudbox_on, const Index &jacobian_do, const Vector &f_grid, const Agenda &iy_main_agenda, const Vector &rtp_pos, const Vector &rtp_los, const Vector &rte_pos2, const ArrayOfAgenda &iy_surface_agenda_array, const Index &surface_type, const Numeric &surface_type_aux, const Verbosity &) |
WORKSPACE METHOD: iySurfaceCallAgendaX. More... | |
void | iySurfaceFastem (Workspace &ws, Matrix &iy, ArrayOfTensor3 &diy_dx, const Tensor3 &iy_transmission, const Index &iy_id, const Index &jacobian_do, const Index &atmosphere_dim, const EnergyLevelMap &nlte_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 String &iy_unit, const Agenda &iy_main_agenda, const Numeric &surface_skin_t, const Numeric &salinity, const Numeric &wind_speed, const Numeric &wind_direction, const Index &fastem_version, const Verbosity &verbosity) |
WORKSPACE METHOD: iySurfaceFastem. More... | |
void | iySurfaceRtpropAgenda (Workspace &ws, Matrix &iy, ArrayOfTensor3 &diy_dx, const Tensor3 &iy_transmission, const Index &iy_id, const Index &jacobian_do, const Index &atmosphere_dim, const EnergyLevelMap &nlte_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 String &iy_unit, const Agenda &iy_main_agenda, const Agenda &surface_rtprop_agenda, const Verbosity &) |
WORKSPACE METHOD: iySurfaceRtpropAgenda. More... | |
void | iySurfaceRtpropCalc (Workspace &ws, Matrix &iy, ArrayOfTensor3 &diy_dx, const Matrix &surface_los, const Tensor4 &surface_rmatrix, const Matrix &surface_emission, const ArrayOfString &dsurface_names, const ArrayOfTensor4 &dsurface_rmatrix_dx, const ArrayOfMatrix &dsurface_emission_dx, const Tensor3 &iy_transmission, const Index &iy_id, const Index &jacobian_do, const ArrayOfRetrievalQuantity &jacobian_quantities, const Index &atmosphere_dim, const EnergyLevelMap &nlte_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 String &iy_unit, const Agenda &iy_main_agenda, const Verbosity &) |
WORKSPACE METHOD: iySurfaceRtpropCalc. More... | |
void | specular_losCalcNoTopography (Vector &specular_los, Vector &surface_normal, const Vector &rtp_pos, const Vector &rtp_los, const Index &atmosphere_dim, const Verbosity &) |
WORKSPACE METHOD: specular_losCalcNoTopography. 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 Index &ignore_surface_slope, const Verbosity &verbosity) |
WORKSPACE METHOD: specular_losCalc. More... | |
void | surfaceBlackbody (Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Index &atmosphere_dim, const Vector &f_grid, const Index &stokes_dim, const Vector &rtp_pos, const Vector &rtp_los, const Numeric &surface_skin_t, const Verbosity &verbosity) |
WORKSPACE METHOD: surfaceBlackbody. More... | |
void | surfaceFastem (Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Index &atmosphere_dim, const Index &stokes_dim, const Vector &f_grid, const Vector &rtp_pos, const Vector &rtp_los, const Numeric &surface_skin_t, const Numeric &salinity, const Numeric &wind_speed, const Numeric &wind_direction, const Vector &transmittance, const Index &fastem_version, const Verbosity &verbosity) |
WORKSPACE METHOD: surfaceFastem. More... | |
void | surfaceTelsem (Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Index &atmosphere_dim, const Index &stokes_dim, const Vector &f_grid, const Vector &lat_grid, const Vector &lat_true, const Vector &lon_true, const Vector &rtp_pos, const Vector &rtp_los, const Numeric &surface_skin_t, const TelsemAtlas &atlas, const Numeric &r_min, const Numeric &r_max, const Numeric &d_max, const Verbosity &verbosity) |
WORKSPACE METHOD: surfaceTelsem. More... | |
void | surfaceTessem (Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Index &atmosphere_dim, const Index &stokes_dim, const Vector &f_grid, const Vector &rtp_pos, const Vector &rtp_los, const Numeric &surface_skin_t, const TessemNN &net_h, const TessemNN &net_v, const Numeric &salinity, const Numeric &wind_speed, const Verbosity &verbosity) |
WORKSPACE METHOD: surfaceTessem. More... | |
void | surfaceFlatRefractiveIndex (Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Vector &f_grid, const Index &stokes_dim, const Index &atmosphere_dim, const Vector &rtp_pos, const Vector &rtp_los, const Vector &specular_los, const Numeric &surface_skin_t, const GriddedField3 &surface_complex_refr_index, const Verbosity &verbosity) |
WORKSPACE METHOD: surfaceFlatRefractiveIndex. More... | |
void | surfaceFlatReflectivity (Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Vector &f_grid, const Index &stokes_dim, const Index &atmosphere_dim, const Vector &rtp_pos, const Vector &rtp_los, const Vector &specular_los, const Numeric &surface_skin_t, const Tensor3 &surface_reflectivity, const Verbosity &verbosity) |
WORKSPACE METHOD: surfaceFlatReflectivity. More... | |
void | surfaceFlatRvRh (Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Vector &f_grid, const Index &stokes_dim, const Index &atmosphere_dim, const Vector &rtp_pos, const Vector &rtp_los, const Vector &specular_los, const Numeric &surface_skin_t, const Matrix &surface_rv_rh, const Verbosity &) |
WORKSPACE METHOD: surfaceFlatRvRh. More... | |
void | surfaceFlatScalarReflectivity (Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Vector &f_grid, const Index &stokes_dim, const Index &atmosphere_dim, const Vector &rtp_pos, const Vector &rtp_los, const Vector &specular_los, const Numeric &surface_skin_t, const Vector &surface_scalar_reflectivity, const Verbosity &) |
WORKSPACE METHOD: surfaceFlatScalarReflectivity. More... | |
void | surfaceLambertianSimple (Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Vector &f_grid, const Index &stokes_dim, const Index &atmosphere_dim, const Vector &rtp_pos, const Vector &rtp_los, const Vector &surface_normal, const Numeric &surface_skin_t, const Vector &surface_scalar_reflectivity, const Index &lambertian_nza, const Numeric &za_pos, const Verbosity &) |
WORKSPACE METHOD: surfaceLambertianSimple. More... | |
void | surfaceSemiSpecularBy3beams (Workspace &ws, Numeric &surface_skin_t, Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Index &atmosphere_dim, const Vector &f_grid, const Vector &rtp_pos, const Vector &rtp_los, const Agenda &surface_rtprop_sub_agenda, const Numeric &specular_factor, const Numeric &dza, const Verbosity &) |
WORKSPACE METHOD: surfaceSemiSpecularBy3beams. More... | |
void | surfaceSplitSpecularTo3beams (Matrix &surface_los, Tensor4 &surface_rmatrix, const Index &atmosphere_dim, const Vector &rtp_pos, const Vector &rtp_los, const Numeric &specular_factor, const Numeric &dza, const Verbosity &) |
WORKSPACE METHOD: surfaceSplitSpecularTo3beams. 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... | |
void | surface_scalar_reflectivityFromSurface_rmatrix (Vector &surface_scalar_reflectivity, const Tensor4 &surface_rmatrix, const Verbosity &) |
WORKSPACE METHOD: surface_scalar_reflectivityFromSurface_rmatrix. More... | |
void | surface_typeInterpTypeMask (Index &surface_type, Numeric &surface_type_aux, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lat_true, const Vector &lon_true, const Vector &rtp_pos, const GriddedField2 &surface_type_mask, const Verbosity &) |
WORKSPACE METHOD: surface_typeInterpTypeMask. More... | |
void | surface_rtpropCallAgendaX (Workspace &ws, Numeric &surface_skin_t, Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Vector &f_grid, const Vector &rtp_pos, const Vector &rtp_los, const ArrayOfAgenda &surface_rtprop_agenda_array, const Index &surface_type, const Numeric &surface_type_aux, const Verbosity &) |
WORKSPACE METHOD: surface_rtpropCallAgendaX. More... | |
void | SurfaceDummy (ArrayOfTensor4 &dsurface_rmatrix_dx, ArrayOfMatrix &dsurface_emission_dx, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &surface_props_data, const ArrayOfString &surface_props_names, const ArrayOfString &dsurface_names, const Index &jacobian_do, const Verbosity &) |
WORKSPACE METHOD: SurfaceDummy. More... | |
void | SurfaceTessem (Matrix &surface_los, Tensor4 &surface_rmatrix, ArrayOfTensor4 &dsurface_rmatrix_dx, Matrix &surface_emission, ArrayOfMatrix &dsurface_emission_dx, const Index &stokes_dim, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lon_grid, const Vector &f_grid, const Vector &rtp_pos, const Vector &rtp_los, const TessemNN &net_h, const TessemNN &net_v, const Tensor3 &surface_props_data, const ArrayOfString &surface_props_names, const ArrayOfString &dsurface_names, const Index &jacobian_do, const Verbosity &verbosity) |
WORKSPACE METHOD: SurfaceTessem. More... | |
void | SurfaceFastem (Matrix &surface_los, Tensor4 &surface_rmatrix, ArrayOfTensor4 &dsurface_rmatrix_dx, Matrix &surface_emission, ArrayOfMatrix &dsurface_emission_dx, const Index &stokes_dim, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lon_grid, const Vector &f_grid, const Vector &rtp_pos, const Vector &rtp_los, const Tensor3 &surface_props_data, const ArrayOfString &surface_props_names, const ArrayOfString &dsurface_names, const Index &jacobian_do, const Vector &transmittance, const Index &fastem_version, const Verbosity &verbosity) |
WORKSPACE METHOD: SurfaceFastem. More... | |
void | transmittanceFromIy_aux (Vector &transmittance, const ArrayOfString &iy_aux_vars, const ArrayOfMatrix &iy_aux, const Verbosity &) |
WORKSPACE METHOD: transmittanceFromIy_aux. More... | |
Variables | |
Numeric | EARTH_RADIUS |
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 FastemStandAlone | ( | Matrix & | emissivity, |
Matrix & | reflectivity, | ||
const Vector & | f_grid, | ||
const Numeric & | surface_skin_t, | ||
const Numeric & | za, | ||
const Numeric & | salinity, | ||
const Numeric & | wind_speed, | ||
const Numeric & | rel_aa, | ||
const Vector & | transmittance, | ||
const Index & | fastem_version, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: FastemStandAlone.
Stand-alone usage of FASTEM.
FASTEM is a parameterisation of the emissivity of water surfaces including the impact of waves, salinity and non-specular effects. This is more or less direct interface to FASTEM, but slightly adopted to fit with ARTS. The unit of frequency and salinity differ, and this version is "vectorised" in frequency.
The output is four emissivity and reflectivity values for each frequency. These values are defined in Eq. 13 of "An Improved Fast Microwave Water Emissivity Model" by Liu, Weng and English, I3TRGS, 2011. Note that emissivity and reflectivity do not add up to 1, which is the way FASTEM compensates for non-specular effects.
There is an error if any frequency is above 250 GHz, or if the skin temperature is below 260 K. If the skin temperature is below 270 K, it is adjusted to 270 K.
FASTEM returns unphysical values for propagation close to the horizon, here emissivity and reflectivity can be outside [0,1]. If either emissivity or reflectivity is below/above 0/1, it is set to 0/1, and the other value is set to 1/0. That is, e+r=1 is enforced. These problems start about 15 degrees from the horizon.
[out] | emissivity | Generic output |
[out] | reflectivity | Generic output |
[in] | f_grid | WS Input |
[in] | surface_skin_t | WS Input |
[in] | za | Generic Input |
[in] | salinity | Generic Input (Default: "0.035") |
[in] | wind_speed | Generic Input |
[in] | rel_aa | Generic Input |
[in] | transmittance | Generic Input |
[in] | fastem_version | Generic Input (Default: "6") |
Definition at line 65 of file m_surface.cc.
References chk_if_in_range(), chk_if_in_range_exclude(), chk_if_in_range_exclude_high(), chk_vector_length(), ARTS::Var::f_grid(), max, Matrix::resize(), and ARTS::Var::surface_skin_t().
Referenced by FastemStandAlone_g(), and surfaceFastem().
void InterpGriddedField2ToPosition | ( | Numeric & | out, |
const Index & | atmosphere_dim, | ||
const Vector & | lat_grid, | ||
const Vector & | lat_true, | ||
const Vector & | lon_true, | ||
const Vector & | rtp_pos, | ||
const GriddedField2 & | gfield2, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: InterpGriddedField2ToPosition.
Latitude and longitude interpolation of a GriddedField2.
The default way to specify the position is by rtp_pos.
The interpolation is done for the latitude and longitude in rtp_pos*. The altitude in rtp_pos is completely ignored. Linear interpolation is applied.
The input field (gfield2) is expected to have latitude and longitude as first and second dimension.
[out] | out | Generic 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] | gfield2 | Generic Input |
Definition at line 140 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), GriddedField2::checksize_strict(), chk_griddedfield_gridname(), chk_if_in_range(), chk_latlon_true(), chk_rte_pos(), GriddedField2::data, GriddedField::get_numeric_grid(), gridpos(), interp(), interpweights(), ARTS::Var::lat(), ARTS::Var::lat_grid(), ARTS::Var::lat_true(), ARTS::Var::lon(), lon_shiftgrid(), ARTS::Var::lon_true(), ConstMatrixView::ncols(), ConstMatrixView::nrows(), pos2true_latlon(), and ARTS::Var::rtp_pos().
Referenced by InterpGriddedField2ToPosition_g().
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 197 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), chk_atm_grids(), chk_atm_surface(), chk_interpolation_grids(), chk_rte_pos(), CREATE_OUT3, gridpos(), interp_atmsurface_by_gp(), ARTS::Var::lat_grid(), ARTS::Var::lon_grid(), max, min, ARTS::Var::rtp_pos(), and ARTS::Var::z_surface().
Referenced by InterpSurfaceFieldToPosition_g(), and ARTS::Agenda::surface_rtprop_agenda_blackbody_from_surface().
void iySurfaceCallAgendaX | ( | Workspace & | ws, |
Matrix & | iy, | ||
ArrayOfTensor3 & | diy_dx, | ||
const String & | iy_unit, | ||
const Tensor3 & | iy_transmission, | ||
const Index & | iy_id, | ||
const Index & | cloudbox_on, | ||
const Index & | jacobian_do, | ||
const Vector & | f_grid, | ||
const Agenda & | iy_main_agenda, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Vector & | rte_pos2, | ||
const ArrayOfAgenda & | iy_surface_agenda_array, | ||
const Index & | surface_type, | ||
const Numeric & | surface_type_aux, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iySurfaceCallAgendaX.
Switch between the elements of iy_surface_agenda_array.
This method simply calls the agenda matching surface_type and returns the results. That is, the agenda in iy_surface_agenda_array with index surface_type (0-based) is called.
[in,out] | ws | Workspace |
[out] | iy | WS Output |
[in,out] | diy_dx | WS Input/Output |
[in] | iy_unit | WS Input |
[in] | iy_transmission | WS Input |
[in] | iy_id | WS Input |
[in] | cloudbox_on | WS Input |
[in] | jacobian_do | WS Input |
[in] | f_grid | WS Input |
[in] | iy_main_agenda | WS Input |
[in] | rtp_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | rte_pos2 | WS Input |
[in] | iy_surface_agenda_array | WS Input |
[in] | surface_type | WS Input |
[in] | surface_type_aux | WS Input |
Definition at line 244 of file m_surface.cc.
References ARTS::Var::cloudbox_on(), ARTS::Var::diy_dx(), ARTS::Var::f_grid(), ARTS::Var::iy(), ARTS::Var::iy_id(), ARTS::Var::iy_main_agenda(), ARTS::Var::iy_surface_agenda_array(), iy_surface_agenda_arrayExecute(), ARTS::Var::iy_transmission(), ARTS::Var::iy_unit(), ARTS::Var::jacobian_do(), ARTS::Var::rte_pos2(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::surface_type(), and ARTS::Var::surface_type_aux().
Referenced by iySurfaceCallAgendaX_g().
void iySurfaceFastem | ( | Workspace & | ws, |
Matrix & | iy, | ||
ArrayOfTensor3 & | diy_dx, | ||
const Tensor3 & | iy_transmission, | ||
const Index & | iy_id, | ||
const Index & | jacobian_do, | ||
const Index & | atmosphere_dim, | ||
const EnergyLevelMap & | nlte_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 String & | iy_unit, | ||
const Agenda & | iy_main_agenda, | ||
const Numeric & | surface_skin_t, | ||
const Numeric & | salinity, | ||
const Numeric & | wind_speed, | ||
const Numeric & | wind_direction, | ||
const Index & | fastem_version, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iySurfaceFastem.
Usage of FASTEM for emissivity and reflectivity of water surfaces.
This method allows usage of the FASTEM model inside iy_surface_agenda*. The aim is to use FASTEM in the exact same way as done in RTTOV. For example, the transmittance for down- welling radiation is considered. RTTOV os just 1D. Here 2D and 3D are handled as the 1D case, the down-welling radiation is just calculated for the directuon matching specular reflection.
The wind direction is given as the azimuth angle, counted clockwise from north (i.e. an easterly wind is at 90 deg). This matches the general definition of azimuth inside ARTS. For 1D and 2D, the wind direction must be adjusted to match the fact that the line-of-sight is locked to be at 0 deg (180 for 2D in the case of a negative zenith angle). For 3D, the true wind direction shall be used.
FASTEM is called by FastemStandAlone. See that WSM for further comments on variables and limitations.
[in,out] | ws | Workspace |
[out] | iy | WS Output |
[in,out] | diy_dx | WS Input/Output |
[in] | iy_transmission | WS Input |
[in] | iy_id | WS Input |
[in] | jacobian_do | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | nlte_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_unit | WS Input |
[in] | iy_main_agenda | WS Input |
[in] | surface_skin_t | WS Input |
[in] | salinity | Generic Input (Default: "0.035") |
[in] | wind_speed | Generic Input |
[in] | wind_direction | Generic Input (Default: "0") |
[in] | fastem_version | Generic Input (Default: "6") |
Definition at line 290 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), ARTS::Var::cloudbox_on(), ARTS::Var::diy_dx(), ARTS::Var::f_grid(), ARTS::Var::iy(), ARTS::Var::iy_aux(), ARTS::Var::iy_aux_vars(), ARTS::Var::iy_id(), ARTS::Var::iy_main_agenda(), iy_main_agendaExecute(), ARTS::Var::iy_transmission(), ARTS::Var::iy_unit(), ARTS::Var::jacobian_do(), joker, mult(), ARTS::Var::nlte_field(), ARTS::Var::ppath(), q, ARTS::Var::rte_pos2(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::specular_los(), specular_losCalcNoTopography(), ARTS::Var::stokes_dim(), surface_calc(), ARTS::Var::surface_emission(), ARTS::Var::surface_los(), ARTS::Var::surface_normal(), ARTS::Var::surface_rmatrix(), ARTS::Var::surface_skin_t(), surfaceFastem(), ARTS::Var::verbosity(), and ARTS::Var::x().
Referenced by iySurfaceFastem_g().
void iySurfaceRtpropAgenda | ( | Workspace & | ws, |
Matrix & | iy, | ||
ArrayOfTensor3 & | diy_dx, | ||
const Tensor3 & | iy_transmission, | ||
const Index & | iy_id, | ||
const Index & | jacobian_do, | ||
const Index & | atmosphere_dim, | ||
const EnergyLevelMap & | nlte_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 String & | iy_unit, | ||
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 |
[in,out] | diy_dx | WS Input/Output |
[in] | iy_transmission | WS Input |
[in] | iy_id | WS Input |
[in] | jacobian_do | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | nlte_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_unit | WS Input |
[in] | iy_main_agenda | WS Input |
[in] | surface_rtprop_agenda | WS Input |
Definition at line 407 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), chk_if_in_range(), chk_rte_los(), chk_rte_pos(), ARTS::Var::cloudbox_on(), ARTS::Var::diy_dx(), ARTS::Var::f_grid(), ARTS::Var::iy(), ARTS::Var::iy_aux(), ARTS::Var::iy_id(), ARTS::Var::iy_main_agenda(), iy_main_agendaExecute(), ARTS::Var::iy_transmission(), iy_transmission_mult(), ARTS::Var::iy_unit(), ARTS::Var::jacobian_do(), joker, ARTS::Var::Agenda::name(), ARTS::Var::nlte_field(), ARTS::Var::ppath(), ARTS::Var::rte_pos2(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::stokes_dim(), surface_calc(), ARTS::Var::surface_emission(), ARTS::Var::surface_los(), ARTS::Var::surface_rmatrix(), ARTS::Var::surface_rtprop_agenda(), surface_rtprop_agendaExecute(), and ARTS::Var::surface_skin_t().
Referenced by ARTS::Agenda::iy_surface_agenda_use_surface_property(), and iySurfaceRtpropAgenda_g().
void iySurfaceRtpropCalc | ( | Workspace & | ws, |
Matrix & | iy, | ||
ArrayOfTensor3 & | diy_dx, | ||
const Matrix & | surface_los, | ||
const Tensor4 & | surface_rmatrix, | ||
const Matrix & | surface_emission, | ||
const ArrayOfString & | dsurface_names, | ||
const ArrayOfTensor4 & | dsurface_rmatrix_dx, | ||
const ArrayOfMatrix & | dsurface_emission_dx, | ||
const Tensor3 & | iy_transmission, | ||
const Index & | iy_id, | ||
const Index & | jacobian_do, | ||
const ArrayOfRetrievalQuantity & | jacobian_quantities, | ||
const Index & | atmosphere_dim, | ||
const EnergyLevelMap & | nlte_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 String & | iy_unit, | ||
const Agenda & | iy_main_agenda, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: iySurfaceRtpropCalc.
Applies surface_los, surface_rmatrix and surface_emission.
This method is designed to be part of iy_surface_agenda and should be mandatory when using methods describing the surface radiative transfer properties by surface_los, surface_rmatrix and surface_emission. The task of this method is to apply these three WSVs to obtain the upwelling radiation from the surface. This upwelling radiation is the sum of surface emission and reflected downwelling radiation. The later part is calculated by calling iy_main_agenda. See further AUG.
[in,out] | ws | Workspace |
[out] | iy | WS Output |
[in,out] | diy_dx | WS Input/Output |
[in] | surface_los | WS Input |
[in] | surface_rmatrix | WS Input |
[in] | surface_emission | WS Input |
[in] | dsurface_names | WS Input |
[in] | dsurface_rmatrix_dx | WS Input |
[in] | dsurface_emission_dx | WS Input |
[in] | iy_transmission | WS Input |
[in] | iy_id | WS Input |
[in] | jacobian_do | WS Input |
[in] | jacobian_quantities | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | nlte_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_unit | WS Input |
[in] | iy_main_agenda | WS Input |
Definition at line 536 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), chk_if_in_range(), chk_rte_los(), chk_rte_pos(), ARTS::Var::cloudbox_on(), ARTS::Var::diy_dx(), diy_from_pos_to_rgrids(), ARTS::Var::dsurface_emission_dx(), ARTS::Var::dsurface_names(), ARTS::Var::dsurface_rmatrix_dx(), ARTS::Var::f_grid(), ARTS::Var::iy(), ARTS::Var::iy_aux(), ARTS::Var::iy_id(), ARTS::Var::iy_main_agenda(), iy_main_agendaExecute(), ARTS::Var::iy_transmission(), iy_transmission_mult(), ARTS::Var::iy_unit(), ARTS::Var::jacobian_do(), ARTS::Var::jacobian_quantities(), joker, ARTS::Var::Agenda::name(), ARTS::Var::nlte_field(), ARTS::Var::ppath(), ARTS::Var::rte_pos2(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::stokes_dim(), surface_calc(), ARTS::Var::surface_emission(), ARTS::Var::surface_los(), and ARTS::Var::surface_rmatrix().
Referenced by iySurfaceRtpropCalc_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 Index & | ignore_surface_slope, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: specular_losCalc.
Calculates the specular direction of surface reflections.
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 matching the surface normal.
The default is to consider the surface slope when calculating the specular direction. That is, the variation of z_surface (as well as the geoid radius) is considered and the specular direction is calculated including the specified topography. This part can be deactivated by setting ignore_surface_slope to 1. In this case, the zenith angle of the specular direction is simply 180-rtp_los[0]. ignore_surface_slope has only an effect for 2D and 3D, as 1D implies a constant radius of the surface (i.e. no topography).
[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 |
[in] | ignore_surface_slope | Generic Input (Default: "0") |
Definition at line 732 of file m_surface.cc.
References abs, ARTS::Var::atmosphere_dim(), cart2zaaa(), chk_if_in_range(), chk_interpolation_grids(), chk_rte_los(), chk_rte_pos(), cross3(), fac(), gridpos(), interp(), interpweights(), joker, ARTS::Var::lat_grid(), ARTS::Var::lon_grid(), max, plevel_angletilt(), plevel_slope_2d(), plevel_slope_3d(), refell2d(), ARTS::Var::refellipsoid(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), sign(), ARTS::Var::specular_los(), specular_losCalcNoTopography(), ARTS::Var::surface_normal(), ARTS::Var::verbosity(), ARTS::Var::z_surface(), and zaaa2cart().
Referenced by specular_losCalc_g().
void specular_losCalcNoTopography | ( | Vector & | specular_los, |
Vector & | surface_normal, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Index & | atmosphere_dim, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: specular_losCalcNoTopography.
Calculates the specular direction of surface reflections for horisontal surfaces.
In contrast to specular_losCalc, this method ignores the topography implied by z_surface. That is, any slope of the surface is ignored.
The typical application of this WSM should be water surfaces (lakes and oceans).
[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 |
Definition at line 695 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), chk_if_in_range(), chk_rte_los(), chk_rte_pos(), max, ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), sign(), ARTS::Var::specular_los(), and ARTS::Var::surface_normal().
Referenced by iySurfaceFastem(), specular_losCalc(), specular_losCalcNoTopography_g(), surfaceFastem(), surfaceTelsem(), and surfaceTessem().
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 1837 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), GriddedField5::checksize_strict(), chk_griddedfield_gridname(), chk_if_in_range(), chk_latlon_true(), chk_rte_pos(), GriddedField5::data, GriddedField::get_numeric_grid(), gridpos(), interp(), interpweights(), joker, ARTS::Var::lat(), ARTS::Var::lat_grid(), ARTS::Var::lat_true(), ARTS::Var::lon(), lon_shiftgrid(), ARTS::Var::lon_true(), ConstTensor5View::nbooks(), ConstTensor5View::ncols(), ConstTensor5View::npages(), ConstTensor5View::nrows(), ConstTensor5View::nshelves(), pos2true_latlon(), ARTS::Var::rtp_pos(), and ARTS::Var::surface_complex_refr_index().
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 1931 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), GriddedField6::checksize_strict(), chk_griddedfield_gridname(), chk_if_in_range(), chk_interpolation_grids(), chk_latlon_true(), chk_rte_los(), chk_rte_pos(), GriddedField6::data, ARTS::Var::f_grid(), GriddedField::get_numeric_grid(), gridpos(), gridpos_poly(), interp(), interpweights(), joker, ARTS::Var::lat(), ARTS::Var::lat_grid(), ARTS::Var::lat_true(), ARTS::Var::lon(), lon_shiftgrid(), ARTS::Var::lon_true(), ConstTensor6View::nbooks(), ConstTensor6View::ncols(), ConstTensor6View::npages(), ConstTensor6View::nrows(), ConstTensor6View::nshelves(), ConstTensor6View::nvitrines(), pos2true_latlon(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::stokes_dim(), and ARTS::Var::surface_reflectivity().
Referenced by surface_reflectivityFromGriddedField6_g().
void surface_rtpropCallAgendaX | ( | Workspace & | ws, |
Numeric & | surface_skin_t, | ||
Matrix & | surface_los, | ||
Tensor4 & | surface_rmatrix, | ||
Matrix & | surface_emission, | ||
const Vector & | f_grid, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const ArrayOfAgenda & | surface_rtprop_agenda_array, | ||
const Index & | surface_type, | ||
const Numeric & | surface_type_aux, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surface_rtpropCallAgendaX.
Switch between the elements of surface_rtprop_agenda_array.
This method simply calls the agenda matching surface_type and returns the results. That is, the agenda in surface_rtprop_agenda_array with index surface_type (0-based) is called.
[in,out] | ws | Workspace |
[out] | surface_skin_t | WS Output |
[out] | surface_los | WS Output |
[out] | surface_rmatrix | WS Output |
[out] | surface_emission | WS Output |
[in] | f_grid | WS Input |
[in] | rtp_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | surface_rtprop_agenda_array | WS Input |
[in] | surface_type | WS Input |
[in] | surface_type_aux | WS Input |
Definition at line 2296 of file m_surface.cc.
References ARTS::Var::f_grid(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::surface_emission(), ARTS::Var::surface_los(), ARTS::Var::surface_rmatrix(), ARTS::Var::surface_rtprop_agenda_array(), surface_rtprop_agenda_arrayExecute(), ARTS::Var::surface_skin_t(), ARTS::Var::surface_type(), and ARTS::Var::surface_type_aux().
Referenced by surface_rtpropCallAgendaX_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 2070 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), GriddedField4::checksize_strict(), chk_griddedfield_gridname(), chk_if_in_range(), chk_interpolation_grids(), chk_latlon_true(), chk_rte_los(), chk_rte_pos(), GriddedField4::data, ARTS::Var::f_grid(), GriddedField::get_numeric_grid(), gridpos(), gridpos_poly(), interp(), interpweights(), joker, ARTS::Var::lat(), ARTS::Var::lat_grid(), ARTS::Var::lat_true(), ARTS::Var::lon(), lon_shiftgrid(), ARTS::Var::lon_true(), ConstTensor4View::nbooks(), ConstTensor4View::ncols(), ConstTensor4View::npages(), ConstTensor4View::nrows(), pos2true_latlon(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::stokes_dim(), and ARTS::Var::surface_scalar_reflectivity().
Referenced by surface_scalar_reflectivityFromGriddedField4_g().
void surface_scalar_reflectivityFromSurface_rmatrix | ( | Vector & | surface_scalar_reflectivity, |
const Tensor4 & | surface_rmatrix, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surface_scalar_reflectivityFromSurface_rmatrix.
Sets surface_scalar_reflectivity based on surface_rmatrix.
For each frequency f, surface_scalar_reflectivity is set to the sum of surface_rmatrix(joker,f,0,0).
[out] | surface_scalar_reflectivity | WS Output |
[in] | surface_rmatrix | WS Input |
Definition at line 2183 of file m_surface.cc.
References ARTS::Var::surface_rmatrix(), and ARTS::Var::surface_scalar_reflectivity().
Referenced by surface_scalar_reflectivityFromSurface_rmatrix_g().
void surface_typeInterpTypeMask | ( | Index & | surface_type, |
Numeric & | surface_type_aux, | ||
const Index & | atmosphere_dim, | ||
const Vector & | lat_grid, | ||
const Vector & | lat_true, | ||
const Vector & | lon_true, | ||
const Vector & | rtp_pos, | ||
const GriddedField2 & | surface_type_mask, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surface_typeInterpTypeMask.
Closest neighbour interpolation of surface type mask.
The method determines the surface type at the position of concern (rtp_pos) from the provided type mask (surface_type_mask). The closest point in the mask is selected. The surface type is set to the integer part of the value at the found point, while surface_type_aux* is set to the reminder. For example, if the mask value at closest point is 2.23, surface_type is set to 2 surface_type_aux* becomes 0.23.
The altitude in rtp_pos is ignored.
[out] | surface_type | WS Output |
[out] | surface_type_aux | 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] | surface_type_mask | WS Input |
Definition at line 2225 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), chk_griddedfield_gridname(), chk_if_in_range(), chk_latlon_true(), chk_rte_pos(), GridPos::fd, gridpos(), GridPos::idx, ARTS::Var::lat(), ARTS::Var::lat_grid(), ARTS::Var::lat_true(), ARTS::Var::lon(), lon_shiftgrid(), ARTS::Var::lon_true(), pos2true_latlon(), ARTS::Var::rtp_pos(), ARTS::Var::surface_type(), ARTS::Var::surface_type_aux(), and ARTS::Var::surface_type_mask().
Referenced by surface_typeInterpTypeMask_g().
void surfaceBlackbody | ( | Matrix & | surface_los, |
Tensor4 & | surface_rmatrix, | ||
Matrix & | surface_emission, | ||
const Index & | atmosphere_dim, | ||
const Vector & | f_grid, | ||
const Index & | stokes_dim, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Numeric & | surface_skin_t, | ||
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.
[out] | surface_los | WS Output |
[out] | surface_rmatrix | WS Output |
[out] | surface_emission | WS Output |
[in] | atmosphere_dim | WS Input |
[in] | f_grid | WS Input |
[in] | stokes_dim | WS Input |
[in] | rtp_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | surface_skin_t | WS Input |
Definition at line 841 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), chk_if_in_range(), chk_not_negative(), chk_rte_los(), chk_rte_pos(), CREATE_OUT2, ARTS::Var::f_grid(), planck(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::stokes_dim(), ARTS::Var::surface_emission(), ARTS::Var::surface_los(), ARTS::Var::surface_rmatrix(), and ARTS::Var::surface_skin_t().
Referenced by ARTS::Agenda::surface_rtprop_agenda_blackbody_from_atmosphere(), ARTS::Agenda::surface_rtprop_agenda_blackbody_from_surface(), and surfaceBlackbody_g().
void SurfaceDummy | ( | ArrayOfTensor4 & | dsurface_rmatrix_dx, |
ArrayOfMatrix & | dsurface_emission_dx, | ||
const Index & | atmosphere_dim, | ||
const Vector & | lat_grid, | ||
const Vector & | lon_grid, | ||
const Tensor3 & | surface_props_data, | ||
const ArrayOfString & | surface_props_names, | ||
const ArrayOfString & | dsurface_names, | ||
const Index & | jacobian_do, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: SurfaceDummy.
Dummy method for iy_surface_agenda.
If you don't make use of surface_props_data and associated variables, include this method iy_surface_agenda. The method just checks that the variables of concern are set to be empty, and you don't need to include calls of Ignore and Touch in the agenda.
[in,out] | dsurface_rmatrix_dx | WS Input/Output |
[in,out] | dsurface_emission_dx | WS Input/Output |
[in] | atmosphere_dim | WS Input |
[in] | lat_grid | WS Input |
[in] | lon_grid | WS Input |
[in] | surface_props_data | WS Input |
[in] | surface_props_names | WS Input |
[in] | dsurface_names | WS Input |
[in] | jacobian_do | WS Input |
Definition at line 2332 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), dsurface_check(), ARTS::Var::dsurface_emission_dx(), ARTS::Var::dsurface_names(), ARTS::Var::dsurface_rmatrix_dx(), ARTS::Var::jacobian_do(), ARTS::Var::lat_grid(), ARTS::Var::lon_grid(), surface_props_check(), ARTS::Var::surface_props_data(), and ARTS::Var::surface_props_names().
Referenced by ARTS::Agenda::iy_surface_agenda_use_surface_property(), and SurfaceDummy_g().
void SurfaceFastem | ( | Matrix & | surface_los, |
Tensor4 & | surface_rmatrix, | ||
ArrayOfTensor4 & | dsurface_rmatrix_dx, | ||
Matrix & | surface_emission, | ||
ArrayOfMatrix & | dsurface_emission_dx, | ||
const Index & | stokes_dim, | ||
const Index & | atmosphere_dim, | ||
const Vector & | lat_grid, | ||
const Vector & | lon_grid, | ||
const Vector & | f_grid, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Tensor3 & | surface_props_data, | ||
const ArrayOfString & | surface_props_names, | ||
const ArrayOfString & | dsurface_names, | ||
const Index & | jacobian_do, | ||
const Vector & | transmittance, | ||
const Index & | fastem_version, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: SurfaceFastem.
FASTEM sea surface microwave emissivity parametrization.
The variable surface_props_data must contain these data: <br> "Water skin temperature" <br> "Wind speed" <br> "Wind direction" <br> "Salinity"
For some details and comments see FastemStandAlone and surfaceFastem.
[out] | surface_los | WS Output |
[out] | surface_rmatrix | WS Output |
[in,out] | dsurface_rmatrix_dx | WS Input/Output |
[out] | surface_emission | WS Output |
[in,out] | dsurface_emission_dx | WS Input/Output |
[in] | stokes_dim | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | lat_grid | WS Input |
[in] | lon_grid | WS Input |
[in] | f_grid | WS Input |
[in] | rtp_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | surface_props_data | WS Input |
[in] | surface_props_names | WS Input |
[in] | dsurface_names | WS Input |
[in] | jacobian_do | WS Input |
[in] | transmittance | Generic Input |
[in] | fastem_version | Generic Input (Default: "6") |
Definition at line 2533 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), dsurface_check(), ARTS::Var::dsurface_emission_dx(), ARTS::Var::dsurface_names(), ARTS::Var::dsurface_rmatrix_dx(), ARTS::Var::f_grid(), find_first(), interp_atmsurface_gp2itw(), ARTS::Var::jacobian_do(), ARTS::Var::lat_grid(), ARTS::Var::lon_grid(), rte_pos2gridpos(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::stokes_dim(), ARTS::Var::surface_emission(), ARTS::Var::surface_los(), surface_props_check(), ARTS::Var::surface_props_data(), surface_props_interp(), ARTS::Var::surface_props_names(), ARTS::Var::surface_rmatrix(), surfaceFastem(), and ARTS::Var::verbosity().
Referenced by SurfaceFastem_g().
void surfaceFastem | ( | Matrix & | surface_los, |
Tensor4 & | surface_rmatrix, | ||
Matrix & | surface_emission, | ||
const Index & | atmosphere_dim, | ||
const Index & | stokes_dim, | ||
const Vector & | f_grid, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Numeric & | surface_skin_t, | ||
const Numeric & | salinity, | ||
const Numeric & | wind_speed, | ||
const Numeric & | wind_direction, | ||
const Vector & | transmittance, | ||
const Index & | fastem_version, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surfaceFastem.
Usage of FASTEM together with MC and DOIT.
The recommended way to use FASTEM is by iySurfaceFastem, but that is not always possible, such as when using MC and DOIT. This is the case as those scattering methods use surface_rtprop_agenda, while iySurfaceFastem fits with iy_surface_agenda. This WSM solves this by allowing FASTEM to be used inside surface_rtprop_agenda.
However, FASTEM is here used in an approximative way. For a correct usage of FASTEM, the atmospheric transmittance shall be calculated for the position and direction of concern, but this is not possible together with DOIT and MC. Instead, the transmittance is an input to the method, and must either be pre-calculated or set to a representative value.
See iySurfaceFastem, for further details on the special input arguments.
[out] | surface_los | WS Output |
[out] | surface_rmatrix | WS Output |
[out] | surface_emission | WS Output |
[in] | atmosphere_dim | WS Input |
[in] | stokes_dim | WS Input |
[in] | f_grid | WS Input |
[in] | rtp_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | surface_skin_t | WS Input |
[in] | salinity | Generic Input (Default: "0.035") |
[in] | wind_speed | Generic Input |
[in] | wind_direction | Generic Input (Default: "0") |
[in] | transmittance | Generic Input |
[in] | fastem_version | Generic Input (Default: "6") |
Definition at line 880 of file m_surface.cc.
References abs, ARTS::Var::atmosphere_dim(), chk_if_in_range(), chk_rte_los(), chk_rte_pos(), ARTS::Var::f_grid(), FastemStandAlone(), joker, planck(), resolve_lon(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::specular_los(), specular_losCalcNoTopography(), ARTS::Var::stokes_dim(), ARTS::Var::surface_emission(), ARTS::Var::surface_los(), ARTS::Var::surface_normal(), ARTS::Var::surface_rmatrix(), ARTS::Var::surface_skin_t(), and ARTS::Var::verbosity().
Referenced by iySurfaceFastem(), SurfaceFastem(), and surfaceFastem_g().
void surfaceFlatReflectivity | ( | Matrix & | surface_los, |
Tensor4 & | surface_rmatrix, | ||
Matrix & | surface_emission, | ||
const Vector & | f_grid, | ||
const Index & | stokes_dim, | ||
const Index & | atmosphere_dim, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Vector & | specular_los, | ||
const Numeric & | surface_skin_t, | ||
const Tensor3 & | surface_reflectivity, | ||
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 vector radiative transfer is more properly handled. See the ARTS theory document (ATD) for details around how surface_emission* is determined. In the nomenclature of ATD, surface_reflectivity* gives R.
[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_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | specular_los | WS Input |
[in] | surface_skin_t | WS Input |
[in] | surface_reflectivity | WS Input |
Definition at line 1249 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), chk_if_in_range(), chk_not_negative(), chk_rte_los(), chk_rte_pos(), CREATE_OUT2, ARTS::Var::f_grid(), joker, ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::specular_los(), ARTS::Var::stokes_dim(), ARTS::Var::surface_emission(), ARTS::Var::surface_los(), ARTS::Var::surface_reflectivity(), ARTS::Var::surface_rmatrix(), and ARTS::Var::surface_skin_t().
Referenced by surfaceFlatReflectivity_g().
void surfaceFlatRefractiveIndex | ( | Matrix & | surface_los, |
Tensor4 & | surface_rmatrix, | ||
Matrix & | surface_emission, | ||
const Vector & | f_grid, | ||
const Index & | stokes_dim, | ||
const Index & | atmosphere_dim, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Vector & | specular_los, | ||
const Numeric & | surface_skin_t, | ||
const GriddedField3 & | surface_complex_refr_index, | ||
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.
[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_pos | 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 |
Definition at line 1179 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), calc_incang(), chk_if_in_range(), chk_not_negative(), chk_rte_los(), chk_rte_pos(), complex_n_interp(), CREATE_OUT2, CREATE_OUT3, ARTS::Var::f_grid(), fresnel(), joker, ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::specular_los(), ARTS::Var::stokes_dim(), ARTS::Var::surface_complex_refr_index(), ARTS::Var::surface_emission(), ARTS::Var::surface_los(), ARTS::Var::surface_rmatrix(), ARTS::Var::surface_skin_t(), and surface_specular_R_and_b().
Referenced by surfaceFlatRefractiveIndex_g().
void surfaceFlatRvRh | ( | Matrix & | surface_los, |
Tensor4 & | surface_rmatrix, | ||
Matrix & | surface_emission, | ||
const Vector & | f_grid, | ||
const Index & | stokes_dim, | ||
const Index & | atmosphere_dim, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Vector & | specular_los, | ||
const Numeric & | surface_skin_t, | ||
const Matrix & | surface_rv_rh, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surfaceFlatRvRh.
Creates variables to mimic specular reflection by a (flat) surface where surface_rv_rh is specified.
This method assumes that the reflection at vertical and horizontal polarisation differs. As power reflection coefficients are provided there is no information at hand on phase shifts between polarisations, and they are simply assumed to be zero. These assumptions result in that surface_emission is set to zero for positions corresponding to U and V, and that all diagonal elementsof surface_rmatrix are equal (the mean of rv and rh). Further, all off-diagonal elements of surface_rmatrix* are all zero except for (0,1) and (1,0).
[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_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | specular_los | WS Input |
[in] | surface_skin_t | WS Input |
[in] | surface_rv_rh | WS Input |
Definition at line 1333 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), chk_if_in_range(), chk_not_negative(), chk_rte_los(), chk_rte_pos(), ARTS::Var::f_grid(), joker, max, min, planck(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::specular_los(), ARTS::Var::stokes_dim(), ARTS::Var::surface_emission(), ARTS::Var::surface_los(), ARTS::Var::surface_rmatrix(), ARTS::Var::surface_rv_rh(), and ARTS::Var::surface_skin_t().
Referenced by surfaceFlatRvRh_g(), and surfaceTessem().
void surfaceFlatScalarReflectivity | ( | Matrix & | surface_los, |
Tensor4 & | surface_rmatrix, | ||
Matrix & | surface_emission, | ||
const Vector & | f_grid, | ||
const Index & | stokes_dim, | ||
const Index & | atmosphere_dim, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Vector & | specular_los, | ||
const Numeric & | surface_skin_t, | ||
const Vector & | surface_scalar_reflectivity, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surfaceFlatScalarReflectivity.
Creates variables to mimic specular reflection by a (flat) surface where surface_scalar_reflectivity is specified.
This method assumes that the reflection at vertical and horizontal polarisation is identical. This assumption includes that there is no phase shift between polarisations. These assumptions result in that surface_emission* is set to zero for positions corresponding to Q, U and V, and that surface_rmatrix becomes a diagonal matrix (with all elements on the diagonal equal to the specified reflectivity).
[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_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | specular_los | WS Input |
[in] | surface_skin_t | WS Input |
[in] | surface_scalar_reflectivity | WS Input |
Definition at line 1413 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), chk_if_in_range(), chk_not_negative(), chk_rte_los(), chk_rte_pos(), ARTS::Var::f_grid(), joker, max, min, planck(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::specular_los(), ARTS::Var::stokes_dim(), ARTS::Var::surface_emission(), ARTS::Var::surface_los(), ARTS::Var::surface_rmatrix(), ARTS::Var::surface_scalar_reflectivity(), and ARTS::Var::surface_skin_t().
Referenced by surfaceFlatScalarReflectivity_g().
void surfaceLambertianSimple | ( | Matrix & | surface_los, |
Tensor4 & | surface_rmatrix, | ||
Matrix & | surface_emission, | ||
const Vector & | f_grid, | ||
const Index & | stokes_dim, | ||
const Index & | atmosphere_dim, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Vector & | surface_normal, | ||
const Numeric & | surface_skin_t, | ||
const Vector & | surface_scalar_reflectivity, | ||
const Index & | lambertian_nza, | ||
const Numeric & | za_pos, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surfaceLambertianSimple.
Creates variables to mimic a Lambertian surface.
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 for 1D. For 2D and 3D see below. 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 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".
For 2D and 3D, the down-welling directions are placed along the the viewing direction, e.g. for 3D the azimuth angle is kept constant. In 2D and 3D surface topography can exist, and to avoid getting views going directly into the surface, angels are not distributed over 90 deg, but 90-abs(surface_normal[0]).
[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_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | surface_normal | WS Input |
[in] | surface_skin_t | WS Input |
[in] | surface_scalar_reflectivity | WS Input |
[in] | lambertian_nza | Generic Input (Default: "9") |
[in] | za_pos | Generic Input (Default: "0.5") |
Definition at line 1479 of file m_surface.cc.
References abs, ARTS::Var::atmosphere_dim(), chk_if_in_range(), chk_not_negative(), chk_rte_los(), chk_rte_pos(), DEG2RAD, ARTS::Var::f_grid(), max, min, planck(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::stokes_dim(), ARTS::Var::surface_emission(), ARTS::Var::surface_los(), ARTS::Var::surface_normal(), ARTS::Var::surface_rmatrix(), ARTS::Var::surface_scalar_reflectivity(), ARTS::Var::surface_skin_t(), and w().
Referenced by surfaceLambertianSimple_g().
void surfaceSemiSpecularBy3beams | ( | Workspace & | ws, |
Numeric & | surface_skin_t, | ||
Matrix & | surface_los, | ||
Tensor4 & | surface_rmatrix, | ||
Matrix & | surface_emission, | ||
const Index & | atmosphere_dim, | ||
const Vector & | f_grid, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Agenda & | surface_rtprop_sub_agenda, | ||
const Numeric & | specular_factor, | ||
const Numeric & | dza, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surfaceSemiSpecularBy3beams.
A simplistic treatment of semi-specular surfaces.
This method has no strong physical basis but could be used for simpler testing or as starting point for more advanced methods.
This method assumes that the surface can be treated to have three facets, all lacking surface roughness. One facet is assumed to give standard specular reflection, while the two other facets are tilted with +dza and -dza, respectively. The tilt is assumed to only affect the zenith angle of the reflected direction (azimuth same as for specular direction). The area ratio of the non-tilted facet is set by specular_factor. That is, the specular beam is given weight w, while the other two beams each get weight (1-w)/2.
If a facet tilts away from the viewing direction in such way that the surface is observed from below, the tilt of the facet is decreased in steps of 1 degree until a successful calculation is obtained. If this turns out to require a tilt of zero, this facete is merged with the specular direction.
The pure specular properties of the surface shall be described by surface_rtprop_sub_agenda*. That is, if you have specular surface described and you want to make it semi-specular by this method, you move the content of the existing surface_rtprop_agenda to surface_rtprop_sub_agenda* and instead fill surface_rtprop_agenda with this method.
[in,out] | ws | Workspace |
[out] | surface_skin_t | WS Output |
[out] | surface_los | WS Output |
[out] | surface_rmatrix | WS Output |
[out] | surface_emission | WS Output |
[in] | atmosphere_dim | WS Input |
[in] | f_grid | WS Input |
[in] | rtp_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | surface_rtprop_sub_agenda | WS Input |
[in] | specular_factor | Generic Input |
[in] | dza | Generic Input |
Definition at line 1581 of file m_surface.cc.
References adjust_los(), ARTS::Var::atmosphere_dim(), chk_rte_los(), chk_rte_pos(), ARTS::Var::f_grid(), ConstMatrixView::nrows(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), sign(), ARTS::Var::surface_rtprop_sub_agenda(), surface_rtprop_sub_agendaExecute(), and ARTS::Var::surface_skin_t().
Referenced by surfaceSemiSpecularBy3beams_g().
void surfaceSplitSpecularTo3beams | ( | Matrix & | surface_los, |
Tensor4 & | surface_rmatrix, | ||
const Index & | atmosphere_dim, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Numeric & | specular_factor, | ||
const Numeric & | dza, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surfaceSplitSpecularTo3beams.
A very simple approximation of a semi-specular surface.
This method has no direct physical basis but could be used for simpler testing or as starting point for more advanced methods.
The method requires that the surface RT properties (e.g. surface_los) have been set up to mimic a specular surface. This method splits the down- welling radiation into three directions. The specular direction is given weight w, while the other two beams each get weight (1-w)/2. The basic polarised reflectivity from the specular calculations is maintained for each beam. The beams are just separated in zenith angle, with a separation of dza. The lowermost beam is not allowed to be closer to the surface than 1 degree. If there is no room for the lowermost beam, it is merged with the main beam.
[in,out] | surface_los | WS Input/Output |
[in,out] | surface_rmatrix | WS Input/Output |
[in] | atmosphere_dim | WS Input |
[in] | rtp_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | specular_factor | Generic Input |
[in] | dza | Generic Input |
Definition at line 1728 of file m_surface.cc.
References abs, ARTS::Var::atmosphere_dim(), chk_rte_los(), chk_rte_pos(), ConstMatrixView::ncols(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::surface_los(), and ARTS::Var::surface_rmatrix().
Referenced by surfaceSplitSpecularTo3beams_g().
void surfaceTelsem | ( | Matrix & | surface_los, |
Tensor4 & | surface_rmatrix, | ||
Matrix & | surface_emission, | ||
const Index & | atmosphere_dim, | ||
const Index & | stokes_dim, | ||
const Vector & | f_grid, | ||
const Vector & | lat_grid, | ||
const Vector & | lat_true, | ||
const Vector & | lon_true, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Numeric & | surface_skin_t, | ||
const TelsemAtlas & | atlas, | ||
const Numeric & | r_min, | ||
const Numeric & | r_max, | ||
const Numeric & | d_max, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surfaceTelsem.
Compute surface emissivities using the TELSEM 2 model.
This method uses second version of the TELSEM model for calculating land surface emissivities (F. Aires et al, "A Tool to Estimate <br> Land‐Surface Emissivities at Microwave frequencies (TELSEM) for use <br> in numerical weather prediction" Quarterly Journal of the Royal Meteorological Society, vol. 137, (656), pp. 690-699, 2011.) This methods computes land surface emissivities for a given pencil beam using a given TELSEM2 atlas. The input must satisfy the following conditions, otherwise an error is thrown: <br> - The input frequencies (f_grid) must be within the range [5 GHz, 900 GHz] <br> - The skin temperature (surface_skin_t) must be within the range <br> [180 K, 360 K]
A TELSEM atlas contains only suface emissivities for locations that are classified as land. By default this WSM will throw an error if the pencil beam hits the surface at a position that is not contained in the given atlas.
The above behavior can be avoided by setting d_max to a positive value. This enables nearest neighbor interpolation, which assigns the emissivities of the nearest found cell in the atlas to the given position. In this case, an error is only thrown if the distance of the found neighbor is higher than the provided value of *d_max.
You can limit the final reflectivity applied by setting r_min and r_max.
To extract a land-sea mask from a given telsem atlas see the WSM telsemSurfaceTypeLandSea*.
[out] | surface_los | WS Output |
[out] | surface_rmatrix | WS Output |
[out] | surface_emission | WS Output |
[in] | atmosphere_dim | WS Input |
[in] | stokes_dim | WS Input |
[in] | f_grid | 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] | surface_skin_t | WS Input |
[in] | atlas | Generic Input |
[in] | r_min | Generic Input (Default: "0") |
[in] | r_max | Generic Input (Default: "1") |
[in] | d_max | Generic Input (Default: "-1.0") |
Definition at line 989 of file m_surface.cc.
References abs, ARTS::Var::atmosphere_dim(), TelsemAtlas::calc_cellnum(), TelsemAtlas::calc_cellnum_nearest_neighbor(), chk_if_in_range(), chk_if_in_range_exclude(), chk_rte_los(), chk_rte_pos(), TelsemAtlas::contains(), ARTS::Var::f_grid(), TelsemAtlas::get_class1(), TelsemAtlas::get_class2(), TelsemAtlas::get_coordinates(), TelsemAtlas::get_emis_h(), TelsemAtlas::get_emis_v(), ARTS::Var::lat(), ARTS::Var::lat_grid(), ARTS::Var::lat_true(), ARTS::Var::lon(), ARTS::Var::lon_true(), min, pos2true_latlon(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::specular_los(), specular_losCalcNoTopography(), sphdist(), ARTS::Var::surface_normal(), ARTS::Var::surface_rv_rh(), ARTS::Var::surface_skin_t(), and ARTS::Var::verbosity().
Referenced by surfaceTelsem_g().
void SurfaceTessem | ( | Matrix & | surface_los, |
Tensor4 & | surface_rmatrix, | ||
ArrayOfTensor4 & | dsurface_rmatrix_dx, | ||
Matrix & | surface_emission, | ||
ArrayOfMatrix & | dsurface_emission_dx, | ||
const Index & | stokes_dim, | ||
const Index & | atmosphere_dim, | ||
const Vector & | lat_grid, | ||
const Vector & | lon_grid, | ||
const Vector & | f_grid, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const TessemNN & | tessem_neth, | ||
const TessemNN & | tessem_netv, | ||
const Tensor3 & | surface_props_data, | ||
const ArrayOfString & | surface_props_names, | ||
const ArrayOfString & | dsurface_names, | ||
const Index & | jacobian_do, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: SurfaceTessem.
TESSEM sea surface microwave emissivity parametrization.
The variable surface_props_data must contain these data: <br> "Water skin temperature" <br> "Wind speed" <br> "Salinity"
This method computes surface emissivity and reflectivity matrices for ocean surfaces using the TESSEM emissivity model: Prigent, C., et al. Sea-surface emissivity parametrization from microwaves to millimetre waves, QJRMS, 2017, 143.702: 596-605.
The validity range of the parametrization of is 10 to 700 GHz, but for some extra flexibility frequencies between 5 and 900 GHz are accepted. The accepted temperaute range for water skin temperature is [260.0 K, 373.0 K]. Salinity shall be in the range [0,1]. That is, a salinity of 3% is given as 0.03.
The model itself is represented by the neural networks in tessem_neth* and tessem_netv.
[out] | surface_los | WS Output |
[out] | surface_rmatrix | WS Output |
[in,out] | dsurface_rmatrix_dx | WS Input/Output |
[out] | surface_emission | WS Output |
[in,out] | dsurface_emission_dx | WS Input/Output |
[in] | stokes_dim | WS Input |
[in] | atmosphere_dim | WS Input |
[in] | lat_grid | WS Input |
[in] | lon_grid | WS Input |
[in] | f_grid | WS Input |
[in] | rtp_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | tessem_neth | WS Input |
[in] | tessem_netv | WS Input |
[in] | surface_props_data | WS Input |
[in] | surface_props_names | WS Input |
[in] | dsurface_names | WS Input |
[in] | jacobian_do | WS Input |
Definition at line 2361 of file m_surface.cc.
References ARTS::Var::atmosphere_dim(), dsurface_check(), ARTS::Var::dsurface_emission_dx(), ARTS::Var::dsurface_names(), ARTS::Var::dsurface_rmatrix_dx(), ARTS::Var::f_grid(), find_first(), interp_atmsurface_gp2itw(), ARTS::Var::jacobian_do(), ARTS::Var::lat_grid(), ARTS::Var::lon_grid(), rte_pos2gridpos(), ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::stokes_dim(), ARTS::Var::surface_emission(), ARTS::Var::surface_los(), surface_props_check(), ARTS::Var::surface_props_data(), surface_props_interp(), ARTS::Var::surface_props_names(), ARTS::Var::surface_rmatrix(), surfaceTessem(), and ARTS::Var::verbosity().
Referenced by SurfaceTessem_g().
void surfaceTessem | ( | Matrix & | surface_los, |
Tensor4 & | surface_rmatrix, | ||
Matrix & | surface_emission, | ||
const Index & | atmosphere_dim, | ||
const Index & | stokes_dim, | ||
const Vector & | f_grid, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Numeric & | surface_skin_t, | ||
const TessemNN & | tessem_neth, | ||
const TessemNN & | tessem_netv, | ||
const Numeric & | salinity, | ||
const Numeric & | wind_speed, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: surfaceTessem.
TESSEM sea surface microwave emissivity parametrization.
This method computes surface emissivity and reflectivity matrices for ocean surfaces using the TESSEM emissivity model: Prigent, C., et al. Sea‐surface emissivity parametrization from microwaves to millimetre waves, QJRMS, 2017, 143.702: 596-605.
The validity range of the parametrization of is 10 to 700 GHz, but for some extra flexibility frequencies between 5 and 900 GHz are accepted. The accepted temperaute range for surface_skin_t is [260.0 K, 373.0 K]
The model itself is represented by the neural networks in tessem_neth* and tessem_netv.
[out] | surface_los | WS Output |
[out] | surface_rmatrix | WS Output |
[out] | surface_emission | WS Output |
[in] | atmosphere_dim | WS Input |
[in] | stokes_dim | WS Input |
[in] | f_grid | WS Input |
[in] | rtp_pos | WS Input |
[in] | rtp_los | WS Input |
[in] | surface_skin_t | WS Input |
[in] | tessem_neth | WS Input |
[in] | tessem_netv | WS Input |
[in] | salinity | Generic Input (Default: "0.035") |
[in] | wind_speed | Generic Input |
Definition at line 1100 of file m_surface.cc.
References abs, ARTS::Var::atmosphere_dim(), chk_if_in_range(), chk_if_in_range_exclude(), chk_if_in_range_exclude_high(), chk_rte_los(), chk_rte_pos(), ARTS::Var::f_grid(), max, min, ARTS::Var::rtp_los(), ARTS::Var::rtp_pos(), ARTS::Var::specular_los(), specular_losCalcNoTopography(), ARTS::Var::stokes_dim(), ARTS::Var::surface_emission(), ARTS::Var::surface_los(), ARTS::Var::surface_normal(), ARTS::Var::surface_rmatrix(), ARTS::Var::surface_rv_rh(), ARTS::Var::surface_skin_t(), surfaceFlatRvRh(), tessem_prop_nn(), and ARTS::Var::verbosity().
Referenced by SurfaceTessem(), and surfaceTessem_g().
void transmittanceFromIy_aux | ( | Vector & | transmittance, |
const ArrayOfString & | iy_aux_vars, | ||
const ArrayOfMatrix & | iy_aux, | ||
const Verbosity & | verbosity | ||
) |
WORKSPACE METHOD: transmittanceFromIy_aux.
Creates a vector of transmittance values.
The transmittances are set based on optical depths in iy_aux. That is, one of the quantities in iy_aux must be "Optical depth".
The created vector has a length matching f_grid and can e.g. be used as input to some of the FASTEM methods.
[out] | transmittance | Generic output |
[in] | iy_aux_vars | WS Input |
[in] | iy_aux | WS Input |
Definition at line 2747 of file m_surface.cc.
References ARTS::Var::iy_aux(), ARTS::Var::iy_aux_vars(), and Vector::resize().
Referenced by transmittanceFromIy_aux_g().
|
extern |
Referenced by surfaceLambertianSimple().
|
extern |