ARTS 2.5.9 (git: 825fa5f2)
Go to the documentation of this file.
1/* Copyright (C) 2012
2 Patrick Eriksson <>
4 This program is free software; you can redistribute it and/or modify it
5 under the terms of the GNU General Public License as published by the
6 Free Software Foundation; either version 2, or (at your option) any
7 later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17 USA. */
20 === File description
21 ===========================================================================*/
32#ifndef surface_h
33#define surface_h
35#include "matpack_complex.h"
36#include "matpackIV.h"
37#include "mystring.h"
38#include "ppath.h"
39#include "energylevelmap.h"
40#include "optproperties.h"
41#include "star.h"
43class Agenda;
44class Workspace;
73Index index_of_zsurface(const Numeric& z_surface,
74 ConstVectorView z_profile);
92void surface_calc(Matrix& iy,
94 ConstMatrixView surface_los,
95 ConstTensor4View surface_rmatrix,
96 ConstMatrixView surface_emission);
121void surface_specular_R_and_b(MatrixView surface_rmatrix,
122 VectorView surface_emission,
123 const Complex& Rv,
124 const Complex& Rh,
125 const Numeric& f,
126 const Index& stokes_dim,
127 const Numeric& surface_skin_t);
143void surface_props_check(const Index& atmosphere_dim,
144 const Vector& lat_grid,
145 const Vector& lon_grid,
146 const Tensor3& surface_props_data,
147 const ArrayOfString& surface_props_names);
168 const String& vname,
169 const Index& atmosphere_dim,
170 const ArrayOfGridPos& gp_lat,
171 const ArrayOfGridPos& gp_lon,
172 const Matrix& itw,
173 const Tensor3& surface_props_data,
174 const ArrayOfString& surface_props_names);
190void dsurface_check(const ArrayOfString& surface_props_names,
191 const ArrayOfString& dsurface_names,
192 const ArrayOfTensor4 dsurface_rmatrix_dx,
193 const ArrayOfMatrix& dsurface_emission_dx);
242 Workspace& ws,
243 Matrix& iy_incoming,
244 Index& stars_visible,
245 Vector& specular_los,
246 const Vector& rtp_pos,
247 const Vector& rtp_los,
248 const Index& stokes_dim,
249 const Vector& f_grid,
250 const Index& atmosphere_dim,
251 const Vector& p_grid,
252 const Vector& lat_grid,
253 const Vector& lon_grid,
254 const Tensor3& z_field,
255 const Tensor3& t_field,
256 const EnergyLevelMap& nlte_field,
257 const Tensor4& vmr_field,
258 const ArrayOfArrayOfSpeciesTag& abs_species,
259 const Tensor3& wind_u_field,
260 const Tensor3& wind_v_field,
261 const Tensor3& wind_w_field,
262 const Tensor3& mag_u_field,
263 const Tensor3& mag_v_field,
264 const Tensor3& mag_w_field,
265 const Matrix& z_surface,
266 const Vector& refellipsoid,
267 const Tensor4& pnd_field,
268 const ArrayOfTensor4& dpnd_field_dx,
269 const ArrayOfString& scat_species,
270 const ArrayOfArrayOfSingleScatteringData& scat_data,
271 const Numeric& ppath_lmax,
272 const Numeric& ppath_lraytrace,
273 const Index& ppath_inside_cloudbox_do,
274 const Index& cloudbox_on,
275 const ArrayOfIndex& cloudbox_limits,
276 const Index& gas_scattering_do,
277 const Index& jacobian_do,
278 const ArrayOfRetrievalQuantity& jacobian_quantities,
279 const ArrayOfStar& stars,
280 const Numeric& rte_alonglos_v,
281 const Agenda& propmat_clearsky_agenda,
282 const Agenda& water_p_eq_agenda,
283 const Agenda& gas_scattering_agenda,
284 const Agenda& ppath_step_agenda,
285 const Verbosity& verbosity);
287#endif // surface_h
The Agenda class.
Definition: agenda_class.h:69
A constant view of a Matrix.
Definition: matpackI.h:1065
A constant view of a Tensor3.
Definition: matpackIII.h:133
A constant view of a Tensor4.
Definition: matpackIV.h:133
A constant view of a Vector.
Definition: matpackI.h:521
The MatrixView class.
Definition: matpackI.h:1188
The Matrix class.
Definition: matpackI.h:1285
The Tensor3 class.
Definition: matpackIII.h:352
The Tensor4 class.
Definition: matpackIV.h:435
The VectorView class.
Definition: matpackI.h:674
The Vector class.
Definition: matpackI.h:910
Workspace class.
Definition: workspace_ng.h:53
Array< WorkspaceVariable > ws
Workspace variable container.
Definition: workspace_ng.h:73
Class to map energy levels.
The type to use for all floating point numbers.
Definition: matpack.h:33
The type to use for all integer numbers and indices.
Definition: matpack.h:39
std::complex< Numeric > Complex
This file contains the definition of String, the ARTS string class.
Scattering database structure and functions.
Propagation path structure and functions.
Declaration of functions in
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_calc(Matrix &iy, ConstTensor3View I, ConstMatrixView surface_los, ConstTensor4View surface_rmatrix, ConstMatrixView surface_emission)
Weights together downwelling radiation and surface emission.
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
Numeric calc_incang(ConstVectorView rte_los, ConstVectorView specular_los)
Calculates the incidence angle for a flat surface, based on rte_los and specular_los.
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
Index index_of_zsurface(const Numeric &z_surface, ConstVectorView z_profile)
Lccates the surface with respect to pressure levels.
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 ArrayOfStar &stars, 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.
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.
#define v