Go to the documentation of this file.
69 const Agenda& ppath_step_agenda,
70 const Index& atmosphere_dim,
77 const Index& cloudbox_on,
83 ppath_calc( ws, ppath, ppath_step_agenda, atmosphere_dim,
84 p_grid, lat_grid, lon_grid, z_field, r_geoid, z_surface,
85 cloudbox_on, cloudbox_limits, rte_pos, rte_los, 1,
95 const Index& atmosphere_dim,
109 if( atmosphere_dim == 1 )
111 r_geoid(0,0), z_surface(0,0), ppath_lmax ); }
113 else if( atmosphere_dim == 2 )
116 z_surface(
joker,0), ppath_lmax ); }
119 else if( atmosphere_dim == 3 )
121 z_field, r_geoid, z_surface, ppath_lmax ); }
124 {
throw runtime_error(
"The atmospheric dimensionality must be 1-3." ); }
138 const Agenda& refr_index_agenda,
139 const Index& atmosphere_dim,
149 const Numeric& ppath_lraytrace,
156 assert( ppath_lraytrace > 0 );
158 if( atmosphere_dim == 1 )
160 rte_vmr_list, refr_index, refr_index_agenda,
161 p_grid, z_field(
joker,0,0), t_field(
joker,0,0),
162 vmr_field(
joker,
joker,0,0), r_geoid(0,0), z_surface(0,0),
163 "linear_euler", ppath_lraytrace, ppath_lmax ); }
165 else if( atmosphere_dim == 2 )
167 rte_vmr_list, refr_index, refr_index_agenda,
171 "linear_euler", ppath_lraytrace, ppath_lmax ); }
173 else if( atmosphere_dim == 3 )
175 rte_vmr_list, refr_index, refr_index_agenda,
176 p_grid, lat_grid, lon_grid, z_field,
177 t_field, vmr_field, r_geoid, z_surface,
178 "linear_euler", ppath_lraytrace, ppath_lmax ); }
181 {
throw runtime_error(
"The atmospheric dimensionality must be 1-3." ); }
190 const Index& atmosphere_dim,
202 m(0,
joker) = rte_pos;
213 const Index& atmosphere_dim,
222 if( atmosphere_dim == 1 )
238 const Index& atmosphere_dim,
248 rte_pos.
resize(atmosphere_dim);
250 if( atmosphere_dim >= 2 )
251 { rte_pos[1] = lat; }
252 if( atmosphere_dim == 3 )
253 { rte_pos[2] = lon; }
262 const Index& atmosphere_dim,
271 chk_atm_surface(
"r_geoid", r_geoid, atmosphere_dim, lat_grid, lon_grid );
277 throw runtime_error(
"The number of positions is 0, must be at least 1.");
279 if( atmosphere_dim == 1 )
280 { sensor_pos(
joker,0) += r_geoid(0,0); }
285 if(
min(sensor_pos(
joker,1)) < lat_grid[0] ||
288 "You have given a position with a latitude outside *lat_grid*." );
289 if( atmosphere_dim == 3 )
291 if(
min(sensor_pos(
joker,2)) < lon_grid[0] ||
294 "You have given a position with a longitude outside *lon_grid*." );
297 if( atmosphere_dim == 2 )
305 for(
Index i=0; i<npos; i++ )
306 { sensor_pos(i,0) += v_rgeoid[i]; }
316 interp( v_rgeoid, itw, r_geoid, gp_lat, gp_lon );
317 for(
Index i=0; i<npos; i++ )
318 { sensor_pos(i,0) += v_rgeoid[i]; }
329 const Agenda& refr_index_agenda,
336 const Index& atmosphere_dim,
338 const Vector& ztan_vector,
341 if( atmosphere_dim != 1 ) {
342 throw runtime_error(
"The function can only be used for 1D atmospheres." );
345 if( ztan_vector.
nelem() != sensor_pos.
nrows() ) {
347 os <<
"The number of altitudes in true tangent altitude vector must\n"
348 <<
"match the number of positions in *sensor_pos*.";
349 throw runtime_error( os.str() );
356 Numeric refr_index, rte_pressure, rte_temperature;
360 for(
Index i=0; i<ztan_vector.
nelem(); i++ ) {
362 rte_vmr_list, refr_index_agenda, p_grid, r_geoid(0,0),
364 vmr_field(
joker,
joker,0,0), ztan_vector[i]+r_geoid(0,0) );
367 za_vector[i] = 180-asin(refr_index*(ztan_vector[i]+r_geoid(0,0)) /
380 const Index& atmosphere_dim,
382 const Vector& ztan_vector,
385 if( atmosphere_dim != 1 ) {
386 throw runtime_error(
"The function can only be used for 1D atmospheres." );
391 if( ztan_vector.
nelem() != npos )
394 os <<
"The number of altitudes in the geometric tangent altitude vector must\n"
395 <<
"match the number of positions in *sensor_pos*.";
396 throw runtime_error( os.str() );
401 for(
Index i=0; i<npos; i++ )
void ppath_calc(Workspace &ws, Ppath &ppath, const Agenda &ppath_step_agenda, const Index &atmosphere_dim, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &z_field, const Matrix &r_geoid, const Matrix &z_surface, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Vector &rte_pos, const Vector &rte_los, const bool &outside_cloudbox, const Verbosity &verbosity)
ppath_calc
void gridpos(ArrayOfGridPos &gp, ConstVectorView old_grid, ConstVectorView new_grid, const Numeric &extpolfac)
Set up a grid position Array.
Numeric last(ConstVectorView x)
last
Numeric interp(ConstVectorView itw, ConstVectorView a, const GridPos &tc)
Red 1D Interpolate.
void ppath_step_refr_1d(Workspace &ws, Ppath &ppath, Numeric &rte_pressure, Numeric &rte_temperature, Vector &rte_vmr_list, Numeric &refr_index, const Agenda &refr_index_agenda, ConstVectorView p_grid, ConstVectorView z_field, ConstVectorView t_field, ConstMatrixView vmr_field, const double &r_geoid, const double &z_surface, const String &rtrace_method, const double &lraytrace, const double &lmax)
ppath_step_refr_1d
void sensor_posAddRgeoid(Matrix &sensor_pos, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lon_grid, const Matrix &r_geoid, const Verbosity &)
WORKSPACE METHOD: sensor_posAddRgeoid.
void VectorZtanToZa1D(Vector &za_vector, const Matrix &sensor_pos, const Matrix &r_geoid, const Index &atmosphere_dim, const Vector &ztan_vector, const Verbosity &)
WORKSPACE METHOD: VectorZtanToZa1D.
void resize(Index n)
Resize function.
Index nrows() const
Returns the number of rows.
double geompath_za_at_r(const double &ppc, const double &a_za, const double &r)
geompath_za_at_r
void ppath_stepGeometric(Ppath &ppath_step, const Index &atmosphere_dim, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &z_field, const Matrix &r_geoid, const Matrix &z_surface, const Numeric &ppath_lmax, const Verbosity &)
WORKSPACE METHOD: ppath_stepGeometric.
The structure to describe a propagation path and releated quantities.
void rte_posSet(Vector &rte_pos, const Index &atmosphere_dim, const Numeric &r_or_z, const Numeric &lat, const Numeric &lon, const Verbosity &)
WORKSPACE METHOD: rte_posSet.
Declarations having to do with the four output streams.
void ppath_step_geom_1d(Ppath &ppath, ConstVectorView p_grid, ConstVectorView z_field, const double &r_geoid, const double &z_surface, const double &lmax)
ppath_step_geom_1d
void rte_losSet(Vector &rte_los, const Index &atmosphere_dim, const Numeric &za, const Numeric &aa, const Verbosity &)
WORKSPACE METHOD: rte_losSet.
void rte_posAddRgeoid(Vector &rte_pos, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lon_grid, const Matrix &r_geoid, const Verbosity &verbosity)
WORKSPACE METHOD: rte_posAddRgeoid.
Index nelem() const
Returns the number of elements.
void ppath_step_geom_2d(Ppath &ppath, ConstVectorView p_grid, ConstVectorView lat_grid, ConstMatrixView z_field, ConstVectorView r_geoid, ConstVectorView z_surface, const double &lmax)
ppath_step_geom_2d
void VectorZtanToZaRefr1D(Workspace &ws, Vector &za_vector, const Agenda &refr_index_agenda, const Matrix &sensor_pos, const Vector &p_grid, const Tensor3 &t_field, const Tensor3 &z_field, const Tensor4 &vmr_field, const Matrix &r_geoid, const Index &atmosphere_dim, const Vector &ztan_vector, const Verbosity &)
WORKSPACE METHOD: VectorZtanToZaRefr1D.
void ppath_step_geom_3d(Ppath &ppath, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView lon_grid, ConstTensor3View z_field, ConstMatrixView r_geoid, ConstMatrixView z_surface, const double &lmax)
ppath_step_geom_3d
NUMERIC Numeric
The type to use for all floating point numbers.
void get_refr_index_1d(Workspace &ws, Numeric &refr_index, Numeric &a_pressure, Numeric &a_temperature, Vector &a_vmr_list, const Agenda &refr_index_agenda, ConstVectorView p_grid, const Numeric &r_geoid, ConstVectorView z_field, ConstVectorView t_field, ConstMatrixView vmr_field, const Numeric &r)
get_refr_index_1d
void ppath_step_refr_2d(Workspace &ws, Ppath &ppath, Numeric &rte_pressure, Numeric &rte_temperature, Vector &rte_vmr_list, Numeric &refr_index, const Agenda &refr_index_agenda, ConstVectorView p_grid, ConstVectorView lat_grid, ConstMatrixView z_field, ConstMatrixView t_field, ConstTensor3View vmr_field, ConstVectorView r_geoid, ConstVectorView z_surface, const String &rtrace_method, const double &lraytrace, const double &lmax)
ppath_step_refr_2d
Propagation path structure and functions.
Header file for special_interp.cc.
const Numeric EARTH_GRAV_CONST
void ppath_step_refr_3d(Workspace &ws, Ppath &ppath, Numeric &rte_pressure, Numeric &rte_temperature, Vector &rte_vmr_list, Numeric &refr_index, const Agenda &refr_index_agenda, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView lon_grid, ConstTensor3View z_field, ConstTensor3View t_field, ConstTensor4View vmr_field, ConstMatrixView r_geoid, ConstMatrixView z_surface, const String &rtrace_method, const double &lraytrace, const double &lmax)
ppath_step_refr_3d
INDEX Index
The type to use for all integer numbers and indices.
void ppath_stepRefractionEuler(Workspace &ws, Ppath &ppath_step, Numeric &rte_pressure, Numeric &rte_temperature, Vector &rte_vmr_list, Numeric &refr_index, const Agenda &refr_index_agenda, 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 Tensor4 &vmr_field, const Matrix &r_geoid, const Matrix &z_surface, const Numeric &ppath_lmax, const Numeric &ppath_lraytrace, const Verbosity &)
WORKSPACE METHOD: ppath_stepRefractionEuler.
void ppathCalc(Workspace &ws, Ppath &ppath, const Agenda &ppath_step_agenda, const Index &atmosphere_dim, const Vector &p_grid, const Vector &lat_grid, const Vector &lon_grid, const Tensor3 &z_field, const Matrix &r_geoid, const Matrix &z_surface, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Vector &rte_pos, const Vector &rte_los, const Verbosity &verbosity)
WORKSPACE METHOD: ppathCalc.
void interpweights(VectorView itw, const GridPos &tc)
Red 1D interpolation weights.
The global header file for ARTS.
This file contains basic functions to handle XML data files.
Template functions for general supergeneric ws methods.