ARTS 2.5.11 (git: 6827797f)
|
#include "matpack_complex.h"
#include "matpack_data.h"
#include "mystring.h"
#include "ppath.h"
#include "energylevelmap.h"
#include "optproperties.h"
#include "sun.h"
Go to the source code of this file.
Functions | |
Numeric | calc_incang (ConstVectorView rte_los, ConstVectorView specular_los) |
Calculates the incidence angle for a flat surface, based on rte_los and specular_los. | |
Index | index_of_zsurface (const Numeric &z_surface, ConstVectorView z_profile) |
Lccates the surface with respect to pressure levels. | |
void | surface_calc (Matrix &iy, ConstTensor3View I, ConstMatrixView surface_los, ConstTensor4View surface_rmatrix, ConstMatrixView surface_emission) |
Weights together downwelling radiation and surface emission. | |
void | surface_specular_R_and_b (MatrixView surface_rmatrix, VectorView surface_emission, const Complex &Rv, const Complex &Rh, const Numeric &f, const Index &stokes_dim, const Numeric &surface_skin_t) |
Sets up the surface reflection matrix and emission vector for the case of specular reflection. | |
void | surface_props_check (const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &surface_props_data, const ArrayOfString &surface_props_names) |
Peforms basic checks of surface_props_data and surface_props_names | |
void | surface_props_interp (Vector &v, const String &vname, const Index &atmosphere_dim, const ArrayOfGridPos &gp_lat, const ArrayOfGridPos &gp_lon, const Matrix &itw, const Tensor3 &surface_props_data, const ArrayOfString &surface_props_names) |
Peforms an interpolation of surface_props_data | |
void | dsurface_check (const ArrayOfString &surface_props_names, const ArrayOfString &dsurface_names, const ArrayOfTensor4 dsurface_rmatrix_dx, const ArrayOfMatrix &dsurface_emission_dx) |
Peforms basic checks of the dsurface variables. | |
void | surface_get_incoming_direct (Workspace &ws, Matrix &iy_incoming, Index &stars_visible, Vector &specular_los, const Vector &rtp_pos, const Vector &rtp_los, const Index &stokes_dim, const Vector &f_grid, const Index &atmosphere_dim, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &z_field, const Tensor3 &t_field, const EnergyLevelMap &nlte_field, const Tensor4 &vmr_field, const ArrayOfArrayOfSpeciesTag &abs_species, const Tensor3 &wind_u_field, const Tensor3 &wind_v_field, const Tensor3 &wind_w_field, const Tensor3 &mag_u_field, const Tensor3 &mag_v_field, const Tensor3 &mag_w_field, const Matrix &z_surface, const Vector &refellipsoid, const Tensor4 &pnd_field, const ArrayOfTensor4 &dpnd_field_dx, const ArrayOfString &scat_species, const ArrayOfArrayOfSingleScatteringData &scat_data, const Numeric &ppath_lmax, const Numeric &ppath_lraytrace, const Index &ppath_inside_cloudbox_do, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Index &gas_scattering_do, const Index &jacobian_do, const ArrayOfRetrievalQuantity &jacobian_quantities, const ArrayOfSun &suns, const Numeric &rte_alonglos_v, const Agenda &propmat_clearsky_agenda, const Agenda &water_p_eq_agenda, const Agenda &gas_scattering_agenda, const Agenda &ppath_step_agenda, const Verbosity &verbosity) |
Calculate the incoming direct radiation at the surface for a given line of sight. | |
This file contains definitions of internal functions associated with the surface.
Definition in file surface.h.
Numeric calc_incang | ( | ConstVectorView | rte_los, |
ConstVectorView | specular_los | ||
) |
Calculates the incidence angle for a flat surface, based on rte_los and specular_los.
[in] | rte_los | As the WSV with the same name. |
[in] | specular_los | As the WSV with the same name. |
Definition at line 33 of file surface.cc.
Referenced by surfaceFlatRefractiveIndex(), and surfaceTelsem().
void dsurface_check | ( | const ArrayOfString & | surface_props_names, |
const ArrayOfString & | dsurface_names, | ||
const ArrayOfTensor4 | dsurface_rmatrix_dx, | ||
const ArrayOfMatrix & | dsurface_emission_dx | ||
) |
Peforms basic checks of the dsurface variables.
No calculaions, just checks
[in] | surface_props_data | As the WVS with the same name. |
[in] | surface_props_names | As the WVS with the same name. |
[in] | dsurface_names | As the WVS with the same name. |
[in] | dsurface_ratrix_dx | As the WVS with the same name. |
[in] | dsurface_emission_dx | As the WVS with the same name. |
Definition at line 185 of file surface.cc.
References ARTS_USER_ERROR_IF, and Array< base >::nelem().
Referenced by iySurfaceFlatReflectivity(), iySurfaceFlatRefractiveIndex(), SurfaceBlackbody(), SurfaceDummy(), SurfaceFastem(), SurfaceFlatScalarReflectivity(), and SurfaceTessem().
Index index_of_zsurface | ( | const Numeric & | z_surface, |
ConstVectorView | z_profile | ||
) |
Lccates the surface with respect to pressure levels.
The function returns the index of the pressure level at or just below the surface.
[in] | z_surface | A surface value (probably a value from WSV z_surface) |
[in] | z_profile | A profile of geometrical altitudes (probably a page of z_field) |
Definition at line 37 of file surface.cc.
Referenced by spectral_radiance_fieldClearskyPlaneParallel().
void surface_calc | ( | Matrix & | iy, |
ConstTensor3View | I, | ||
ConstMatrixView | surface_los, | ||
ConstTensor4View | surface_rmatrix, | ||
ConstMatrixView | surface_emission | ||
) |
Weights together downwelling radiation and surface emission.
iy* must have correct size when function is called.
[out] | iy | Radiation matrix, amtching the WSV with the same name. |
[in] | I | Downwelling radiation, with dimensions (surface_los, f_grid, stokes_dim) |
[in] | surface_los | As the WSV with the same name. |
[in] | surface_rmatrix | As the WSV with the same name. |
[in] | surface_emission | As the WSV with the same name. |
Definition at line 46 of file surface.cc.
References mult().
Referenced by iySurfaceFastem(), iySurfaceFlatReflectivityDirect(), iySurfaceFlatRefractiveIndexDirect(), iySurfaceRtpropAgenda(), and iySurfaceRtpropCalc().
void surface_get_incoming_direct | ( | Workspace & | ws, |
Matrix & | iy_incoming, | ||
Index & | stars_visible, | ||
Vector & | specular_los, | ||
const Vector & | rtp_pos, | ||
const Vector & | rtp_los, | ||
const Index & | stokes_dim, | ||
const Vector & | f_grid, | ||
const Index & | atmosphere_dim, | ||
const Vector & | p_grid, | ||
const Vector & | lat_grid, | ||
const Vector & | lon_grid, | ||
const Tensor3 & | z_field, | ||
const Tensor3 & | t_field, | ||
const EnergyLevelMap & | nlte_field, | ||
const Tensor4 & | vmr_field, | ||
const ArrayOfArrayOfSpeciesTag & | abs_species, | ||
const Tensor3 & | wind_u_field, | ||
const Tensor3 & | wind_v_field, | ||
const Tensor3 & | wind_w_field, | ||
const Tensor3 & | mag_u_field, | ||
const Tensor3 & | mag_v_field, | ||
const Tensor3 & | mag_w_field, | ||
const Matrix & | z_surface, | ||
const Vector & | refellipsoid, | ||
const Tensor4 & | pnd_field, | ||
const ArrayOfTensor4 & | dpnd_field_dx, | ||
const ArrayOfString & | scat_species, | ||
const ArrayOfArrayOfSingleScatteringData & | scat_data, | ||
const Numeric & | ppath_lmax, | ||
const Numeric & | ppath_lraytrace, | ||
const Index & | ppath_inside_cloudbox_do, | ||
const Index & | cloudbox_on, | ||
const ArrayOfIndex & | cloudbox_limits, | ||
const Index & | gas_scattering_do, | ||
const Index & | jacobian_do, | ||
const ArrayOfRetrievalQuantity & | jacobian_quantities, | ||
const ArrayOfSun & | suns, | ||
const Numeric & | rte_alonglos_v, | ||
const Agenda & | propmat_clearsky_agenda, | ||
const Agenda & | water_p_eq_agenda, | ||
const Agenda & | gas_scattering_agenda, | ||
const Agenda & | ppath_step_agenda, | ||
const Verbosity & | verbosity | ||
) |
Calculate the incoming direct radiation at the surface for a given line of sight.
[in,out] | ws | ARTS workspace |
[out] | iy_incoming | Matrix Incomming monochromatic radiance |
[out] | stars_visible | Index Flag indicating if sun(s) are in line of sight |
[in] | rtp_pos | As the WVS with the same name. |
[in] | rtp_los | As the WVS with the same name. |
[in] | stokes_dim | As the WVS with the same name. |
[in] | f_grid | As the WVS with the same name. |
[in] | atmosphere_dim | As the WVS with the same name. |
[in] | p_grid | As the WVS with the same name. |
[in] | lat_grid | As the WVS with the same name. |
[in] | lon_grid | As the WVS with the same name. |
[in] | z_field | As the WVS with the same name. |
[in] | t_field | As the WVS with the same name. |
[in] | nlte_field | As the WVS with the same name. |
[in] | vmr_field | As the WVS with the same name. |
[in] | abs_species | As the WVS with the same name. |
[in] | wind_u_field | As the WVS with the same name. |
[in] | wind_v_field | As the WVS with the same name. |
[in] | wind_w_field | As the WVS with the same name. |
[in] | mag_u_field | As the WVS with the same name. |
[in] | mag_v_field | As the WVS with the same name. |
[in] | mag_w_field | As the WVS with the same name. |
[in] | z_surface | As the WVS with the same name. |
[in] | refellipsoid | As the WVS with the same name. |
[in] | pnd_field | As the WVS with the same name. |
[in] | dpnd_field_dx | As the WVS with the same name. |
[in] | scat_species | As the WVS with the same name. |
[in] | scat_data | As the WVS with the same name. |
[in] | ppath_lmax | As the WVS with the same name. |
[in] | ppath_lraytrace | As the WVS with the same name. |
[in] | ppath_inside_cloudbox_do | As the WVS with the same name. |
[in] | cloudbox_on | As the WVS with the same name. |
[in] | cloudbox_limits | As the WVS with the same name. |
[in] | gas_scattering_do | As the WVS with the same name. |
[in] | jacobian_do | As the WVS with the same name. |
[in] | jacobian_quantities | As the WVS with the same name. |
[in] | suns | As the WVS with the same name. |
[in] | rte_alonglos_v | As the WVS with the same name. |
[in] | propmat_clearsky_agenda | As the WVS with the same name. |
[in] | water_p_eq_agenda | As the WVS with the same name. |
[in] | gas_scattering_agenda | As the WVS with the same name. |
[in] | ppath_step_agenda | As the WVS with the same name. |
[in] | verbosity | As the WVS with the same name. |
Definition at line 213 of file surface.cc.
References get_sun_background(), iyTransmissionStandard(), ppath_calc(), and specular_losCalc().
Referenced by iySurfaceFlatReflectivityDirect(), and iySurfaceFlatRefractiveIndexDirect().
void surface_props_check | ( | const Index & | atmosphere_dim, |
const Vector & | lat_grid, | ||
const Vector & | lon_grid, | ||
const Tensor3 & | surface_props_data, | ||
const ArrayOfString & | surface_props_names | ||
) |
Peforms basic checks of surface_props_data and surface_props_names
No calculaions, just checks
[in] | atmosphere_dim | As the WVS with the same name. |
[in] | lat_grid | As the WVS with the same name. |
[in] | lon_grid | As the WVS with the same name. |
[in] | surface_props_data | As the WVS with the same name. |
[in] | surface_props_names | As the WVS with the same name. |
Definition at line 122 of file surface.cc.
References ARTS_USER_ERROR_IF, and Array< base >::nelem().
Referenced by iySurfaceFlatReflectivity(), iySurfaceFlatRefractiveIndex(), iySurfaceLambertian(), SurfaceBlackbody(), SurfaceDummy(), SurfaceFastem(), SurfaceFlatScalarReflectivity(), SurfaceTessem(), and x2artsAtmAndSurf().
void surface_props_interp | ( | Vector & | v, |
const String & | vname, | ||
const Index & | atmosphere_dim, | ||
const ArrayOfGridPos & | gp_lat, | ||
const ArrayOfGridPos & | gp_lon, | ||
const Matrix & | itw, | ||
const Tensor3 & | surface_props_data, | ||
const ArrayOfString & | surface_props_names | ||
) |
Peforms an interpolation of surface_props_data
The function assumes that the intrpolatin gives a single value. The vector v* must have lenght 1.
[in] | v | Interpolated value |
[in] | vname | Name of surface variable to interpolate |
[in] | atmosphere_dim | As the WVS with the same name. |
[in] | gp_lat | Pre-calculatd latitude grid positions |
[in] | gp_lon | Pre-calculatd longitude grid positions |
[in] | itw | Pre-calculatd interpolation weight |
[in] | surface_props_data | As the WVS with the same name. |
[in] | surface_props_names | As the WVS with the same name. |
Definition at line 156 of file surface.cc.
References ARTS_ASSERT, ARTS_USER_ERROR, interp_atmsurface_by_itw(), Array< base >::nelem(), and v.
Referenced by iySurfaceFlatReflectivity(), iySurfaceFlatRefractiveIndex(), iySurfaceLambertian(), SurfaceBlackbody(), SurfaceFastem(), SurfaceFlatScalarReflectivity(), and SurfaceTessem().
void surface_specular_R_and_b | ( | MatrixView | surface_rmatrix, |
VectorView | surface_emission, | ||
const Complex & | Rv, | ||
const Complex & | Rh, | ||
const Numeric & | f, | ||
const Index & | stokes_dim, | ||
const Numeric & | surface_skin_t | ||
) |
Sets up the surface reflection matrix and emission vector for the case of specular reflection.
The function handles only one frequency at the time.
See further the surface chapter in the user guide.
[out] | surface_rmatrix | As the WSV with the same name, but slice for one direction and one frequency. |
[out] | surface_emission | As the WSV with the same name, but slice for one direction and one frequency. |
[in] | Rv | Complex amplitude relection coefficient vertical polarisation. |
[in] | Rh | Complex amplitude relection coefficient horisontal polarisation. |
[in] | f | Frequency (a scalar). |
[in] | stokes_dim | As the WSV with the same name. |
[in] | surface_skin_t | As the WSV with the same name. |
Definition at line 71 of file surface.cc.
References a, ARTS_ASSERT, b, c, d, and planck().
Referenced by surfaceFlatRefractiveIndex().