00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00026 #ifndef special_interp_h
00027 #define special_interp_h
00028
00029 #include "interpolation.h"
00030 #include "gridded_fields.h"
00031
00032
00033
00034
00035
00036
00037
00038
00039 void fix_gridpos_at_boundary(
00040 ArrayOfGridPos& gp,
00041 const Index grid_size
00042 );
00043
00044 void interp_atmfield_gp2itw(
00045 Matrix& itw,
00046 const Index& atmosphere_dim,
00047 ConstVectorView p_grid,
00048 ConstVectorView lat_grid,
00049 ConstVectorView lon_grid,
00050 const ArrayOfGridPos& gp_p,
00051 const ArrayOfGridPos& gp_lat,
00052 const ArrayOfGridPos& gp_lon );
00053
00054 void interp_atmfield_by_itw(
00055 VectorView x,
00056 const Index& atmosphere_dim,
00057 ConstVectorView p_grid,
00058 ConstVectorView lat_grid,
00059 ConstVectorView lon_grid,
00060 ConstTensor3View x_field,
00061 const ArrayOfGridPos& gp_p,
00062 const ArrayOfGridPos& gp_lat,
00063 const ArrayOfGridPos& gp_lon,
00064 ConstMatrixView itw );
00065
00066 void interp_atmfield_by_gp(
00067 VectorView x,
00068 const Index& atmosphere_dim,
00069 ConstVectorView p_grid,
00070 ConstVectorView lat_grid,
00071 ConstVectorView lon_grid,
00072 ConstTensor3View x_field,
00073 const ArrayOfGridPos& gp_p,
00074 const ArrayOfGridPos& gp_lat,
00075 const ArrayOfGridPos& gp_lon );
00076
00077 Numeric interp_atmfield_by_gp(
00078 const Index& atmosphere_dim,
00079 ConstVectorView p_grid,
00080 ConstVectorView lat_grid,
00081 ConstVectorView lon_grid,
00082 ConstTensor3View x_field,
00083 const GridPos& gp_p,
00084 const GridPos& gp_lat,
00085 const GridPos& gp_lon );
00086
00087 void interp_atmsurface_gp2itw(
00088 Matrix& itw,
00089 const Index& atmosphere_dim,
00090 const ArrayOfGridPos& gp_lat,
00091 const ArrayOfGridPos& gp_lon );
00092
00093 void interp_atmsurface_by_itw(
00094 VectorView x,
00095 const Index& atmosphere_dim,
00096 ConstVectorView lat_grid,
00097 ConstVectorView lon_grid,
00098 ConstMatrixView x_surface,
00099 const ArrayOfGridPos& gp_lat,
00100 const ArrayOfGridPos& gp_lon,
00101 ConstMatrixView itw );
00102
00103 void interp_atmsurface_by_gp(
00104 VectorView x,
00105 const Index& atmosphere_dim,
00106 ConstVectorView lat_grid,
00107 ConstVectorView lon_grid,
00108 ConstMatrixView x_field,
00109 const ArrayOfGridPos& gp_lat,
00110 const ArrayOfGridPos& gp_lon );
00111
00112 Numeric interp_atmsurface_by_gp(
00113 const Index& atmosphere_dim,
00114 ConstVectorView lat_grid,
00115 ConstVectorView lon_grid,
00116 ConstMatrixView x_field,
00117 const GridPos& gp_lat,
00118 const GridPos& gp_lon );
00119
00120 void interp_gfield3(
00121 Numeric& value,
00122 const GField3& gfield3,
00123 const Index& effective_dim,
00124 const Numeric& x,
00125 const Numeric& y,
00126 const Numeric& z,
00127 const String& dim0,
00128 const String& dim1,
00129 const String& dim2 );
00130
00131 void itw2p(
00132 VectorView p_values,
00133 ConstVectorView p_grid,
00134 const ArrayOfGridPos& gp,
00135 ConstMatrixView itw );
00136
00137 void p2gridpos(
00138 ArrayOfGridPos& gp,
00139 ConstVectorView old_pgrid,
00140 ConstVectorView new_pgrid,
00141 const Numeric& extpolfac=0.5 );
00142
00143 void z_at_lat_2d(
00144 VectorView z,
00145 ConstVectorView p_grid,
00146 ConstVectorView lat_grid,
00147 ConstMatrixView z_field,
00148 const GridPos& gp_lat );
00149
00150 void z_at_latlon(
00151 VectorView z,
00152 ConstVectorView p_grid,
00153 ConstVectorView lat_grid,
00154 ConstVectorView lon_grid,
00155 ConstTensor3View z_field,
00156 const GridPos& gp_lat,
00157 const GridPos& gp_lon );
00158
00159
00160 #endif // special_interp_h