ARTS
2.3.1285(git:92a29ea9-dirty)
|
Interpolation routines. More...
#include "interpolation.h"
#include <cmath>
#include <iostream>
#include "array.h"
#include "check_input.h"
#include "logic.h"
Go to the source code of this file.
Macros | |
#define | LOOPIT(x) for (const Numeric* x = &t##x.fd[1]; x >= &t##x.fd[0]; --x) |
Macro for interpolation weight loops. More... | |
Functions | |
ostream & | operator<< (ostream &os, const GridPos &gp) |
Output operator for GridPos. More... | |
void | gridpos (ArrayOfGridPos &gp, ConstVectorView old_grid, ConstVectorView new_grid, const Numeric &extpolfac) |
Set up a grid position Array. More... | |
void | gridpos (GridPos &gp, ConstVectorView old_grid, const Numeric &new_grid, const Numeric &extpolfac) |
gridpos More... | |
void | gridpos_1to1 (ArrayOfGridPos &gp, ConstVectorView grid) |
gridpos_1to1 More... | |
void | gridpos_copy (GridPos &gp_new, const GridPos &gp_old) |
gridpos_copy More... | |
Numeric | fractional_gp (const GridPos &gp) |
fractional_gp More... | |
void | gridpos_check_fd (GridPos &gp) |
gridpos_check_fd More... | |
void | gridpos_force_end_fd (GridPos &gp, const Index &n) |
gridpos_force_end_fd More... | |
void | gridpos_upperend_check (GridPos &gp, const Index &ie) |
gridpos_upperend_check More... | |
void | gridpos_upperend_check (ArrayOfGridPos &gp, const Index &ie) |
gridpos_upperend_check More... | |
void | gp4length1grid (ArrayOfGridPos &gp) |
Grid position matching a grid of length 1. More... | |
bool | is_gridpos_at_index_i (const GridPos &gp, const Index &i, const bool &strict) |
is_gridpos_at_index_i More... | |
Index | gridpos2gridrange (const GridPos &gp, const bool &upwards) |
gridpos2gridrange More... | |
void | interpweights (VectorView itw, const GridPos &tc) |
Red 1D interpolation weights. More... | |
void | interpweights (VectorView itw, const GridPos &tr, const GridPos &tc) |
Red 2D interpolation weights. More... | |
void | interpweights (VectorView itw, const GridPos &tp, const GridPos &tr, const GridPos &tc) |
Red 3D interpolation weights. More... | |
void | interpweights (VectorView itw, const GridPos &tb, const GridPos &tp, const GridPos &tr, const GridPos &tc) |
Red 4D interpolation weights. More... | |
void | interpweights (VectorView itw, const GridPos &ts, const GridPos &tb, const GridPos &tp, const GridPos &tr, const GridPos &tc) |
Red 5D interpolation weights. More... | |
void | interpweights (VectorView itw, const GridPos &tv, const GridPos &ts, const GridPos &tb, const GridPos &tp, const GridPos &tr, const GridPos &tc) |
Red 6D interpolation weights. More... | |
Numeric | interp (ConstVectorView itw, ConstVectorView a, const GridPos &tc) |
Red 1D Interpolate. More... | |
Numeric | interp (ConstVectorView itw, ConstMatrixView a, const GridPos &tr, const GridPos &tc) |
Red 2D Interpolate. More... | |
Numeric | interp (ConstVectorView itw, ConstTensor3View a, const GridPos &tp, const GridPos &tr, const GridPos &tc) |
Red 3D Interpolate. More... | |
Numeric | interp (ConstVectorView itw, ConstTensor4View a, const GridPos &tb, const GridPos &tp, const GridPos &tr, const GridPos &tc) |
Red 4D Interpolate. More... | |
Numeric | interp (ConstVectorView itw, ConstTensor5View a, const GridPos &ts, const GridPos &tb, const GridPos &tp, const GridPos &tr, const GridPos &tc) |
Red 5D Interpolate. More... | |
Numeric | interp (ConstVectorView itw, ConstTensor6View a, const GridPos &tv, const GridPos &ts, const GridPos &tb, const GridPos &tp, const GridPos &tr, const GridPos &tc) |
Red 6D Interpolate. More... | |
void | interpweights (MatrixView itw, const ArrayOfGridPos &cgp) |
Compute 1D interpolation weights. More... | |
void | interpweights (MatrixView itw, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Compute 2D interpolation weights for a sequence of positions. More... | |
void | interpweights (MatrixView itw, const ArrayOfGridPos &pgp, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Compute 3D interpolation weights for a sequence of positions. More... | |
void | interpweights (MatrixView itw, const ArrayOfGridPos &bgp, const ArrayOfGridPos &pgp, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Compute 4D interpolation weights for a sequence of positions. More... | |
void | interpweights (MatrixView itw, const ArrayOfGridPos &sgp, const ArrayOfGridPos &bgp, const ArrayOfGridPos &pgp, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Compute 5D interpolation weights for a sequence of positions. More... | |
void | interpweights (MatrixView itw, const ArrayOfGridPos &vgp, const ArrayOfGridPos &sgp, const ArrayOfGridPos &bgp, const ArrayOfGridPos &pgp, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Compute 6D interpolation weights for a sequence of positions. More... | |
void | interp (VectorView ia, ConstMatrixView itw, ConstVectorView a, const ArrayOfGridPos &cgp) |
Interpolate 1D field. More... | |
void | interp (VectorView ia, ConstMatrixView itw, ConstMatrixView a, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Interpolate 2D field to a sequence of positions. More... | |
void | interp (VectorView ia, ConstMatrixView itw, ConstTensor3View a, const ArrayOfGridPos &pgp, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Interpolate 3D field to a sequence of positions. More... | |
void | interp (VectorView ia, ConstMatrixView itw, ConstTensor4View a, const ArrayOfGridPos &bgp, const ArrayOfGridPos &pgp, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Interpolate 4D field to a sequence of positions. More... | |
void | interp (VectorView ia, ConstMatrixView itw, ConstTensor5View a, const ArrayOfGridPos &sgp, const ArrayOfGridPos &bgp, const ArrayOfGridPos &pgp, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Interpolate 5D field to a sequence of positions. More... | |
void | interp (VectorView ia, ConstMatrixView itw, ConstTensor6View a, const ArrayOfGridPos &vgp, const ArrayOfGridPos &sgp, const ArrayOfGridPos &bgp, const ArrayOfGridPos &pgp, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Interpolate 6D field to a sequence of positions. More... | |
void | interpweights (Tensor3View itw, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Compute 2D interpolation weights for an entire field. More... | |
void | interpweights (Tensor4View itw, const ArrayOfGridPos &pgp, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Compute 3D interpolation weights for an entire field. More... | |
void | interpweights (Tensor5View itw, const ArrayOfGridPos &bgp, const ArrayOfGridPos &pgp, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Compute 4D interpolation weights for an entire field. More... | |
void | interpweights (Tensor6View itw, const ArrayOfGridPos &sgp, const ArrayOfGridPos &bgp, const ArrayOfGridPos &pgp, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Compute 5D interpolation weights for an entire field. More... | |
void | interpweights (Tensor7View itw, const ArrayOfGridPos &vgp, const ArrayOfGridPos &sgp, const ArrayOfGridPos &bgp, const ArrayOfGridPos &pgp, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Compute 6D interpolation weights for an entire field. More... | |
void | interp (MatrixView ia, ConstTensor3View itw, ConstMatrixView a, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Interpolate 2D field to another 2D field. More... | |
void | interp (Tensor3View ia, ConstTensor4View itw, ConstTensor3View a, const ArrayOfGridPos &pgp, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Interpolate 3D field to another 3D field. More... | |
void | interp (Tensor4View ia, ConstTensor5View itw, ConstTensor4View a, const ArrayOfGridPos &bgp, const ArrayOfGridPos &pgp, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Interpolate 4D field to another 4D field. More... | |
void | interp (Tensor5View ia, ConstTensor6View itw, ConstTensor5View a, const ArrayOfGridPos &sgp, const ArrayOfGridPos &bgp, const ArrayOfGridPos &pgp, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Interpolate 5D field to another 5D field. More... | |
void | interp (Tensor6View ia, ConstTensor7View itw, ConstTensor6View a, const ArrayOfGridPos &vgp, const ArrayOfGridPos &sgp, const ArrayOfGridPos &bgp, const ArrayOfGridPos &pgp, const ArrayOfGridPos &rgp, const ArrayOfGridPos &cgp) |
Interpolate 6D field to another 6D field. More... | |
Numeric | interp_poly (ConstVectorView x, ConstVectorView y, const Numeric &x_i, const GridPos &gp) |
Polynomial interpolation. More... | |
void | polint (Numeric &y_int, Numeric &dy_int, ConstVectorView xa, ConstVectorView ya, const Index &n, const Numeric &x) |
Polynomial interpolation. More... | |
Variables | |
const Numeric | FD_TOL = 1.5e-3 |
The maximum difference from 1 that we allow for a sum check. More... | |
Interpolation routines.
There are no general single-step interpolation functions in ARTS. Rather, there are a set of useful utility functions that can be used to achieve interpolation. Roughly, you can separate these into functions determining grid-position Arrays, functions determining interpolation weight Tensors, and functions applying the interpolation.
Doing an interpolation requires a chain of function calls:
Definition in file interpolation.cc.
#define LOOPIT | ( | x | ) | for (const Numeric* x = &t##x.fd[1]; x >= &t##x.fd[0]; --x) |
Macro for interpolation weight loops.
We use the macro LOOPIT to make the notation for the nested for loops in the interpweights functions more concise, and to avoid typing errors.
Should resolve to something like:
for ( const Numeric* p=&tp.fd[1]; p>=&tp.fd[0]; –p )
Definition at line 85 of file interpolation.cc.
Referenced by interpweights().
fractional_gp
Returns the complete fractional grid position.
The fractional grid position is the sum of grid index and fraction distance, and is not an integer value.
gp | Input: Grid position structure. |
Definition at line 492 of file interpolation.cc.
References GridPos::fd, and GridPos::idx.
Referenced by is_gp_inside_cloudbox(), iyInterpCloudboxField(), mcPathTraceRadar(), ppath_calc(), and ppath_start_stepping().
void gp4length1grid | ( | ArrayOfGridPos & | gp | ) |
Grid position matching a grid of length 1.
The function sets gp to the expected values if there would exist a grid of length 1.
Grids of length 1 are normally not allowed, but the jacobian part makes use of such grids to flag a completely flat field in the diemsnion of concern.
Definition at line 636 of file interpolation.cc.
References i, and Array< base >::nelem().
Referenced by diy_from_path_to_rgrids(), diy_from_pos_to_rgrids(), and get_gp_rq_to_atmgrids().
void gridpos | ( | ArrayOfGridPos & | gp, |
ConstVectorView | old_grid, | ||
ConstVectorView | new_grid, | ||
const Numeric & | extpolfac | ||
) |
Set up a grid position Array.
This is the function to find the position in the original grid and set the fd for the linear interpolation case.
The old grid has to be strictly sorted. It can be in ascending or descending order. But there must not be any duplicate values. Furthermore, the old grid must contain at least two points.
The new grid doesn't have to be sorted, but the function will be faster if it is sorted or mostly sorted. It is ok if the new grid contains only 1 point.
The beauty is, that this is all it needs to do also interpolation in higher dimensions: You just have to call gridpos for all the dimensions that you want to interpolate.
Note also, that for this step you do not need the field itself at all!
The new grid has basically to be inside the range covered by old grid, but some margins are given for practical reasons. For higher flexibility, a selectable extrapolation is allowed. The allowed extrapolation is given in fractions of the distance between the lowermost two points for extrapolation beyond the lower grid limit and the distance between the uppermost two points for extrapolation beyond the upper grid limit, respectively. For example, if extpolfac is set to 0.5 an extrapolation of half the distance between two outermost points at the respective edge of the grid is allowed. In this case, if the old grid is given as [0, 1, ... , 3, 3.4] the new grid can be extended down to -0.5 and up to 3.6.
0.5 is the default value for extpolfac. Normally, you should just use the function with 3 arguments, which means that the default value will be used.
If a new grid point is exactly on top of an original grid point, then the returned gp.idx is guaranteed to point exactly at this point, so that gp.fd[0] = 0. The only exception from this rule is if the point happens to be the last point in the original grid. In that case gp.idx will point to the original grid point below.
Furthermore, you are guaranteed that for the ascending old grid case: old_grid[tgp.idx]<=tng || tgp.idx==0 And for the descending old grid case: old_grid[tgp.idx]>=tng || tgp.idx==0
gp | Grid position Array. |
old_grid | The original grid. |
new_grid | The new grid where we want to have the interpolated values. |
extpolfac | Extrapolation factor. Has a default value of 0.5. You should normally not specify this parameter! |
Definition at line 156 of file interpolation.cc.
References GridPos::fd, GridPos::idx, is_decreasing(), is_increasing(), is_size(), and ConstVectorView::nelem().
Referenced by abs_lookupSetup(), abs_vecTransform(), antenna1d_matrix(), antenna2d_interp_response(), AntennaConstantGaussian1D(), atm_fields_compactAddSpecies(), cloud_ppath_update3D(), cloudbox_field_monoOptimizeReverse(), cloudbox_fieldSetClearsky(), complex_n_interp(), defocusing_general_sub(), diy_from_path_to_rgrids(), diy_from_pos_to_rgrids(), doit_scat_fieldCalcLimb(), ext_matTransform(), FouComp_1ScatElem(), get_gp_atmgrids_to_rq(), get_gp_atmsurf_to_rq(), get_gp_rq_to_atmgrids(), get_refr_index_1d(), get_refr_index_2d(), get_refr_index_3d(), gridpos(), gridpos_poly(), interp_cloud_coeff1D(), InterpGriddedField2ToPosition(), SLIData2::interpolate(), interpolate_scat_angle(), InterpSurfaceFieldToPosition(), interpTArray(), jacobianCalcPointingZaInterp(), MCIPA(), opt_prop_1ScatElem(), opt_prop_sptFromData(), opt_prop_sptFromMonoData(), opt_prop_sptFromScat_data(), p2gridpos(), pha_mat_1ScatElem(), pha_mat_sptFromData(), pha_mat_sptFromDataDOITOpt(), pha_mat_sptFromMonoData(), pha_mat_sptFromScat_data(), pha_matTransform(), pnd_fieldCalcFrompnd_field_raw(), pos2refell_r(), pos2true_latlon(), ppath_calc(), ppath_start_3d(), ppath_start_stepping(), rte_pos2gridpos(), ScatSpeciesMerge(), specular_losCalc(), surface_complex_refr_indexFromGriddedField5(), surface_reflectivityFromGriddedField6(), surface_scalar_reflectivityFromGriddedField4(), surface_typeInterpTypeMask(), test01(), test04(), test05(), test06(), test07(), z_at_lat_2d(), z_at_latlon(), and za_gridOpt().
void gridpos | ( | GridPos & | gp, |
ConstVectorView | old_grid, | ||
const Numeric & | new_grid, | ||
const Numeric & | extpolfac | ||
) |
gridpos
Creates a grid position structure.
This is a gateway to the function for arrays of grid positions, to be used for e.g. "red interpolation".
gp | The GridPos structure. |
old_grid | The original grid. |
new_grid | The position where we want to have the interpolated value. |
extpolfac | Extrapolation factor. Default value is 0.5, which means that extrapolation of half of the last grid distance is allowed. You don't have to specify this. |
Definition at line 424 of file interpolation.cc.
References gridpos(), and gridpos_copy().
gridpos2gridrange
Determines which grid range that is of interest for a given grid position.
The purpose of the function is to determine which two grid values that surround the given point. The index of the lower grid value is returned.
For a point exactly on a grid value it is not clear if it is the range below or above that is of interest. The input argument upward is used to resolve such cases, where upward == 1 means that it is the range above that is of interest.
gp | Grid position structure. |
upwards | Direction of interest, see above. |
Definition at line 697 of file interpolation.cc.
References GridPos::fd, and GridPos::idx.
Referenced by plevel_slope_2d(), plevel_slope_3d(), ppath_start_1d(), ppath_start_2d(), and ppath_start_3d().
void gridpos_1to1 | ( | ArrayOfGridPos & | gp, |
ConstVectorView | grid | ||
) |
gridpos_1to1
Creates a position array for a 1-to-1 mapping.
This function treats interpolaton back to the same grid. The function matches: gridpos( gp, grid, grid ), but is faster.
The function gives gp correct size.
old_grid | The grid. |
Definition at line 449 of file interpolation.cc.
References i, n, and ConstVectorView::nelem().
Referenced by rte_pos2gridpos().
void gridpos_check_fd | ( | GridPos & | gp | ) |
gridpos_check_fd
Checks that the fractional distances have a value in the range [0,1].
This function can be used when you are sure that the fractional distances have been calculated correctly, but the limited numerical precision can give values below 0 or above 1.
gp | Grid position structure. |
Definition at line 509 of file interpolation.cc.
References GridPos::fd, and FD_TOL.
Referenced by ppath_end_1d(), ppath_end_2d(), ppath_end_3d(), and ppath_start_stepping().
gridpos_copy
Copies the content of a GridPos structure.
gp_new | The GridPos structure to be filled. |
gp_old | The GridPos structure to be copied. |
Definition at line 473 of file interpolation.cc.
References GridPos::fd, and GridPos::idx.
Referenced by get_ppath_cloudvars(), get_stepwise_scattersky_source(), gridpos(), interp_atmfield_by_gp(), interp_atmsurface_by_gp(), interp_cloudfield_gp2itw(), pha_mat_sptFromMonoData(), ppath_append(), ppath_copy(), ppath_start_stepping(), ppathFromRtePos2(), z_at_lat_2d(), and z_at_latlon().
gridpos_force_end_fd
Forces that the fractional distances is set to OK with respect to interpolation.
This function can be called when it is known that a position is exactly on a grid point. The fractional distance of the grid position is then 0 or 1, but rounding errors can give a slightly deviating value.
The fractional distance is set to 0, beside for end point of the complete grid range where is set to 1.
The difference between this function and gridpos_check_fd is that this function is only applicable for end points, while the other function can be called for every point.
gp | Grid position structure. |
n | Number of points of the grid. |
Definition at line 555 of file interpolation.cc.
References GridPos::fd, and GridPos::idx.
Referenced by ppath_end_1d(), ppath_end_2d(), ppath_end_3d(), and ppath_start_2d().
gridpos_upperend_check
A function to handle the upper end after shifts of grid positions
The function ensures that a shift of grid positions not results in a too high gp.idx. That happens for positions exactly at the upper cloudbox boundaries.
gp | Grid position structure. |
ie | Index of upper limit, shifted |
Definition at line 589 of file interpolation.cc.
References GridPos::fd, and GridPos::idx.
Referenced by cloud_atm_vars_by_gp(), cloud_ppath_update3D(), interp_cloud_coeff1D(), interp_cloudfield_gp2itw(), and iyInterpCloudboxField().
void gridpos_upperend_check | ( | ArrayOfGridPos & | gp, |
const Index & | ie | ||
) |
gridpos_upperend_check
A function to handle the upper end after shifts of grid positions
The function ensures that a shift of grid positions not results in a too high gp.idx. That happens for positions exactly at the upper cloudbox boundaries.
gp | Array of grid position structure. |
ie | Index of upper limit, shifted |
Definition at line 612 of file interpolation.cc.
References i, and Array< base >::nelem().
Numeric interp | ( | ConstVectorView | itw, |
ConstVectorView | a, | ||
const GridPos & | tc | ||
) |
Red 1D Interpolate.
"Red" interpolation returns just a scalar.
The dimension of itw must be consistent with the dimension of the interpolation (2^n).
itw | Interpolation weights. |
a | The field to interpolate. |
tc | The grid position for the column dimension. |
Definition at line 970 of file interpolation.cc.
References is_same_within_epsilon(), is_size(), and ConstVectorView::sum().
Referenced by abs_lookupSetup(), abs_lookupTestAccMC(), abs_vecTransform(), antenna1d_matrix(), antenna2d_interp_response(), AntennaConstantGaussian1D(), atm_fields_compactAddSpecies(), AtmFieldPRegrid(), cloud_ppath_update3D(), cloudbox_field_monoOptimizeReverse(), cloudbox_fieldSetClearsky(), complex_n_interp(), defocusing_general_sub(), doit_scat_fieldCalcLimb(), ext_matTransform(), XsecRecord::Extract(), FouComp_1ScatElem(), get_refr_index_1d(), get_refr_index_2d(), get_refr_index_3d(), get_stepwise_scattersky_source(), GriddedFieldLatLonRegrid(), GriddedFieldPRegrid(), GriddedFieldZToPRegrid(), interp_atmfield_by_itw(), interp_atmsurface_by_itw(), interp_cloud_coeff1D(), InterpGriddedField2ToPosition(), interpolate_scat_angle(), interpTArray(), itw2p(), iyIndependentBeamApproximation(), iyInterpCloudboxField(), jacobianCalcFreqShift(), jacobianCalcFreqStretch(), jacobianCalcPointingZaInterp(), MagFieldsCalc(), MagFieldsFromAltitudeRawCalc(), LineShape::Model::Model(), opt_prop_1ScatElem(), opt_prop_sptFromData(), opt_prop_sptFromMonoData(), opt_prop_sptFromScat_data(), pha_mat_1ScatElem(), pha_mat_sptFromData(), pha_mat_sptFromDataDOITOpt(), pha_mat_sptFromMonoData(), pha_mat_sptFromScat_data(), pha_matTransform(), plevel_slope_3d(), pnd_fieldCalcFrompnd_field_raw(), pos2true_latlon(), ppath_start_stepping(), regrid_atmfield_by_gp(), regrid_atmfield_by_gp_oem(), regrid_atmsurf_by_gp(), regrid_atmsurf_by_gp_oem(), rte_pos2gridpos(), scat_dataCalc(), scat_dataReduceT(), ScatSpeciesMerge(), SingleCalculatePartitionFctFromData(), SingleCalculatePartitionFctFromData_dT(), LineShape::SingleSpeciesModel::SingleSpeciesModel(), specular_losCalc(), surface_complex_refr_indexFromGriddedField5(), surface_reflectivityFromGriddedField6(), surface_scalar_reflectivityFromGriddedField4(), test01(), test04(), test05(), test06(), test07(), test08(), WindFieldsCalc(), z_at_lat_2d(), z_at_latlon(), and za_gridOpt().
Numeric interp | ( | ConstVectorView | itw, |
ConstMatrixView | a, | ||
const GridPos & | tr, | ||
const GridPos & | tc | ||
) |
Red 2D Interpolate.
"Red" interpolation returns just a scalar.
The dimension of itw must be consistent with the dimension of the interpolation (2^n).
itw | Interpolation weights. |
a | The field to interpolate. |
tr | The grid position for the row dimension. |
tc | The grid position for the column dimension. |
Definition at line 1007 of file interpolation.cc.
References is_same_within_epsilon(), is_size(), r, and ConstVectorView::sum().
Numeric interp | ( | ConstVectorView | itw, |
ConstTensor3View | a, | ||
const GridPos & | tp, | ||
const GridPos & | tr, | ||
const GridPos & | tc | ||
) |
Red 3D Interpolate.
"Red" interpolation returns just a scalar.
The dimension of itw must be consistent with the dimension of the interpolation (2^n).
itw | Interpolation weights. |
a | The field to interpolate. |
tp | The grid position for the page dimension. |
tr | The grid position for the row dimension. |
tc | The grid position for the column dimension. |
Definition at line 1049 of file interpolation.cc.
References is_same_within_epsilon(), is_size(), r, and ConstVectorView::sum().
Numeric interp | ( | ConstVectorView | itw, |
ConstTensor4View | a, | ||
const GridPos & | tb, | ||
const GridPos & | tp, | ||
const GridPos & | tr, | ||
const GridPos & | tc | ||
) |
Red 4D Interpolate.
"Red" interpolation returns just a scalar.
The dimension of itw must be consistent with the dimension of the interpolation (2^n).
itw | Interpolation weights. |
a | The field to interpolate. |
tb | The grid position for the book dimension. |
tp | The grid position for the page dimension. |
tr | The grid position for the row dimension. |
tc | The grid position for the column dimension. |
Definition at line 1094 of file interpolation.cc.
References is_same_within_epsilon(), is_size(), r, and ConstVectorView::sum().
Numeric interp | ( | ConstVectorView | itw, |
ConstTensor5View | a, | ||
const GridPos & | ts, | ||
const GridPos & | tb, | ||
const GridPos & | tp, | ||
const GridPos & | tr, | ||
const GridPos & | tc | ||
) |
Red 5D Interpolate.
"Red" interpolation returns just a scalar.
The dimension of itw must be consistent with the dimension of the interpolation (2^n).
itw | Interpolation weights. |
a | The field to interpolate. |
ts | The grid position for the shelf dimension. |
tb | The grid position for the book dimension. |
tp | The grid position for the page dimension. |
tr | The grid position for the row dimension. |
tc | The grid position for the column dimension. |
Definition at line 1143 of file interpolation.cc.
References is_same_within_epsilon(), is_size(), r, and ConstVectorView::sum().
Numeric interp | ( | ConstVectorView | itw, |
ConstTensor6View | a, | ||
const GridPos & | tv, | ||
const GridPos & | ts, | ||
const GridPos & | tb, | ||
const GridPos & | tp, | ||
const GridPos & | tr, | ||
const GridPos & | tc | ||
) |
Red 6D Interpolate.
"Red" interpolation returns just a scalar.
The dimension of itw must be consistent with the dimension of the interpolation (2^n).
itw | Interpolation weights. |
a | The field to interpolate. |
tv | The grid position for the vitrine dimension. |
ts | The grid position for the shelf dimension. |
tb | The grid position for the book dimension. |
tp | The grid position for the page dimension. |
tr | The grid position for the row dimension. |
tc | The grid position for the column dimension. |
Definition at line 1199 of file interpolation.cc.
References is_same_within_epsilon(), is_size(), r, and ConstVectorView::sum().
void interp | ( | VectorView | ia, |
ConstMatrixView | itw, | ||
ConstVectorView | a, | ||
const ArrayOfGridPos & | cgp | ||
) |
Interpolate 1D field.
For this 1D case there is no distinction between "blue" and "green" type interpolation.
The output vector ia must have the same length as the grid position vector cgp. And the dimension of itw must be consistent with this.
ia | Vector containing the interpolated field values. |
itw | Interpolation weights. |
a | The field to interpolate. |
cgp | The grid position Array for the column dimension. |
Definition at line 1604 of file interpolation.cc.
References i, is_same_within_epsilon(), is_size(), joker, n, and Array< base >::nelem().
void interp | ( | VectorView | ia, |
ConstMatrixView | itw, | ||
ConstMatrixView | a, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Interpolate 2D field to a sequence of positions.
This performs a "blue" type interpolation of the field, that means that the grid position Arrays are interpreted as defining a sequence of positions. ALL GRID POSITION ARRAYS MUST HAVE THE SAME LENGTH!
The output vector ia also must have the same length. And the dimension of itw must be consistent with this.
This function can be easily distinguished from the other interpolation function (that creates an entire field of interpolated values), because of the dimension of ia and itw.
ia | Vector containing the interpolated field values. |
itw | Interpolation weights. |
a | The field to interpolate. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 1660 of file interpolation.cc.
References i, is_same_within_epsilon(), is_size(), joker, n, Array< base >::nelem(), and r.
void interp | ( | VectorView | ia, |
ConstMatrixView | itw, | ||
ConstTensor3View | a, | ||
const ArrayOfGridPos & | pgp, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Interpolate 3D field to a sequence of positions.
This performs a "blue" type interpolation of the field, that means that the grid position Arrays are interpreted as defining a sequence of positions. ALL GRID POSITION ARRAYS MUST HAVE THE SAME LENGTH!
The output vector ia also must have the same length. And the dimension of itw must be consistent with this.
This function can be easily distinguished from the other interpolation function (that creates an entire field of interpolated values), because of the dimension of ia and itw.
ia | Vector containing the interpolated field values. |
itw | Interpolation weights. |
a | The field to interpolate. |
pgp | The grid position Array for the page dimension. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 1720 of file interpolation.cc.
References i, is_same_within_epsilon(), is_size(), joker, n, Array< base >::nelem(), and r.
void interp | ( | VectorView | ia, |
ConstMatrixView | itw, | ||
ConstTensor4View | a, | ||
const ArrayOfGridPos & | bgp, | ||
const ArrayOfGridPos & | pgp, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Interpolate 4D field to a sequence of positions.
This performs a "blue" type interpolation of the field, that means that the grid position Arrays are interpreted as defining a sequence of positions. ALL GRID POSITION ARRAYS MUST HAVE THE SAME LENGTH!
The output vector ia also must have the same length. And the dimension of itw must be consistent with this.
This function can be easily distinguished from the other interpolation function (that creates an entire field of interpolated values), because of the dimension of ia and itw.
ia | Vector containing the interpolated field values. |
itw | Interpolation weights. |
a | The field to interpolate. |
bgp | The grid position Array for the book dimension. |
pgp | The grid position Array for the page dimension. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 1785 of file interpolation.cc.
References i, is_same_within_epsilon(), is_size(), joker, n, Array< base >::nelem(), and r.
void interp | ( | VectorView | ia, |
ConstMatrixView | itw, | ||
ConstTensor5View | a, | ||
const ArrayOfGridPos & | sgp, | ||
const ArrayOfGridPos & | bgp, | ||
const ArrayOfGridPos & | pgp, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Interpolate 5D field to a sequence of positions.
This performs a "blue" type interpolation of the field, that means that the grid position Arrays are interpreted as defining a sequence of positions. ALL GRID POSITION ARRAYS MUST HAVE THE SAME LENGTH!
The output vector ia also must have the same length. And the dimension of itw must be consistent with this.
This function can be easily distinguished from the other interpolation function (that creates an entire field of interpolated values), because of the dimension of ia and itw.
ia | Vector containing the interpolated field values. |
itw | Interpolation weights. |
a | The field to interpolate. |
sgp | The grid position Array for the shelf dimension. |
bgp | The grid position Array for the book dimension. |
pgp | The grid position Array for the page dimension. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 1856 of file interpolation.cc.
References i, is_same_within_epsilon(), is_size(), joker, n, Array< base >::nelem(), and r.
void interp | ( | VectorView | ia, |
ConstMatrixView | itw, | ||
ConstTensor6View | a, | ||
const ArrayOfGridPos & | vgp, | ||
const ArrayOfGridPos & | sgp, | ||
const ArrayOfGridPos & | bgp, | ||
const ArrayOfGridPos & | pgp, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Interpolate 6D field to a sequence of positions.
This performs a "blue" type interpolation of the field, that means that the grid position Arrays are interpreted as defining a sequence of positions. ALL GRID POSITION ARRAYS MUST HAVE THE SAME LENGTH!
The output vector ia also must have the same length. And the dimension of itw must be consistent with this.
This function can be easily distinguished from the other interpolation function (that creates an entire field of interpolated values), because of the dimension of ia and itw.
ia | Vector containing the interpolated field values. |
itw | Interpolation weights. |
a | The field to interpolate. |
vgp | The grid position Array for the vitrine dimension. |
sgp | The grid position Array for the shelf dimension. |
bgp | The grid position Array for the book dimension. |
pgp | The grid position Array for the page dimension. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 1936 of file interpolation.cc.
References i, is_same_within_epsilon(), is_size(), joker, n, Array< base >::nelem(), and r.
void interp | ( | MatrixView | ia, |
ConstTensor3View | itw, | ||
ConstMatrixView | a, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Interpolate 2D field to another 2D field.
This performs a "green" type interpolation of the field, that means that the grid position Arrays are interpreted as defining the grids for the interpolated field.
This function can be easily distinguished from the other interpolation function (that creates a sequence of interpolated values), because of the dimension of ia and itw.
The size of ia and itw in all dimensions must be consistent with the grid position Arrays.
ia | Interpolated field. |
itw | Interpolation weights. |
a | The field to interpolate. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 2338 of file interpolation.cc.
References is_same_within_epsilon(), is_size(), joker, Array< base >::nelem(), and r.
void interp | ( | Tensor3View | ia, |
ConstTensor4View | itw, | ||
ConstTensor3View | a, | ||
const ArrayOfGridPos & | pgp, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Interpolate 3D field to another 3D field.
This performs a "green" type interpolation of the field, that means that the grid position Arrays are interpreted as defining the grids for the interpolated field.
This function can be easily distinguished from the other interpolation function (that creates a sequence of interpolated values), because of the dimension of ia and itw.
The size of ia and itw in all dimensions must be consistent with the grid position Arrays.
ia | Interpolated field. |
itw | Interpolation weights. |
a | The field to interpolate. |
pgp | The grid position Array for the page dimension. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 2404 of file interpolation.cc.
References is_same_within_epsilon(), is_size(), joker, Array< base >::nelem(), and r.
void interp | ( | Tensor4View | ia, |
ConstTensor5View | itw, | ||
ConstTensor4View | a, | ||
const ArrayOfGridPos & | bgp, | ||
const ArrayOfGridPos & | pgp, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Interpolate 4D field to another 4D field.
This performs a "green" type interpolation of the field, that means that the grid position Arrays are interpreted as defining the grids for the interpolated field.
This function can be easily distinguished from the other interpolation function (that creates a sequence of interpolated values), because of the dimension of ia and itw.
The size of ia and itw in all dimensions must be consistent with the grid position Arrays.
ia | Interpolated field. |
itw | Interpolation weights. |
a | The field to interpolate. |
bgp | The grid position Array for the book dimension. |
pgp | The grid position Array for the page dimension. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 2476 of file interpolation.cc.
References is_same_within_epsilon(), is_size(), joker, Array< base >::nelem(), and r.
void interp | ( | Tensor5View | ia, |
ConstTensor6View | itw, | ||
ConstTensor5View | a, | ||
const ArrayOfGridPos & | sgp, | ||
const ArrayOfGridPos & | bgp, | ||
const ArrayOfGridPos & | pgp, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Interpolate 5D field to another 5D field.
This performs a "green" type interpolation of the field, that means that the grid position Arrays are interpreted as defining the grids for the interpolated field.
This function can be easily distinguished from the other interpolation function (that creates a sequence of interpolated values), because of the dimension of ia and itw.
The size of ia and itw in all dimensions must be consistent with the grid position Arrays.
ia | Interpolated field. |
itw | Interpolation weights. |
a | The field to interpolate. |
sgp | The grid position Array for the shelf dimension. |
bgp | The grid position Array for the book dimension. |
pgp | The grid position Array for the page dimension. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 2552 of file interpolation.cc.
References is_same_within_epsilon(), is_size(), joker, Array< base >::nelem(), ns, and r.
void interp | ( | Tensor6View | ia, |
ConstTensor7View | itw, | ||
ConstTensor6View | a, | ||
const ArrayOfGridPos & | vgp, | ||
const ArrayOfGridPos & | sgp, | ||
const ArrayOfGridPos & | bgp, | ||
const ArrayOfGridPos & | pgp, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Interpolate 6D field to another 6D field.
This performs a "green" type interpolation of the field, that means that the grid position Arrays are interpreted as defining the grids for the interpolated field.
This function can be easily distinguished from the other interpolation function (that creates a sequence of interpolated values), because of the dimension of ia and itw.
The size of ia and itw in all dimensions must be consistent with the grid position Arrays.
ia | Interpolated field. |
itw | Interpolation weights. |
a | The field to interpolate. |
vgp | The grid position Array for the vitrine dimension. |
sgp | The grid position Array for the shelf dimension. |
bgp | The grid position Array for the book dimension. |
pgp | The grid position Array for the page dimension. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 2639 of file interpolation.cc.
References is_same_within_epsilon(), is_size(), joker, Array< base >::nelem(), ns, and r.
Numeric interp_poly | ( | ConstVectorView | x, |
ConstVectorView | y, | ||
const Numeric & | x_i, | ||
const GridPos & | gp | ||
) |
Polynomial interpolation.
This function performs a polynomial interpolation. Given two vectors x, y the value of y corresponding to x_i is returned. The function uses the common gridpositions (which are also used for linear interpolation).
x | original grid |
y | values corresponding to x-values |
x_i | a value x, for which the corresponding y value is requested |
gp | grid position of x_i in relation to x |
Definition at line 2723 of file interpolation.cc.
References arts_exit(), GridPos::fd, GridPos::idx, ConstVectorView::nelem(), and polint().
Referenced by doit_scat_fieldCalcLimb(), interp_cloud_coeff1D(), test07(), and za_gridOpt().
void interpweights | ( | VectorView | itw, |
const GridPos & | tc | ||
) |
Red 1D interpolation weights.
"Red" interpolation returns just a scalar, so the weights are stored in a Vector.
The length of itw must be consistent with the dimension of the field to be interpolated (2^n).
itw | Interpolation weights. |
tc | The grid position for the column dimension. |
Definition at line 741 of file interpolation.cc.
References is_size(), and LOOPIT.
Referenced by abs_lookupSetup(), abs_lookupTestAccMC(), abs_vecTransform(), antenna1d_matrix(), antenna2d_interp_response(), AntennaConstantGaussian1D(), atm_fields_compactAddSpecies(), AtmFieldPRegridHelper(), clear_rt_vars_at_gp(), cloud_atm_vars_by_gp(), cloud_ppath_update3D(), cloudbox_field_monoOptimizeReverse(), cloudbox_fieldSetClearsky(), complex_n_interp(), defocusing_general_sub(), doit_scat_fieldCalcLimb(), ext_matTransform(), XsecRecord::Extract(), FouComp_1ScatElem(), get_ppath_atmvars(), get_refr_index_1d(), get_refr_index_2d(), get_refr_index_3d(), get_stepwise_scattersky_source(), GriddedFieldLatLonRegridHelper(), GriddedFieldPRegridHelper(), GriddedFieldZToPRegridHelper(), interp_atmfield_gp2itw(), interp_atmsurface_gp2itw(), interp_cloud_coeff1D(), interp_cloudfield_gp2itw(), InterpGriddedField2ToPosition(), SLIData2::interpolate(), interpolate_scat_angle(), interpTArray(), iyInterpCloudboxField(), jacobianCalcFreqShift(), jacobianCalcFreqStretch(), jacobianCalcPointingZaInterp(), MagFieldsCalc(), MagFieldsFromAltitudeRawCalc(), opt_prop_1ScatElem(), opt_prop_sptFromData(), opt_prop_sptFromMonoData(), opt_prop_sptFromScat_data(), pha_mat_1ScatElem(), pha_mat_sptFromData(), pha_mat_sptFromDataDOITOpt(), pha_mat_sptFromMonoData(), pha_mat_sptFromScat_data(), pha_matTransform(), plevel_slope_3d(), pnd_fieldCalcFrompnd_field_raw(), pos2true_latlon(), ppath_start_stepping(), regrid_atmfield_by_gp(), regrid_atmfield_by_gp_oem(), regrid_atmsurf_by_gp(), regrid_atmsurf_by_gp_oem(), rte_pos2gridpos(), scat_dataCalc(), scat_dataReduceT(), ScatSpeciesMerge(), sensor_responseFillFgrid(), SingleCalculatePartitionFctFromData(), SingleCalculatePartitionFctFromData_dT(), specular_losCalc(), ssd_tinterp_parameters(), surface_complex_refr_indexFromGriddedField5(), surface_reflectivityFromGriddedField6(), surface_scalar_reflectivityFromGriddedField4(), test01(), test04(), test05(), test06(), test07(), test08(), WindFieldsCalc(), z_at_lat_2d(), z_at_latlon(), z_fieldFromHSE(), and za_gridOpt().
void interpweights | ( | VectorView | itw, |
const GridPos & | tr, | ||
const GridPos & | tc | ||
) |
Red 2D interpolation weights.
"Red" interpolation returns just a scalar, so the weights are stored in a Vector.
The length of itw must be consistent with the dimension of the field to be interpolated (2^n).
itw | Interpolation weights. |
tr | The grid position for the row dimension. |
tc | The grid position for the column dimension. |
Definition at line 796 of file interpolation.cc.
void interpweights | ( | VectorView | itw, |
const GridPos & | tp, | ||
const GridPos & | tr, | ||
const GridPos & | tc | ||
) |
Red 3D interpolation weights.
"Red" interpolation returns just a scalar, so the weights are stored in a Vector.
The length of itw must be consistent with the dimension of the field to be interpolated (2^n).
itw | Interpolation weights. |
tp | The grid position for the page dimension. |
tr | The grid position for the row dimension. |
tc | The grid position for the column dimension. |
Definition at line 824 of file interpolation.cc.
void interpweights | ( | VectorView | itw, |
const GridPos & | tb, | ||
const GridPos & | tp, | ||
const GridPos & | tr, | ||
const GridPos & | tc | ||
) |
Red 4D interpolation weights.
"Red" interpolation returns just a scalar, so the weights are stored in a Vector.
The length of itw must be consistent with the dimension of the field to be interpolated (2^n).
itw | Interpolation weights. |
tb | The grid position for the book dimension. |
tp | The grid position for the page dimension. |
tr | The grid position for the row dimension. |
tc | The grid position for the column dimension. |
Definition at line 857 of file interpolation.cc.
void interpweights | ( | VectorView | itw, |
const GridPos & | ts, | ||
const GridPos & | tb, | ||
const GridPos & | tp, | ||
const GridPos & | tr, | ||
const GridPos & | tc | ||
) |
Red 5D interpolation weights.
"Red" interpolation returns just a scalar, so the weights are stored in a Vector.
The length of itw must be consistent with the dimension of the field to be interpolated (2^n).
itw | Interpolation weights. |
ts | The grid position for the shelf dimension. |
tb | The grid position for the book dimension. |
tp | The grid position for the page dimension. |
tr | The grid position for the row dimension. |
tc | The grid position for the column dimension. |
Definition at line 893 of file interpolation.cc.
void interpweights | ( | VectorView | itw, |
const GridPos & | tv, | ||
const GridPos & | ts, | ||
const GridPos & | tb, | ||
const GridPos & | tp, | ||
const GridPos & | tr, | ||
const GridPos & | tc | ||
) |
Red 6D interpolation weights.
"Red" interpolation returns just a scalar, so the weights are stored in a Vector.
The length of itw must be consistent with the dimension of the field to be interpolated (2^n).
itw | Interpolation weights. |
tv | The grid position for the vitrine dimension. |
ts | The grid position for the shelf dimension. |
tb | The grid position for the book dimension. |
tp | The grid position for the page dimension. |
tr | The grid position for the row dimension. |
tc | The grid position for the column dimension. |
Definition at line 932 of file interpolation.cc.
void interpweights | ( | MatrixView | itw, |
const ArrayOfGridPos & | cgp | ||
) |
Compute 1D interpolation weights.
For this 1D case there is no distinction between "blue" and "green" type interpolation.
The dimensions of itw must be consistent with cgp.
Note that we still do not need the actual field for this step.
itw | Interpolation weights. |
cgp | The grid position Array for the column dimension. |
Definition at line 1257 of file interpolation.cc.
References i, is_size(), LOOPIT, n, and Array< base >::nelem().
void interpweights | ( | MatrixView | itw, |
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Compute 2D interpolation weights for a sequence of positions.
Compute the weights for a "blue" type interpolation of the field, that means that the grid position Arrays are interpreted as defining a sequence of positions. ALL GRID POSITION ARRAYS MUST HAVE THE SAME LENGTH!
The dimensions of itw must be also consistent with this.
Note that we still do not need the actual field for this step.
This function can be easily distinguished from the other interpweights function (for "green" interpolation), because the output is a Matrix, whereas in the other case it is a Tensor with one more dimension than there are input grid position Arrays.
itw | Interpolation weights. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 1326 of file interpolation.cc.
References i, is_size(), LOOPIT, n, Array< base >::nelem(), and r.
void interpweights | ( | MatrixView | itw, |
const ArrayOfGridPos & | pgp, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Compute 3D interpolation weights for a sequence of positions.
Compute the weights for a "blue" type interpolation of the field, that means that the grid position Arrays are interpreted as defining a sequence of positions. ALL GRID POSITION ARRAYS MUST HAVE THE SAME LENGTH!
The dimensions of itw must be also consistent with this.
Note that we still do not need the actual field for this step.
This function can be easily distinguished from the other interpweights function (for "green" interpolation), because the output is a Matrix, whereas in the other case it is a Tensor with one more dimension than there are input grid position Arrays.
itw | Interpolation weights. |
pgp | The grid position Array for the page dimension. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 1380 of file interpolation.cc.
References i, is_size(), LOOPIT, n, Array< base >::nelem(), and r.
void interpweights | ( | MatrixView | itw, |
const ArrayOfGridPos & | bgp, | ||
const ArrayOfGridPos & | pgp, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Compute 4D interpolation weights for a sequence of positions.
Compute the weights for a "blue" type interpolation of the field, that means that the grid position Arrays are interpreted as defining a sequence of positions. ALL GRID POSITION ARRAYS MUST HAVE THE SAME LENGTH!
The dimensions of itw must be also consistent with this.
Note that we still do not need the actual field for this step.
This function can be easily distinguished from the other interpweights function (for "green" interpolation), because the output is a Matrix, whereas in the other case it is a Tensor with one more dimension than there are input grid position Arrays.
itw | Interpolation weights. |
bgp | The grid position Array for the book dimension. |
pgp | The grid position Array for the page dimension. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 1431 of file interpolation.cc.
References i, is_size(), LOOPIT, n, Array< base >::nelem(), and r.
void interpweights | ( | MatrixView | itw, |
const ArrayOfGridPos & | sgp, | ||
const ArrayOfGridPos & | bgp, | ||
const ArrayOfGridPos & | pgp, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Compute 5D interpolation weights for a sequence of positions.
Compute the weights for a "blue" type interpolation of the field, that means that the grid position Arrays are interpreted as defining a sequence of positions. ALL GRID POSITION ARRAYS MUST HAVE THE SAME LENGTH!
The dimensions of itw must be also consistent with this.
Note that we still do not need the actual field for this step.
This function can be easily distinguished from the other interpweights function (for "green" interpolation), because the output is a Matrix, whereas in the other case it is a Tensor with one more dimension than there are input grid position Arrays.
itw | Interpolation weights. |
sgp | The grid position Array for the shelf dimension. |
bgp | The grid position Array for the book dimension. |
pgp | The grid position Array for the page dimension. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 1487 of file interpolation.cc.
References i, is_size(), LOOPIT, n, Array< base >::nelem(), and r.
void interpweights | ( | MatrixView | itw, |
const ArrayOfGridPos & | vgp, | ||
const ArrayOfGridPos & | sgp, | ||
const ArrayOfGridPos & | bgp, | ||
const ArrayOfGridPos & | pgp, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Compute 6D interpolation weights for a sequence of positions.
Compute the weights for a "blue" type interpolation of the field, that means that the grid position Arrays are interpreted as defining a sequence of positions. ALL GRID POSITION ARRAYS MUST HAVE THE SAME LENGTH!
The dimensions of itw must be also consistent with this.
Note that we still do not need the actual field for this step.
This function can be easily distinguished from the other interpweights function (for "green" interpolation), because the output is a Matrix, whereas in the other case it is a Tensor with one more dimension than there are input grid position Arrays.
itw | Interpolation weights. |
vgp | The grid position Array for the vitrine dimension. |
sgp | The grid position Array for the shelf dimension. |
bgp | The grid position Array for the book dimension. |
pgp | The grid position Array for the page dimension. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 1548 of file interpolation.cc.
References i, is_size(), LOOPIT, n, Array< base >::nelem(), and r.
void interpweights | ( | Tensor3View | itw, |
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Compute 2D interpolation weights for an entire field.
Compute the weights for a "green" type interpolation of the field, that means that the grid position Arrays are interpreted as defining the grids for the interpolated field.
The dimensions of itw must be consistent with this.
Note that we still do not need the actual field for this step.
This function can be easily distinguished from the other interpweights function (for "green" interpolation), because the output is a Tensor with one more dimension than the number of grid position Arrays.
itw | Interpolation weights |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 2021 of file interpolation.cc.
References is_size(), LOOPIT, Array< base >::nelem(), and r.
void interpweights | ( | Tensor4View | itw, |
const ArrayOfGridPos & | pgp, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Compute 3D interpolation weights for an entire field.
Compute the weights for a "green" type interpolation of the field, that means that the grid position Arrays are interpreted as defining the grids for the interpolated field.
The dimensions of itw must be consistent with this.
Note that we still do not need the actual field for this step.
This function can be easily distinguished from the other interpweights function (for "green" interpolation), because the output is a Tensor with one more dimension than the number of grid position Arrays.
itw | Interpolation weights |
pgp | The grid position Array for the page dimension. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 2079 of file interpolation.cc.
References is_size(), LOOPIT, Array< base >::nelem(), and r.
void interpweights | ( | Tensor5View | itw, |
const ArrayOfGridPos & | bgp, | ||
const ArrayOfGridPos & | pgp, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Compute 4D interpolation weights for an entire field.
Compute the weights for a "green" type interpolation of the field, that means that the grid position Arrays are interpreted as defining the grids for the interpolated field.
The dimensions of itw must be consistent with this.
Note that we still do not need the actual field for this step.
This function can be easily distinguished from the other interpweights function (for "green" interpolation), because the output is a Tensor with one more dimension than the number of grid position Arrays.
itw | Interpolation weights |
bgp | The grid position Array for the book dimension. |
pgp | The grid position Array for the page dimension. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 2134 of file interpolation.cc.
References is_size(), LOOPIT, Array< base >::nelem(), and r.
void interpweights | ( | Tensor6View | itw, |
const ArrayOfGridPos & | sgp, | ||
const ArrayOfGridPos & | bgp, | ||
const ArrayOfGridPos & | pgp, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Compute 5D interpolation weights for an entire field.
Compute the weights for a "green" type interpolation of the field, that means that the grid position Arrays are interpreted as defining the grids for the interpolated field.
The dimensions of itw must be consistent with this.
Note that we still do not need the actual field for this step.
This function can be easily distinguished from the other interpweights function (for "green" interpolation), because the output is a Tensor with one more dimension than the number of grid position Arrays.
itw | Interpolation weights |
sgp | The grid position Array for the shelf dimension. |
bgp | The grid position Array for the book dimension. |
pgp | The grid position Array for the page dimension. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 2196 of file interpolation.cc.
References is_size(), LOOPIT, Array< base >::nelem(), ns, and r.
void interpweights | ( | Tensor7View | itw, |
const ArrayOfGridPos & | vgp, | ||
const ArrayOfGridPos & | sgp, | ||
const ArrayOfGridPos & | bgp, | ||
const ArrayOfGridPos & | pgp, | ||
const ArrayOfGridPos & | rgp, | ||
const ArrayOfGridPos & | cgp | ||
) |
Compute 6D interpolation weights for an entire field.
Compute the weights for a "green" type interpolation of the field, that means that the grid position Arrays are interpreted as defining the grids for the interpolated field.
The dimensions of itw must be consistent with this.
Note that we still do not need the actual field for this step.
This function can be easily distinguished from the other interpweights function (for "green" interpolation), because the output is a Tensor with one more dimension than the number of grid position Arrays.
itw | Interpolation weights |
vgp | The grid position Array for the vitrine dimension. |
sgp | The grid position Array for the shelf dimension. |
bgp | The grid position Array for the book dimension. |
pgp | The grid position Array for the page dimension. |
rgp | The grid position Array for the row dimension. |
cgp | The grid position Array for the column dimension. |
Definition at line 2266 of file interpolation.cc.
References is_size(), LOOPIT, Array< base >::nelem(), ns, and r.
is_gridpos_at_index_i
Determines if a grid position is at a given grid index.
gp | Grid position structure. |
i | The grid index of interest. |
strict | If true, fractional distances are demanded to be exactly 0 or 1. Otherwise FD_TOL is considered. |
Definition at line 657 of file interpolation.cc.
References GridPos::fd, FD_TOL, and GridPos::idx.
Referenced by iyInterpCloudboxField(), ppath_calc(), ppath_start_2d(), and ppath_start_3d().
ostream& operator<< | ( | ostream & | os, |
const GridPos & | gp | ||
) |
Output operator for GridPos.
This is just intended for testing and debugging.
os | Output stream. |
gp | Grid position. |
Definition at line 96 of file interpolation.cc.
References GridPos::fd, and GridPos::idx.
void polint | ( | Numeric & | y_int, |
Numeric & | dy_int, | ||
ConstVectorView | xa, | ||
ConstVectorView | ya, | ||
const Index & | n, | ||
const Numeric & | x | ||
) |
Polynomial interpolation.
This function performs a polinomial interpolation. Given arrays xa(n) and ya(n), and a given value x, this function returns a value y and an error estimate dy. This function is (almost) copied from: Numerical Recipies in C, pages 108-110.
y_int | interpolated value |
dy_int | error estimate |
xa | original grid (n elements) |
ya | corresponding values (n elements) |
n | order of polynom |
x | requested grid point |
Definition at line 2883 of file interpolation.cc.
Referenced by interp_poly().
const Numeric FD_TOL = 1.5e-3 |
The maximum difference from 1 that we allow for a sum check.
The sum check makes sure that the sum of all weights is approximately 1.
We cannot use a sharp comparison there, due to numerical noise. The value of 1e-6 is an ad-hoc value.
This shold be ok, the main point of the test is to make sure that what we have really are interpolation weights, and not something else. Allowed tolerance for fractional distance values
Fractional distances are not allowed to be negative or exceed 1 above the set tolerance. Values deviating less than the tolerance from 0 and 1 will be treated as end points, if such a check is performed.
We cannot use a sharp comparison there, due to numerical noise. The value of 1e-3 is an ad-hoc value.
Definition at line 73 of file interpolation.cc.
Referenced by gridpos_check_fd(), and is_gridpos_at_index_i().