84 const Numeric theta = 1 - 300 / t;
85 const Numeric e0 = 77.66 - 103.3 * theta;
87 const Numeric f1 = 20.2 + 146 * theta + 316 * theta * theta;
91 for (
Index iv = 0; iv < nf; iv++) {
92 const Complex ifGHz(0.0, f_grid[iv] / 1e9);
95 (e0 - e1) / (
Numeric(1.0) - ifGHz / f1));
97 complex_n(iv, 0) = n.real();
98 complex_n(iv, 1) = n.imag();
137 const Numeric deltabeta = exp(-9.963 + 0.0372 * (t - 273));
138 const Numeric ebdt = exp(b / t);
139 const Numeric betam = (B1 / t) * ebdt / ((ebdt - 1.) * (ebdt - 1.));
141 const Numeric theta = 300. / t - 1;
142 const Numeric alfa = (0.00504 + 0.0062 * theta) * exp(-22.1 * theta);
143 const Numeric reps = 3.1884 + 9.1e-4 * (t - 273);
145 for (
Index iv = 0; iv < nf; iv++) {
148 Numeric ieps = alfa / f + beta * f;
152 complex_n(iv, 0) = n.real();
153 complex_n(iv, 1) = n.imag();
187 const Agenda& refr_index_air_agenda,
195 Numeric rtp_pressure, rtp_temperature;
208 itw2p(dummy, p_grid, gp, itw);
209 rtp_pressure = dummy[0];
213 rtp_temperature = dummy[0];
220 for (
Index is = 0; is <
ns; is++) {
221 interp(dummy, itw, vmr_field(is,
joker, 0, 0), gp);
222 rtp_vmr[is] = dummy[0];
227 refr_index_air_group,
232 refr_index_air_agenda);
267 const Agenda& refr_index_air_agenda,
277 Numeric rtp_pressure, rtp_temperature;
285 gridpos(gp_lat, lat_grid, lat);
301 itw2p(dummy, p_grid, gp_p, itw);
302 rtp_pressure = dummy[0];
308 rtp_temperature = dummy[0];
315 for (
Index is = 0; is <
ns; is++) {
317 rtp_vmr[is] = dummy[0];
322 refr_index_air_group,
327 refr_index_air_agenda);
360 const Agenda& refr_index_air_agenda,
372 Numeric rtp_pressure, rtp_temperature;
380 gridpos(gp_lat, lat_grid, lat);
381 gridpos(gp_lon, lon_grid, lon);
383 z_grid, p_grid, lat_grid, lon_grid, z_field, gp_lat[0], gp_lon[0]);
398 itw2p(dummy, p_grid, gp_p, itw);
399 rtp_pressure = dummy[0];
404 interp(dummy, itw, t_field, gp_p, gp_lat, gp_lon);
405 rtp_temperature = dummy[0];
412 for (
Index is = 0; is <
ns; is++) {
415 rtp_vmr[is] = dummy[0];
420 refr_index_air_group,
425 refr_index_air_agenda);
458 const Agenda& refr_index_air_agenda,
468 refr_index_air_group,
469 refr_index_air_agenda,
478 const Numeric n0 = refr_index_air;
484 refr_index_air_agenda,
493 dndr = refr_index_air - n0;
536 const Agenda& refr_index_air_agenda,
548 refr_index_air_group,
549 refr_index_air_agenda,
560 const Numeric n0 = refr_index_air;
566 refr_index_air_agenda,
577 dndr = refr_index_air - n0;
584 refr_index_air_agenda,
595 dndlat = (refr_index_air - n0) / (
DEG2RAD * dlat * r);
643 const Agenda& refr_index_air_agenda,
657 refr_index_air_group,
658 refr_index_air_agenda,
671 const Numeric n0 = refr_index_air;
677 refr_index_air_agenda,
690 dndr = refr_index_air - n0;
697 refr_index_air_agenda,
710 dndlat = (refr_index_air - n0) / (
DEG2RAD * dlat * r);
717 refr_index_air_agenda,
730 dndlon = (refr_index_air - n0) / (
DEG2RAD * dlon * r * cos(
DEG2RAD * lat));
INDEX Index
The type to use for all integer numbers and indices.
void get_refr_index_2d(Workspace &ws, Numeric &refr_index_air, Numeric &refr_index_air_group, const Agenda &refr_index_air_agenda, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView refellipsoid, ConstTensor3View z_field, ConstTensor3View t_field, ConstTensor4View vmr_field, ConstVectorView f_grid, const Numeric &r, const Numeric &lat)
get_refr_index_2d
void get_refr_index_3d(Workspace &ws, Numeric &refr_index_air, Numeric &refr_index_air_group, const Agenda &refr_index_air_agenda, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView lon_grid, ConstVectorView refellipsoid, ConstTensor3View z_field, ConstTensor3View t_field, ConstTensor4View vmr_field, ConstVectorView f_grid, const Numeric &r, const Numeric &lat, const Numeric &lon)
A class implementing complex numbers for ARTS.
Numeric interp(ConstVectorView itw, ConstVectorView a, const GridPos &tc)
Red 1D Interpolate.
invlib::Vector< ArtsVector > Vector
invlib wrapper type for ARTS vectors.
Header file for interpolation.cc.
Numeric refell2d(ConstVectorView refellipsoid, ConstVectorView lat_grid, const GridPos gp)
refell2d
void get_refr_index_1d(Workspace &ws, Numeric &refr_index_air, Numeric &refr_index_air_group, const Agenda &refr_index_air_agenda, ConstVectorView p_grid, ConstVectorView refellipsoid, ConstTensor3View z_field, ConstTensor3View t_field, ConstTensor4View vmr_field, ConstVectorView f_grid, const Numeric &r)
get_refr_index_1d
Index nelem() const
Returns the number of elements.
A constant view of a Tensor4.
void complex_n_water_liebe93(Matrix &complex_n, const Vector &f_grid, const Numeric &t)
complex_n_water_liebe93
std::complex< Numeric > Complex
void gridpos(ArrayOfGridPos &gp, ConstVectorView old_grid, ConstVectorView new_grid, const Numeric &extpolfac)
Set up a grid position Array.
NUMERIC Numeric
The type to use for all floating point numbers.
void refr_index_air_agendaExecute(Workspace &ws, Numeric &refr_index_air, Numeric &refr_index_air_group, const Numeric rtp_pressure, const Numeric rtp_temperature, const Vector &rtp_vmr, const Vector &f_grid, const Agenda &input_agenda)
void refr_gradients_3d(Workspace &ws, Numeric &refr_index_air, Numeric &refr_index_air_group, Numeric &dndr, Numeric &dndlat, Numeric &dndlon, const Agenda &refr_index_air_agenda, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView lon_grid, ConstVectorView refellipsoid, ConstTensor3View z_field, ConstTensor3View t_field, ConstTensor4View vmr_field, ConstVectorView f_grid, const Numeric &r, const Numeric &lat, const Numeric &lon)
refr_gradients_3d
void z_at_latlon(VectorView z, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView lon_grid, ConstTensor3View z_field, const GridPos &gp_lat, const GridPos &gp_lon)
Returns the geomtrical altitudes of p_grid for one latitude and one longitude.
void z_at_lat_2d(VectorView z, ConstVectorView p_grid, ConstVectorView lat_grid, ConstMatrixView z_field, const GridPos &gp_lat)
Returns the geomtrical altitudes of p_grid for one latitude.
Header file for special_interp.cc.
This can be used to make arrays out of anything.
void resize(Index n)
Resize function.
void complex_n_ice_matzler06(Matrix &complex_n, const Vector &f_grid, const Numeric &t)
complex_n_ice_matzler06
A constant view of a Tensor3.
A constant view of a Vector.
void refr_gradients_1d(Workspace &ws, Numeric &refr_index_air, Numeric &refr_index_air_group, Numeric &dndr, const Agenda &refr_index_air_agenda, ConstVectorView p_grid, ConstVectorView refellipsoid, ConstTensor3View z_field, ConstTensor3View t_field, ConstTensor4View vmr_field, ConstVectorView f_grid, const Numeric &r)
refr_gradients_1d
void refr_gradients_2d(Workspace &ws, Numeric &refr_index_air, Numeric &refr_index_air_group, Numeric &dndr, Numeric &dndlat, const Agenda &refr_index_air_agenda, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView refellipsoid, ConstTensor3View z_field, ConstTensor3View t_field, ConstTensor4View vmr_field, ConstVectorView f_grid, const Numeric &r, const Numeric &lat)
refr_gradients_2d
Index nbooks() const
Returns the number of books.
void interpweights(VectorView itw, const GridPos &tc)
Red 1D interpolation weights.
void itw2p(VectorView p_values, ConstVectorView p_grid, const ArrayOfGridPos &gp, ConstMatrixView itw)
Converts interpolation weights to pressures.
Numeric sqrt(const Rational r)
Square root.
void resize(Index r, Index c)
Resize function.