70 const Index& atmosphere_dim,
80 chk_atm_surface(
"input argument *field*", field, atmosphere_dim, lat_grid,
87 if( rtp_pos[0] < zmin-dzok || rtp_pos[0] > zmax+dzok )
90 os <<
"The given position does not match *z_surface*.\nThe altitude in " 91 <<
"*rtp_pos* is " << rtp_pos[0]/1e3 <<
" km.\n" 92 <<
"The altitude range covered by *z_surface* is [" << zmin/1e3
93 <<
"," << zmax/1e3 <<
"] km.\n" 94 <<
"One possible mistake is to mix up *rtp_pos* and *rte_pos*.";
95 throw runtime_error( os.str() );
98 if( atmosphere_dim == 1 )
99 { outvalue = field(0,0); }
104 gridpos( gp_lat, lat_grid, rtp_pos[1] );
105 if( atmosphere_dim == 3 )
109 gridpos( gp_lon, lon_grid, rtp_pos[2] );
118 out3 <<
" Result = " << outvalue <<
"\n";
128 const Tensor3& iy_transmission,
129 const Index& jacobian_do,
130 const Index& atmosphere_dim,
134 const Index& cloudbox_on,
135 const Index& stokes_dim,
140 const Agenda& iy_main_agenda,
141 const Agenda& surface_rtprop_agenda,
155 surface_rmatrix, f_grid, rtp_pos, rtp_los,
156 surface_rtprop_agenda );
166 "Number of columns in *surface_los* is not correct." );
167 if( nlos != surface_rmatrix.
nbooks() )
169 "Mismatch in size of *surface_los* and *surface_rmatrix*." );
170 if( surface_rmatrix.
npages() != nf )
172 "Mismatch in size of *surface_rmatrix* and *f_grid*." );
173 if( surface_rmatrix.
nrows() != stokes_dim ||
174 surface_rmatrix.
ncols() != stokes_dim )
176 "Mismatch between size of *surface_rmatrix* and *stokes_dim*." );
178 if( surface_emission.
ncols() != stokes_dim )
180 "Mismatch between size of *surface_emission* and *stokes_dim*." );
181 if( surface_emission.
nrows() != nf )
183 "Mismatch in size of *surface_emission* and f_grid*." );
186 Tensor3 I( nlos, nf, stokes_dim );
191 for(
Index ilos=0; ilos<nlos; ilos++ )
201 if( iy_transmission.
npages() )
214 cloudbox_on, jacobian_do, t_field,
215 z_field, vmr_field, f_grid, rtp_pos,
216 los, rte_pos2, iy_main_agenda );
219 if( iy.
ncols() != stokes_dim || iy.
nrows() != nf )
222 os <<
"The size of *iy* returned from *" 223 << iy_main_agenda.
name() <<
"* is\n" 225 <<
" expected size = [" << nf <<
"," << stokes_dim <<
"]\n" 226 <<
" size of iy = [" << iy.
nrows() <<
"," << iy.
ncols()
228 throw runtime_error( os.str() );
236 surface_calc( iy, I, surface_los, surface_rmatrix, surface_emission );
248 const Index& atmosphere_dim,
251 const Vector& refellipsoid,
258 if( atmosphere_dim == 1 )
260 surface_normal[0] = 0;
261 specular_los[0] = 180 - rtp_los[0];
264 else if( atmosphere_dim == 2 )
268 gridpos( gp_lat, lat_grid, rtp_pos[1] );
271 gp_lat, rtp_los[0] );
276 specular_los[0] =
sign( rtp_los[0] ) * 180 - rtp_los[0] +
280 else if( atmosphere_dim == 3 )
286 gridpos( gp_lat, lat_grid, rtp_pos[1] );
287 gridpos( gp_lon, lon_grid, rtp_pos[2] );
293 +
interp( itw, z_surface, gp_lat, gp_lon );
297 gp_lat, gp_lon, 90 );
300 Vector tangentSN(3), tangentEW(3), normal(3);
301 zaaa2cart( tangentSN[0], tangentSN[1], tangentSN[2], zaSN, 0 );
302 zaaa2cart( tangentEW[0], tangentEW[1], tangentEW[2], zaEW, 90 );
303 cross3( normal, tangentSN, tangentEW );
306 zaaa2cart( di[0], di[1], di[2], rtp_los[0], rtp_los[1] );
309 cart2zaaa( surface_normal[0], surface_normal[1], normal[0], normal[1],
314 for(
Index i=0; i<3; i++ )
315 { speccart[i] = fac*normal[i] - di[i]; }
316 cart2zaaa( specular_los[0], specular_los[1], speccart[0], speccart[1],
330 const Index& stokes_dim,
332 const Agenda& blackbody_radiation_agenda,
339 out2 <<
" Sets variables to model a blackbody surface with a temperature " 340 <<
" of " << surface_skin_t <<
" K.\n";
343 surface_rmatrix.
resize(0,0,0,0);
347 blackbody_radiation_agenda );
350 surface_emission.
resize( nf, stokes_dim );
351 surface_emission = 0.0;
353 for(
Index iv=0; iv<nf; iv++ )
355 surface_emission(iv,0) = b[iv];
356 for(
Index is=1; is<stokes_dim; is++ )
357 { surface_emission(iv,is) = 0; }
370 const Index& stokes_dim,
371 const Index& atmosphere_dim,
373 const Vector& specular_los,
376 const Agenda& blackbody_radiation_agenda,
390 Matrix n_real(nf,1), n_imag(nf,1);
393 "surface_complex_refr_index", f_grid,
394 Vector(1,surface_skin_t) );
396 out2 <<
" Sets variables to model a flat surface\n";
397 out3 <<
" surface temperature: " << surface_skin_t <<
" K.\n";
400 surface_los(0,
joker) = specular_los;
402 surface_emission.
resize( nf, stokes_dim );
403 surface_rmatrix.
resize( 1, nf, stokes_dim, stokes_dim );
407 assert( incang <= 90 );
412 for(
Index iv=0; iv<nf; iv++ )
415 Complex n2( n_real(iv,0), n_imag(iv,0) );
422 surface_emission(iv,
joker), Rv, Rh,
423 f_grid[iv], stokes_dim, surface_skin_t,
424 blackbody_radiation_agenda );
437 const Index& stokes_dim,
438 const Index& atmosphere_dim,
439 const Vector& specular_los,
441 const Tensor3& surface_reflectivity,
442 const Agenda& blackbody_radiation_agenda,
453 if( surface_reflectivity.
nrows() != stokes_dim &&
454 surface_reflectivity.
ncols() != stokes_dim )
457 os <<
"The number of rows and columnss in *surface_reflectivity* must\n" 458 <<
"match *stokes_dim*." 459 <<
"\n stokes_dim : " << stokes_dim
460 <<
"\n number of rows in *surface_reflectivity* : " 461 << surface_reflectivity.
nrows()
462 <<
"\n number of columns in *surface_reflectivity* : " 463 << surface_reflectivity.
ncols()
465 throw runtime_error( os.str() );
468 if( surface_reflectivity.
npages() != nf &&
469 surface_reflectivity.
npages() != 1 )
472 os <<
"The number of pages in *surface_reflectivity* should\n" 473 <<
"match length of *f_grid* or be 1." 474 <<
"\n length of *f_grid* : " << nf
475 <<
"\n dimension of *surface_reflectivity* : " 476 << surface_reflectivity.
npages()
478 throw runtime_error( os.str() );
481 out2 <<
" Sets variables to model a flat surface\n";
484 surface_los(0,
joker) = specular_los;
486 surface_emission.
resize( nf, stokes_dim );
487 surface_rmatrix.
resize(1,nf,stokes_dim,stokes_dim);
489 Matrix R, IR(stokes_dim,stokes_dim);
493 blackbody_radiation_agenda );
496 for(
Index iv=0; iv<nf; iv++ )
498 if( iv == 0 || surface_reflectivity.
npages() > 1 )
501 for(
Index i=0; i<stokes_dim; i++ )
503 for(
Index j=0; j<stokes_dim; j++ )
506 { IR(i,j) = 1 - R(i,j); }
508 { IR(i,j) = -R(i,j); }
516 mult( surface_emission(iv,
joker), IR, B );
529 const Index& stokes_dim,
530 const Index& atmosphere_dim,
531 const Vector& specular_los,
533 const Vector& surface_scalar_reflectivity,
534 const Agenda& blackbody_radiation_agenda,
546 if( surface_scalar_reflectivity.
nelem() != nf &&
547 surface_scalar_reflectivity.
nelem() != 1 )
550 os <<
"The number of elements in *surface_scalar_reflectivity* should\n" 551 <<
"match length of *f_grid* or be 1." 552 <<
"\n length of *f_grid* : " << nf
553 <<
"\n length of *surface_scalar_reflectivity* : " 554 << surface_scalar_reflectivity.
nelem()
556 throw runtime_error( os.str() );
559 if(
min(surface_scalar_reflectivity) < 0 ||
560 max(surface_scalar_reflectivity) > 1 )
563 "All values in *surface_scalar_reflectivity* must be inside [0,1]." );
566 out2 <<
" Sets variables to model a flat surface\n";
567 out3 <<
" surface temperature: " << surface_skin_t <<
" K.\n";
570 surface_los(0,
joker) = specular_los;
572 surface_emission.
resize( nf, stokes_dim );
573 surface_rmatrix.
resize( 1, nf, stokes_dim, stokes_dim );
577 blackbody_radiation_agenda );
581 for(
Index iv=0; iv<nf; iv++ )
583 if( iv == 0 || surface_scalar_reflectivity.
nelem() > 1 )
584 { r = surface_scalar_reflectivity[iv]; }
586 surface_emission(iv,0) = (1.0-r) * b[iv];
587 surface_rmatrix(0,iv,0,0) = r;
600 const Index& stokes_dim,
601 const Index& atmosphere_dim,
604 const Vector& surface_scalar_reflectivity,
605 const Index& lambertian_nza,
606 const Agenda& blackbody_radiation_agenda,
617 if( surface_scalar_reflectivity.
nelem() != nf &&
618 surface_scalar_reflectivity.
nelem() != 1 )
621 os <<
"The number of elements in *surface_scalar_reflectivity* should\n" 622 <<
"match length of *f_grid* or be 1." 623 <<
"\n length of *f_grid* : " << nf
624 <<
"\n length of *surface_scalar_reflectivity* : " 625 << surface_scalar_reflectivity.
nelem()
627 throw runtime_error( os.str() );
630 if(
min(surface_scalar_reflectivity) < 0 ||
631 max(surface_scalar_reflectivity) > 1 )
634 "All values in *surface_scalar_reflectivity* must be inside [0,1]." );
639 surface_los.
resize( lambertian_nza, rtp_los.
nelem() );
640 surface_rmatrix.
resize( lambertian_nza, nf, stokes_dim, stokes_dim );
641 surface_emission.
resize( nf, stokes_dim );
644 surface_rmatrix = 0.0;
645 surface_emission = 0.0;
650 const Vector za_lims( 0.0, lambertian_nza+1, dza );
653 for(
Index ip=0; ip<lambertian_nza; ip++ )
654 { surface_los(ip,0) = za_lims[ip] + za_pos * dza; }
658 blackbody_radiation_agenda );
664 for(
Index iv=0; iv<nf; iv++ )
667 if( iv == 0 || surface_scalar_reflectivity.
nelem() > 1 )
668 { r = surface_scalar_reflectivity[iv]; }
678 for(
Index ip=0; ip<lambertian_nza; ip++ )
681 cos(2*
DEG2RAD*za_lims[ip+1]) );
682 surface_rmatrix(ip,iv,0,0) =
w;
686 surface_emission(iv,0) = (1-r) * b[iv];
695 const Index& atmosphere_dim,
704 Index gfield_fID = 0;
705 Index gfield_tID = 1;
706 Index gfield_compID = 2;
707 Index gfield_latID = 3;
708 Index gfield_lonID = 4;
728 if( nlat < 2 || nlon < 2 )
731 os <<
"The data in *complex_refr_index_field* must span a geographical " 732 <<
"region. That is,\nthe latitude and longitude grids must have a " 739 os <<
"The data in *complex_refr_index_field* must have exactly two " 740 <<
"pages. One page each\nfor the real and imaginary part of the " 741 <<
"complex refractive index.";
759 lon_shifted[nlon-1] );
762 surface_complex_refr_index.
resize( nf, nt, 2 );
764 surface_complex_refr_index.
set_grid( 0,
766 surface_complex_refr_index.
set_grid_name( 1,
"Temperature" );
767 surface_complex_refr_index.
set_grid( 1,
770 surface_complex_refr_index.
set_grid( 2,
776 gridpos( gp_lat, GFlat, lat[0] );
777 gridpos( gp_lon, lon_shifted, lon[0] );
781 for(
Index iv=0; iv<nf; iv++ )
783 for(
Index it=0; it<nt; it++ )
785 surface_complex_refr_index.
data(iv,it,0) =
interp( itw,
787 surface_complex_refr_index.
data(iv,it,1) =
interp( itw,
798 const Index& stokes_dim,
800 const Index& atmosphere_dim,
830 if( nlat < 2 || nlon < 2 )
833 os <<
"The data in *r_field* must span a geographical region. That is,\n" 834 <<
"the latitude and longitude grids must have a length >= 2.";
835 throw runtime_error( os.str() );
841 os <<
"The data in *r_field* must span a range of zenith angles. That\n" 842 <<
"is the zenith angle grid must have a length >= 2.";
843 throw runtime_error( os.str() );
846 if( ns1 < stokes_dim || ns2 < stokes_dim || ns1 > 4 || ns2 > 4 )
849 os <<
"The \"Stokes dimensions\" must have a size that is >= " 850 <<
"*stokes_dim* (but not exceeding 4).";
851 throw runtime_error( os.str() );
864 Tensor4 r_f_za( nf_in, stokes_dim, stokes_dim, nza );
869 lon_shifted, lon[0] );
872 gridpos( gp_lon, lon_shifted, lon[0] );
875 for(
Index iv=0; iv<nf_in; iv++ )
876 {
for(
Index iz=0; iz<nza; iz++ )
877 {
for(
Index is1=0; is1<stokes_dim; is1++ )
878 {
for(
Index is2=0; is2<stokes_dim; is2++ )
880 r_f_za(iv,is1,is2,iz) =
interp( itw,
885 Tensor3 r_f( nf_in, stokes_dim, stokes_dim );
890 Vector incang( 1, 180-rtp_los[0] );
899 for(
Index i=0; i<nf_in; i++ )
900 {
for(
Index is1=0; is1<stokes_dim; is1++ )
901 {
for(
Index is2=0; is2<stokes_dim; is2++ )
904 r_f(i,is1,is2) = tmp[0];
910 { surface_reflectivity = r_f; }
916 surface_reflectivity.
resize( nf_out, stokes_dim, stokes_dim );
922 for(
Index is1=0; is1<stokes_dim; is1++ )
923 {
for(
Index is2=0; is2<stokes_dim; is2++ )
926 r_f(
joker,is1,is2), gp );
934 Vector& surface_scalar_reflectivity,
935 const Index& stokes_dim,
937 const Index& atmosphere_dim,
963 if( nlat < 2 || nlon < 2 )
966 os <<
"The data in *r_field* must span a geographical region. That is,\n" 967 <<
"the latitude and longitude grids must have a length >= 2.";
968 throw runtime_error( os.str() );
975 os <<
"The data in *r_field* must span a range of zenith angles. That\n" 976 <<
"is the zenith angle grid must have a length >= 2.";
977 throw runtime_error( os.str() );
990 Matrix r_f_za( nf_in, nza );
995 lon_shifted, lon[0] );
998 gridpos( gp_lon, lon_shifted, lon[0] );
1001 for(
Index iv=0; iv<nf_in; iv++ )
1003 for(
Index iz=0; iz<nza; iz++ )
1018 Vector incang( 1, 180-rtp_los[0] );
1027 for(
Index i=0; i<nf_in; i++ )
1038 surface_scalar_reflectivity.
resize( 1 );
1039 surface_scalar_reflectivity[0] = r_f[0];
1046 surface_scalar_reflectivity.
resize( nf_out );
1052 interp( surface_scalar_reflectivity, itw, r_f, gp );
Index npages() const
Returns the number of pages.
INDEX Index
The type to use for all integer numbers and indices.
void surfaceLambertianSimple(Workspace &ws, Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Vector &f_grid, const Index &stokes_dim, const Index &atmosphere_dim, const Vector &rtp_los, const Numeric &surface_skin_t, const Vector &surface_scalar_reflectivity, const Index &lambertian_nza, const Agenda &blackbody_radiation_agenda, const Numeric &za_pos, const Verbosity &)
WORKSPACE METHOD: surfaceLambertianSimple.
void surface_scalar_reflectivityFromGriddedField4(Vector &surface_scalar_reflectivity, const Index &stokes_dim, const Vector &f_grid, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lat_true, const Vector &lon_true, const Vector &rtp_pos, const Vector &rtp_los, const GriddedField4 &r_field, const Verbosity &)
WORKSPACE METHOD: surface_scalar_reflectivityFromGriddedField4.
Index nrows() const
Returns the number of rows.
A class implementing complex numbers for ARTS.
void cross3(VectorView c, const ConstVectorView &a, const ConstVectorView &b)
cross3
String name() const
Agenda name.
void iy_transmission_mult(Tensor3 &iy_trans_total, ConstTensor3View iy_trans_old, ConstTensor3View iy_trans_new)
iy_transmission_mult
void surface_calc(Matrix &iy, ConstTensor3View I, ConstMatrixView surface_los, ConstTensor4View surface_rmatrix, ConstMatrixView surface_emission)
surface_calc
virtual void checksize_strict() const
Strict consistency check.
Explicit construction of Arrays.
Declarations having to do with the four output streams.
void surface_complex_refr_indexFromGriddedField5(GriddedField3 &surface_complex_refr_index, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lat_true, const Vector &lon_true, const Vector &rtp_pos, const GriddedField5 &complex_n_field, const Verbosity &)
WORKSPACE METHOD: surface_complex_refr_indexFromGriddedField5.
void zaaa2cart(Numeric &dx, Numeric &dy, Numeric &dz, const Numeric &za, const Numeric &aa)
zaaa2cart
ConstVectorView get_numeric_grid(Index i) const
Get a numeric grid.
Index nvitrines() const
Returns the number of vitrines.
Numeric interp(ConstVectorView itw, ConstVectorView a, const GridPos &tc)
Red 1D Interpolate.
Numeric fac(const Index n)
fac
Numeric calc_incang(ConstVectorView rte_los, ConstVectorView specular_los)
calc_incang
Index npages() const
Returns the number of pages.
void cart2zaaa(Numeric &za, Numeric &aa, const Numeric &dx, const Numeric &dy, const Numeric &dz)
cart2zaaa
cmplx FADDEEVA() w(cmplx z, double relerr)
void plevel_slope_3d(Numeric &c1, Numeric &c2, const Numeric &lat1, const Numeric &lat3, const Numeric &lon5, const Numeric &lon6, const Numeric &r15, const Numeric &r35, const Numeric &r36, const Numeric &r16, const Numeric &lat, const Numeric &lon, const Numeric &aa)
plevel_slope_3d
Header file for interpolation.cc.
Index nbooks() const
Returns the number of books.
Numeric refell2d(ConstVectorView refellipsoid, ConstVectorView lat_grid, const GridPos gp)
refell2d
void iySurfaceRtpropAgenda(Workspace &ws, Matrix &iy, ArrayOfTensor3 &diy_dx, const Tensor3 &iy_transmission, const Index &jacobian_do, const Index &atmosphere_dim, const Tensor3 &t_field, const Tensor3 &z_field, const Tensor4 &vmr_field, const Index &cloudbox_on, const Index &stokes_dim, const Vector &f_grid, const Vector &rtp_pos, const Vector &rtp_los, const Vector &rte_pos2, const Agenda &iy_main_agenda, const Agenda &surface_rtprop_agenda, const Verbosity &)
WORKSPACE METHOD: iySurfaceRtpropAgenda.
Index nrows() const
Returns the number of rows.
void interp_atmsurface_by_gp(VectorView x, const Index &atmosphere_dim, ConstMatrixView x_surface, const ArrayOfGridPos &gp_lat, const ArrayOfGridPos &gp_lon)
interp_atmsurface_by_gp
Index nrows() const
Returns the number of rows.
void fresnel(Complex &Rv, Complex &Rh, const Complex &n1, const Complex &n2, const Numeric &theta)
fresnel
Index nelem() const
Returns the number of elements.
Structure to store a grid position.
Numeric sign(const Numeric &x)
sign
void iy_main_agendaExecute(Workspace &ws, Matrix &iy, ArrayOfTensor4 &iy_aux, Ppath &ppath, ArrayOfTensor3 &diy_dx, const Index iy_agenda_call1, const Tensor3 &iy_transmission, const ArrayOfString &iy_aux_vars, const Index cloudbox_on, const Index jacobian_do, const Tensor3 &t_field, const Tensor3 &z_field, const Tensor4 &vmr_field, const Vector &f_grid, const Vector &rte_pos, const Vector &rte_los, const Vector &rte_pos2, const Agenda &input_agenda)
void mult(VectorView y, const ConstMatrixView &M, const ConstVectorView &x)
Matrix Vector multiplication.
void plevel_slope_2d(Numeric &c1, ConstVectorView lat_grid, ConstVectorView refellipsoid, ConstVectorView z_surf, const GridPos &gp, const Numeric &za)
plevel_slope_2d
void surfaceFlatReflectivity(Workspace &ws, Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Vector &f_grid, const Index &stokes_dim, const Index &atmosphere_dim, const Vector &specular_los, const Numeric &surface_skin_t, const Tensor3 &surface_reflectivity, const Agenda &blackbody_radiation_agenda, const Verbosity &verbosity)
WORKSPACE METHOD: surfaceFlatReflectivity.
Index ncols() const
Returns the number of columns.
The global header file for ARTS.
Index nshelves() const
Returns the number of shelves.
void pos2true_latlon(Numeric &lat, Numeric &lon, const Index &atmosphere_dim, ConstVectorView lat_grid, ConstVectorView lat_true, ConstVectorView lon_true, ConstVectorView pos)
pos2true_latlon
std::complex< Numeric > Complex
Index ncols() const
Returns the number of columns.
void set_grid(Index i, const Vector &g)
Set a numeric grid.
Index nrows() const
Returns the number of rows.
virtual void checksize_strict() const
Strict consistency check.
void gridpos(ArrayOfGridPos &gp, ConstVectorView old_grid, ConstVectorView new_grid, const Numeric &extpolfac)
Set up a grid position Array.
void surfaceFlatScalarReflectivity(Workspace &ws, Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Vector &f_grid, const Index &stokes_dim, const Index &atmosphere_dim, const Vector &specular_los, const Numeric &surface_skin_t, const Vector &surface_scalar_reflectivity, const Agenda &blackbody_radiation_agenda, const Verbosity &verbosity)
WORKSPACE METHOD: surfaceFlatScalarReflectivity.
void surfaceBlackbody(Workspace &ws, Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Vector &f_grid, const Index &stokes_dim, const Numeric &surface_skin_t, const Agenda &blackbody_radiation_agenda, const Verbosity &verbosity)
WORKSPACE METHOD: surfaceBlackbody.
NUMERIC Numeric
The type to use for all floating point numbers.
void blackbody_radiation_agendaExecute(Workspace &ws, Vector &blackbody_radiation, const Numeric rtp_temperature, const Vector &f_grid, const Agenda &input_agenda)
void surface_reflectivityFromGriddedField6(Tensor3 &surface_reflectivity, const Index &stokes_dim, const Vector &f_grid, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lat_true, const Vector &lon_true, const Vector &rtp_pos, const Vector &rtp_los, const GriddedField6 &r_field, const Verbosity &)
WORKSPACE METHOD: surface_reflectivityFromGriddedField6.
Numeric plevel_angletilt(const Numeric &r, const Numeric &c1)
plevel_angletilt
void gridpos_poly(ArrayOfGridPosPoly &gp, ConstVectorView old_grid, ConstVectorView new_grid, const Index order, const Numeric &extpolfac)
Set up grid positions for higher order interpolation.
Array< String > ArrayOfString
An array of Strings.
Header file for special_interp.cc.
void resize(Index p, Index r, Index c)
Resize function.
void surfaceFlatRefractiveIndex(Workspace &ws, Matrix &surface_los, Tensor4 &surface_rmatrix, Matrix &surface_emission, const Vector &f_grid, const Index &stokes_dim, const Index &atmosphere_dim, const Vector &rtp_los, const Vector &specular_los, const Numeric &surface_skin_t, const GriddedField3 &surface_complex_refr_index, const Agenda &blackbody_radiation_agenda, const Verbosity &verbosity)
WORKSPACE METHOD: surfaceFlatRefractiveIndex.
Index npages() const
Returns the number of pages.
This can be used to make arrays out of anything.
Index nshelves() const
Returns the number of shelves.
Index ncols() const
Returns the number of columns.
void lon_shiftgrid(Vector &longrid_out, ConstVectorView longrid_in, const Numeric lon)
lon_shiftgrid
void resize(Index n)
Assignment operator from VectorView.
Index npages() const
Returns the number of pages.
Index nbooks() const
Returns the number of books.
void set_grid_name(Index i, const String &s)
Set grid name.
virtual void checksize_strict() const
Strict consistency check.
Index ncols() const
Returns the number of columns.
void InterpSurfaceFieldToPosition(Numeric &outvalue, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lon_grid, const Vector &rtp_pos, const Matrix &z_surface, const Matrix &field, const Verbosity &verbosity)
WORKSPACE METHOD: InterpSurfaceFieldToPosition.
The structure to describe a propagation path and releated quantities.
void complex_n_interp(MatrixView n_real, MatrixView n_imag, const GriddedField3 &complex_n, const String &varname, ConstVectorView f_grid, ConstVectorView t_grid)
complex_n_interp
Index ncols() const
Returns the number of columns.
void resize(const GriddedField3 &gf)
Make this GriddedField3 the same size as the given one.
void interpweights(VectorView itw, const GridPos &tc)
Red 1D interpolation weights.
void specular_losCalc(Vector &specular_los, Vector &surface_normal, const Vector &rtp_pos, const Vector &rtp_los, const Index &atmosphere_dim, const Vector &lat_grid, const Vector &lon_grid, const Vector &refellipsoid, const Matrix &z_surface, const Verbosity &)
WORKSPACE METHOD: specular_losCalc.
void surface_rtprop_agendaExecute(Workspace &ws, Matrix &surface_emission, Matrix &surface_los, Tensor4 &surface_rmatrix, const Vector &f_grid, const Vector &rtp_pos, const Vector &rtp_los, const Agenda &input_agenda)
Index nrows() const
Returns the number of rows.
void resize(Index b, Index p, Index r, Index c)
Resize function.
void surface_specular_R_and_b(Workspace &ws, MatrixView surface_rmatrix, VectorView surface_emission, const Complex &Rv, const Complex &Rh, const Numeric &f, const Index &stokes_dim, const Numeric &surface_skin_t, const Agenda &blackbody_radiation_agenda)
surface_specular_R_and_b
Declaration of functions in rte.cc.
void resize(Index r, Index c)
Resize function.
Index nbooks() const
Returns the number of books.