Go to the documentation of this file.
77 for (
Index ilos = 0; ilos < nlos; ilos++) {
80 for (
Index iv = 0; iv < nf; iv++) {
108 const Numeric rmean = (rv + rh) / 2;
114 const Numeric rdiff = (rv - rh) / 2;
124 const Numeric c = real(a + b) / 2.0;
129 const Numeric d = imag(a - b) / 2.0;
147 "The number of pages in *surface_props_data* and "
148 "length of *surface_props_names* differ.");
155 throw runtime_error(
"Row-size of *surface_props_data* not as expected.");
158 throw runtime_error(
"Column-size of *surface_props_data* not as expected.");
163 os <<
"Element " << i <<
" (0-based) of *surface_props_names* is empty.";
164 throw runtime_error(os.str());
169 os <<
"Two surface properties with same name found!\n"
170 <<
"This found for these two properties\n"
171 <<
" index: " << i << endl
172 <<
" index: " << j << endl
174 throw runtime_error(os.str());
188 assert(v.
nelem() == 1);
204 os <<
"The following property was requested\n"
205 <<
" " << vname << endl
206 <<
"but it could not be found in *surface_props_names*.";
207 throw runtime_error(os.str());
218 "The lengths of *dsurface_names* and *dsurface_rmatrix_dx* differ.");
222 "The lengths of *dsurface_names* and *dsurface_emission_dx* differ.");
225 for (
Index i = 0; i < nq; i++) {
234 os <<
"String " << i <<
" (0-based) of *dsurface_names* is \""
236 <<
"but this string could not be found in *surface_props_names*.\n"
237 <<
"This is likely due to incorrect choice of quantity when\n"
238 <<
" calling *jacobianAddSurfaceQuantity*.";
239 throw runtime_error(os.str());
Index atmosphere_dim(Workspace &ws) noexcept
constexpr Complex conj(Complex c)
the conjugate of c
Numeric calc_incang(ConstVectorView rte_los, ConstVectorView specular_los)
Calculates the incidence angle for a flat surface, based on rte_los and specular_los.
Vector lat_grid(Workspace &ws) noexcept
Tensor4 surface_rmatrix(Workspace &ws) noexcept
void surface_specular_R_and_b(MatrixView surface_rmatrix, VectorView surface_emission, const Complex &Rv, const Complex &Rh, const Numeric &f, const Index &stokes_dim, const Numeric &surface_skin_t)
Sets up the surface reflection matrix and emission vector for the case of specular reflection.
void surface_props_check(const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &surface_props_data, const ArrayOfString &surface_props_names)
Peforms basic checks of surface_props_data and surface_props_names
void mult(ComplexVectorView y, const ConstComplexMatrixView &M, const ConstComplexVectorView &x)
Matrix-Vector Multiplication.
void surface_calc(Matrix &iy, ConstTensor3View I, ConstMatrixView surface_los, ConstTensor4View surface_rmatrix, ConstMatrixView surface_emission)
Weights together downwelling radiation and surface emission.
Vector specular_los(Workspace &ws) noexcept
void dsurface_check(const ArrayOfString &surface_props_names, const ArrayOfString &dsurface_names, const ArrayOfTensor4 dsurface_rmatrix_dx, const ArrayOfMatrix &dsurface_emission_dx)
Peforms basic checks of the dsurface variables.
Index stokes_dim(Workspace &ws) noexcept
Index index_of_zsurface(const Numeric &z_surface, ConstVectorView z_profile)
Lccates the surface with respect to pressure levels.
Matrix iy(Workspace &ws) noexcept
std::complex< Numeric > Complex
ArrayOfString dsurface_names(Workspace &ws) noexcept
A constant view of a Tensor4.
Implementation of Matrix, Vector, and such stuff.
A class implementing complex numbers for ARTS.
Numeric pow(const Rational base, Numeric exp)
Power of.
Index nelem(const Lines &l)
Number of lines.
Index nelem() const
Returns the number of elements.
Vector rte_los(Workspace &ws) noexcept
This file contains declerations of functions of physical character.
void surface_props_interp(Vector &v, const String &vname, const Index &atmosphere_dim, const ArrayOfGridPos &gp_lat, const ArrayOfGridPos &gp_lon, const Matrix &itw, const Tensor3 &surface_props_data, const ArrayOfString &surface_props_names)
Peforms an interpolation of surface_props_data
ArrayOfMatrix dsurface_emission_dx(Workspace &ws) noexcept
Tensor3 surface_props_data(Workspace &ws) noexcept
NUMERIC Numeric
The type to use for all floating point numbers.
Matrix surface_emission(Workspace &ws) noexcept
Index nrows() const
Returns the number of rows.
Vector lon_grid(Workspace &ws) noexcept
A constant view of a Matrix.
Numeric planck(const Numeric &f, const Numeric &t)
planck
This file contains the Workspace class.
Index ncols() const
Returns the number of columns.
A constant view of a Tensor3.
INDEX Index
The type to use for all integer numbers and indices.
Numeric surface_skin_t(Workspace &ws) noexcept
void interp_atmsurface_by_itw(VectorView x, const Index &atmosphere_dim, ConstMatrixView x_surface, const ArrayOfGridPos &gp_lat, const ArrayOfGridPos &gp_lon, ConstMatrixView itw)
Interpolates a surface-type variable with pre-calculated weights by interp_atmsurface_gp2itw.
Matrix surface_los(Workspace &ws) noexcept
A constant view of a Vector.
ArrayOfTensor4 dsurface_rmatrix_dx(Workspace &ws) noexcept
Matrix z_surface(Workspace &ws) noexcept
ArrayOfString surface_props_names(Workspace &ws) noexcept