64    const Index&                         stokes_dim,
    66    const Index&                         atmosphere_dim,
    78    const Index&                         cloudbox_on,
    81    const Index&                         use_mean_scat_data,
    83    const Matrix&                        particle_masses,
    86    const Index&                         jacobian_do,
    87    const Agenda&                        ppath_agenda,
    88    const Agenda&                        blackbody_radiation_agenda,
    89    const Agenda&                        propmat_clearsky_agenda,
    90    const Agenda&                        iy_main_agenda,
    91    const Agenda&                        iy_space_agenda,
    92    const Agenda&                        iy_surface_agenda,
    93    const Index&                         iy_agenda_call1,
   100    const Matrix&                        fos_scatint_angles,
   101    const Vector&                        fos_iyin_za_angles,
   102    const Index&                         fos_za_interporder,
   108   if( atmosphere_dim > 1 )
   109     throw runtime_error( 
"FOS is so far only handling 1D atmospheres." );
   111   assert( fos_i >= 0  &&  fos_i <= fos_n );
   117                        0, 0, t_field, z_field, vmr_field, f_grid, 
   141   Index auxPressure    = -1,
   152   if( !iy_agenda_call1 )
   153     { iy_aux.resize( 0 ); }
   157       iy_aux.resize( naux );
   159       for( 
Index i=0; i<naux; i++ )
   161           if( iy_aux_vars[i] == 
"Pressure" )
   162             { auxPressure = i;      iy_aux[i].resize( 1, 1, 1, np ); }
   163           else if( iy_aux_vars[i] == 
"Temperature" )
   164             { auxTemperature = i;   iy_aux[i].resize( 1, 1, 1, np ); }
   165           else if( iy_aux_vars[i].substr(0,13) == 
"VMR, species " )
   168               istringstream is(iy_aux_vars[i].substr(13,2));
   170               if( ispecies < 0  ||  ispecies>=abs_species.
nelem() )
   173                   os << 
"You have selected VMR of species with index "   174                      << ispecies << 
".\nThis species does not exist!";
   175                   throw runtime_error( os.str() );
   177               auxVmrSpecies.push_back(i);
   178               auxVmrIsp.push_back(ispecies);
   179               iy_aux[i].resize( 1, 1, 1, np );               
   181           else if( iy_aux_vars[i] == 
"Absorption, summed" )
   182             { auxAbsSum = i;   iy_aux[i].resize( nf, ns, ns, np ); }
   183           else if( iy_aux_vars[i].substr(0,20) == 
"Absorption, species " )
   186               istringstream is(iy_aux_vars[i].substr(20,2));
   188               if( ispecies < 0  ||  ispecies>=abs_species.
nelem() )
   191                   os << 
"You have selected absorption species with index "   192                      << ispecies << 
".\nThis species does not exist!";
   193                   throw runtime_error( os.str() );
   195               auxAbsSpecies.push_back(i);
   198                 { auxAbsIsp.push_back( ihit ); }
   201                   iaps.push_back(ispecies); 
   202                   auxAbsIsp.push_back( iaps.
nelem()-1 ); 
   204               iy_aux[i].resize( nf, ns, ns, np );               
   206           else if( iy_aux_vars[i] == 
"Radiative background" )
   207             { auxBackground = i;   iy_aux[i].resize( nf, 1, 1, 1 ); }
   208           else if( iy_aux_vars[i] == 
"iy"   &&  auxIy < 0 )
   209             { auxIy = i;           iy_aux[i].resize( nf, ns, 1, np ); }
   210           else if( iy_aux_vars[i] == 
"Optical depth" )
   211             { auxOptDepth = i;     iy_aux[i].resize( nf, 1, 1, 1 ); }
   212           else if( iy_aux_vars[i].substr(0,14) == 
"Mass content, " )
   215               istringstream is(iy_aux_vars[i].substr(14,2));
   217               if( icont < 0  ||  icont>=particle_masses.
ncols() )
   220                   os << 
"You have selected particle mass content category with "   221                      << 
"index " << icont << 
".\nThis category is not defined!";
   222                   throw runtime_error( os.str() );
   224               auxPartCont.push_back(i);
   225               auxPartContI.push_back(icont);
   226               iy_aux[i].resize( 1, 1, 1, np );
   228           else if( iy_aux_vars[i].substr(0,10) == 
"PND, type " )
   231               istringstream is(iy_aux_vars[i].substr(10,2));
   233               if( ip < 0  ||  ip>=pnd_field.
nbooks() )
   236                   os << 
"You have selected particle number density field with "   237                      << 
"index " << ip << 
".\nThis field is not defined!";
   238                   throw runtime_error( os.str() );
   240               auxPartField.push_back(i);
   241               auxPartFieldI.push_back(ip);
   242               iy_aux[i].resize( 1, 1, 1, np );
   247               os << 
"In *iy_aux_vars* you have included: \"" << iy_aux_vars[i]
   248                  << 
"\"\nThis choice is not recognised.";
   249               throw runtime_error( os.str() );
   258   Matrix       ppath_vmr, ppath_pnd, ppath_wind, ppath_mag, ppath_f;
   261   Tensor4      ppath_abs, trans_partial, trans_cumulat, pnd_ext_mat;
   272                           ppath_wind, ppath_mag, 
   273                           ppath, atmosphere_dim, p_grid, t_field, vmr_field,
   274                           wind_u_field, wind_v_field, wind_w_field,
   275                           mag_u_field, mag_v_field, mag_w_field );
   276       get_ppath_f(        ppath_f, ppath, f_grid,  atmosphere_dim, 
   277                           rte_alonglos_v, ppath_wind );
   279                           propmat_clearsky_agenda, ppath, 
   280                           ppath_p, ppath_t, ppath_vmr, ppath_f, 
   281                           ppath_mag, f_grid, stokes_dim, iaps );
   283                           ppath, ppath_t, ppath_f );
   287                            scalar_tau, ppath, ppath_abs, f_grid, stokes_dim );
   291           get_ppath_ext(    clear2cloudbox, pnd_abs_vec, pnd_ext_mat, scat_data,
   292                             ppath_pnd, ppath, ppath_t, stokes_dim, ppath_f, 
   293                             atmosphere_dim, cloudbox_limits, pnd_field, 
   294                             use_mean_scat_data, scat_data_array, verbosity );
   296                             scalar_tau, ppath, ppath_abs, f_grid, stokes_dim, 
   297                             clear2cloudbox, pnd_ext_mat );
   304       trans_cumulat.
resize( nf, ns, ns, np );
   305       for( 
Index iv=0; iv<nf; iv++ )
   313   if( iy_agenda_call1 )
   325                           iy_trans_new, jacobian_do, ppath, rte_pos2, 
   326                           atmosphere_dim, t_field, z_field, vmr_field, 
   327                           cloudbox_on, stokes_dim, f_grid, iy_main_agenda, 
   328                           iy_space_agenda, iy_surface_agenda, iy_cbox_agenda,
   335   if( auxBackground >= 0 ) 
   342   if( auxOptDepth >= 0 ) 
   343     { iy_aux[auxOptDepth](
joker,0,0,0) = scalar_tau; }
   354       if( auxPressure >= 0 ) 
   355         { iy_aux[auxPressure](0,0,0,np-1) = ppath_p[np-1]; }
   357       if( auxTemperature >= 0 ) 
   358         { iy_aux[auxTemperature](0,0,0,np-1) = ppath_t[np-1]; }
   360       for( 
Index j=0; j<auxVmrSpecies.nelem(); j++ )
   361         { iy_aux[auxVmrSpecies[j]](0,0,0,np-1) = ppath_vmr(auxVmrIsp[j],np-1); }
   364         { 
for( 
Index iv=0; iv<nf; iv++ ) {
   365             for( 
Index is1=0; is1<
ns; is1++ ){
   366               for( 
Index is2=0; is2<
ns; is2++ ){
   367                 iy_aux[auxAbsSum](iv,is1,is2,np-1) = 
   368                                              ppath_abs(iv,is1,is2,np-1); } } } }
   369       for( 
Index j=0; j<auxAbsSpecies.nelem(); j++ )
   370         { 
for( 
Index iv=0; iv<nf; iv++ ) {
   371             for( 
Index is1=0; is1<stokes_dim; is1++ ){
   372               for( 
Index is2=0; is2<stokes_dim; is2++ ){
   373                 iy_aux[auxAbsSpecies[j]](iv,is1,is2,np-1) = 
   374                           abs_per_species(auxAbsIsp[j],iv,is1,is2,np-1); } } } }
   379           for( 
Index j=0; j<auxPartCont.nelem(); j++ )
   380             { iy_aux[auxPartCont[j]](0,0,0,np-1) = ppath_pnd(
joker,np-1) *
   381                                       particle_masses(
joker,auxPartContI[j]); }
   383           for( 
Index j=0; j<auxPartField.nelem(); j++ )
   384             { iy_aux[auxPartField[j]](0,0,0,np-1) = 
   385                                             ppath_pnd(auxPartFieldI[j],np-1); }
   394       Matrix ssource0(nf,ns,0), ssource1(nf,ns);
   398       if( use_mean_scat_data )
   399         { nfs = 1;  ivf = 0; }
   402       for( 
Index ip=np-2; ip>=0; ip-- )
   406           for( 
Index iv=0; iv<nf; iv++ )  
   407             { bbar[iv] = 0.5 * ( ppath_blackrad(iv,ip) +
   408                                  ppath_blackrad(iv,ip+1) ); }
   411           bool any_particles = clear2cloudbox[ip] >= 0 || 
   412                                clear2cloudbox[ip+1] >= 0;
   431                   for( 
Index iv=0; iv<nf; iv++ )
   437                       if( clear2cloudbox[ip] >= 0 )
   439                                           clear2cloudbox[ip]), stokes_dim ); } 
   440                       if( clear2cloudbox[ip+1] >= 0 )
   442                                         clear2cloudbox[ip+1]), stokes_dim ); } 
   445                       Matrix ext_mat(stokes_dim,stokes_dim);  
   446                       for( 
Index is1=0; is1<stokes_dim; is1++ ) {
   447                         for( 
Index is2=0; is2<stokes_dim; is2++ ) {
   448                           ext_mat(is1,is2) = 0.5 * ( pabs_mat(is1,is2) +
   449                                                   ppath_abs(iv,is1,is2,ip) +
   450                                                   ppath_abs(iv,is1,is2,ip+1) );
   455                                  ext_mat, ppath.
lstep[ip] );
   487                   if( clear2cloudbox[ip] < 0 )
   506                         for( 
Index i=0; i<nza; i++ )
   509                             Vector los( 1, fos_iyin_za_angles[i] );
   518                             fos( ws, iyl, iy_auxl, ppathl, diy_dxl, 
   519                                  stokes_dim, f_grid, atmosphere_dim,
   520                                  p_grid, z_field, t_field, vmr_field, 
   521                                  abs_species, wind_u_field, wind_v_field, 
   522                                  wind_w_field, mag_u_field, mag_v_field, 
   523                                  mag_w_field, cloudbox_on, cloudbox_limits, 
   524                                  pnd_field, use_mean_scat_data, scat_data_array, 
   525                                  particle_masses, iy_unit, iy_aux_vars, 
   526                                  jacobian_do, ppath_agenda, 
   527                                  blackbody_radiation_agenda, 
   528                                  propmat_clearsky_agenda, iy_main_agenda, 
   529                                  iy_space_agenda, iy_surface_agenda, 0,
   530                                  iy_trans_new, pos, los, rte_pos2, 
   531                                  rte_alonglos_v, ppath_lraytrace, 
   532                                  fos_scatint_angles, fos_iyin_za_angles, 
   533                                  fos_za_interporder, fos_n, fos_i+1,
   542                                       fos_scatint_angles(
joker,0),
   543                                       fos_za_interporder );
   544                         Matrix itw( nin, fos_za_interporder+1 );
   547                         for( 
Index iv=0; iv<nf; iv++ ) 
   549                             for( 
Index is1=0; is1<stokes_dim; is1++ ) 
   552                                         Y1(
joker,iv,is1), gp );
   564                       Tensor4  P( nin, nfs, stokes_dim, stokes_dim );
   565                       Matrix   P1( stokes_dim, stokes_dim );
   567                       for( 
Index ii=0; ii<nin; ii++ )
   569                           for( 
Index iv=0; iv<nfs; iv++ )
   572                                                   fos_scatint_angles(ii,0), 
   573                                                   fos_scatint_angles(ii,1), 
   574                                                   scat_data[iv], stokes_dim, 
   576                                                   ppath_t[ip], verbosity );
   584                       for( 
Index iv=0; iv<nf; iv++ )
   587                           for( 
Index ii=0; ii<nin; ii++ )
   591                               ssource0(iv,
joker) += sp;
   598                   for( 
Index iv=0; iv<nf; iv++ )
   601                       Matrix  ext_mat( stokes_dim, stokes_dim );
   602                       Vector  abs_vec( stokes_dim );
   603                       Vector  sbar( stokes_dim, 0 );
   606                       for( 
Index is1=0; is1<stokes_dim; is1++ )
   608                           abs_vec[is1] = 0.5 * (                
   609                                                     ppath_abs(iv,is1,0,ip) +
   610                                                     ppath_abs(iv,is1,0,ip+1) );
   611                           for( 
Index is2=0; is2<stokes_dim; is2++ )
   613                               ext_mat(is1,is2) = 0.5 * (
   614                                                   ppath_abs(iv,is1,is2,ip) +
   615                                                   ppath_abs(iv,is1,is2,ip+1) );
   619                       if( clear2cloudbox[ip] >= 0 )
   621                           for( 
Index is1=0; is1<stokes_dim; is1++ )
   623                               sbar[is1]    += 0.5 * ssource0(iv,is1); 
   624                               abs_vec[is1] += 0.5 * (
   625                                      pnd_abs_vec(iv,is1,clear2cloudbox[ip]) );
   626                               for( 
Index is2=0; is2<stokes_dim; is2++ )
   628                                   ext_mat(is1,is2) += 0.5 * (
   629                                   pnd_ext_mat(iv,is1,is2,clear2cloudbox[ip]) );
   633                       if( clear2cloudbox[ip+1] >= 0 )
   635                           for( 
Index is1=0; is1<stokes_dim; is1++ )
   637                               sbar[is1]    += 0.5 * ssource1(iv,is1); 
   638                               abs_vec[is1] += 0.5 * (
   639                                     pnd_abs_vec(iv,is1,clear2cloudbox[ip+1]) );
   640                               for( 
Index is2=0; is2<stokes_dim; is2++ )
   642                                   ext_mat(is1,is2) += 0.5 * (
   643                                   pnd_ext_mat(iv,is1,is2,clear2cloudbox[ip+1]));
   652                                      sbar, ppath.
lstep[ip], bbar[iv], 
true );
   659           if( auxPressure >= 0 ) 
   660             { iy_aux[auxPressure](0,0,0,ip) = ppath_p[ip]; }
   662           if( auxTemperature >= 0 ) 
   663             { iy_aux[auxTemperature](0,0,0,ip) = ppath_t[ip]; }
   665           for( 
Index j=0; j<auxVmrSpecies.nelem(); j++ )
   666             { iy_aux[auxVmrSpecies[j]](0,0,0,ip) = ppath_vmr(auxVmrIsp[j],ip);}
   669             { 
for( 
Index iv=0; iv<nf; iv++ ) {
   670                 for( 
Index is1=0; is1<
ns; is1++ ){
   671                   for( 
Index is2=0; is2<
ns; is2++ ){
   672                     iy_aux[auxAbsSum](iv,is1,is2,ip) = 
   673                                               ppath_abs(iv,is1,is2,ip); } } } }
   674           for( 
Index j=0; j<auxAbsSpecies.nelem(); j++ )
   675             { 
for( 
Index iv=0; iv<nf; iv++ ) {
   676                 for( 
Index is1=0; is1<stokes_dim; is1++ ){
   677                   for( 
Index is2=0; is2<stokes_dim; is2++ ){
   678                     iy_aux[auxAbsSpecies[j]](iv,is1,is2,ip) = 
   679                            abs_per_species(auxAbsIsp[j],iv,is1,is2,ip); } } } }
   684               for( 
Index j=0; j<auxPartCont.nelem(); j++ )
   685                 { iy_aux[auxPartCont[j]](0,0,0,ip) = ppath_pnd(
joker,ip) *
   686                                       particle_masses(
joker,auxPartContI[j]); }
   688               for( 
Index j=0; j<auxPartField.nelem(); j++ )
   689                 { iy_aux[auxPartField[j]](0,0,0,ip) = 
   690                                               ppath_pnd(auxPartFieldI[j],ip); }
   701   if( iy_agenda_call1 )
   707           os << 
"When any unit conversion is applied, "   708              << 
"*blackbody_radiation_agenda\nmust use "   709              << 
"*blackbody_radiationPlanck* or a corresponding WSM.\nA test "   710              << 
"call of the agenda indicates that this is not the case.";
   711           throw runtime_error( os.str() );
   718         { n = ppath.
nreal[np-1]; }
   722       for( 
Index is=0; is<stokes_dim; is++ )
   723         { i_pol[is] = is + 1; }
   731           if( iy_aux_vars[
q] == 
"iy")
   733               for( 
Index ip=0; ip<ppath.
np; ip++ )
   735                                  ppath.
nreal[ip], i_pol ); }
   756    const Index&                       stokes_dim,
   758    const Index&                       atmosphere_dim,
   770    const Index&                       cloudbox_on,
   773    const Index&                       use_mean_scat_data,
   775    const Matrix&                      particle_masses,
   778    const Index&                       jacobian_do,
   779    const Agenda&                      ppath_agenda,
   780    const Agenda&                      blackbody_radiation_agenda,
   781    const Agenda&                      propmat_clearsky_agenda,
   782    const Agenda&                      iy_main_agenda,
   783    const Agenda&                      iy_space_agenda,
   784    const Agenda&                      iy_surface_agenda,
   785    const Index&                       iy_agenda_call1,
   786    const Tensor3&                     iy_transmission,
   791    const Numeric&                     ppath_lraytrace,
   792    const Matrix&                      fos_scatint_angles,
   793    const Vector&                      fos_iyin_za_angles,
   794    const Index&                       fos_za_interporder,
   801      "This method does not yet provide any jacobians (jacobian_do must be 0)" );
   802   if( fos_scatint_angles.
ncols() != 2 )
   803     throw runtime_error( 
"The WSV *fos_scatint_angles* must have two columns." );
   804   if( 
min(fos_scatint_angles(
joker,0))<0 || 
   805       max(fos_scatint_angles(
joker,0))>180 )
   807           "The zenith angles in *fos_scatint_angles* shall be inside [0,180]." );
   808   if( 
min(fos_scatint_angles(
joker,1))<-180 || 
   809       max(fos_scatint_angles(
joker,1))>180 )
   811       "The azimuth angles in *fos_scatint_angles* shall be inside [-180,180]." );
   812   if( 
min(fos_iyin_za_angles)<0 || 
max(fos_iyin_za_angles)>180 )
   814           "The zenith angles in *fos_iyin_za_angles* shall be inside [0,180]." );
   815   if( fos_iyin_za_angles[0] != 0 ) 
   816     throw runtime_error( 
"The first value in *fos_iyin_za_angles* must be 0." );
   817   if( 
last(fos_iyin_za_angles) != 180 ) 
   818     throw runtime_error( 
"The last value in *fos_iyin_za_angles* must be 180." );
   819   if( fos_za_interporder < 1 )
   820     throw runtime_error( 
"The argument *fos_za_interporder* must be >= 1." );
   821   if( fos_iyin_za_angles.
nelem() <= fos_za_interporder )
   822     throw runtime_error( 
"The length of *fos_iyin_za_angles* must at least "   823                          "be *fos_za_interporder* + 1." );
   825     throw runtime_error( 
"The argument *fos_n* must be >= 0." );
   831   if( !iy_agenda_call1 )
   834   fos( ws, iy, iy_aux, ppath, diy_dx, stokes_dim, f_grid, atmosphere_dim,
   835        p_grid, z_field, t_field, vmr_field, abs_species, wind_u_field, 
   836        wind_v_field, wind_w_field, mag_u_field, mag_v_field, mag_w_field,
   837        cloudbox_on, cloudbox_limits, pnd_field, use_mean_scat_data,
   838        scat_data_array, particle_masses, iy_unit, iy_aux_vars, jacobian_do, 
   839        ppath_agenda, blackbody_radiation_agenda, propmat_clearsky_agenda,
   840        iy_main_agenda, iy_space_agenda, iy_surface_agenda, iy_agenda_call1,
   841        iy_transmission, rte_pos, rte_los, rte_pos2, rte_alonglos_v, 
   842        ppath_lraytrace, fos_scatint_angles, fos_iyin_za_angles, 
   843        fos_za_interporder, n, 0, verbosity );
 INDEX Index
The type to use for all integer numbers and indices. 
 
void ppath_agendaExecute(Workspace &ws, Ppath &ppath, const Numeric ppath_lraytrace, const Vector &rte_pos, const Vector &rte_los, const Vector &rte_pos2, const Index cloudbox_on, const Index ppath_inside_cloudbox_do, const Tensor3 &t_field, const Tensor3 &z_field, const Tensor4 &vmr_field, const Vector &f_grid, const Agenda &input_agenda)
 
Index find_first(const Array< base > &x, const base &w)
Find first occurance. 
 
void get_ppath_f(Matrix &ppath_f, const Ppath &ppath, ConstVectorView f_grid, const Index &atmosphere_dim, const Numeric &rte_alonglos_v, ConstMatrixView ppath_wind)
get_ppath_f 
 
void iyFOS(Workspace &ws, Matrix &iy, ArrayOfTensor4 &iy_aux, Ppath &ppath, ArrayOfTensor3 &diy_dx, const Index &stokes_dim, const Vector &f_grid, const Index &atmosphere_dim, const Vector &p_grid, const Tensor3 &z_field, const Tensor3 &t_field, const Tensor4 &vmr_field, const ArrayOfArrayOfSpeciesTag &abs_species, const Tensor3 &wind_u_field, const Tensor3 &wind_v_field, const Tensor3 &wind_w_field, const Tensor3 &mag_u_field, const Tensor3 &mag_v_field, const Tensor3 &mag_w_field, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Tensor4 &pnd_field, const Index &use_mean_scat_data, const ArrayOfSingleScatteringData &scat_data_array, const Matrix &particle_masses, const String &iy_unit, const ArrayOfString &iy_aux_vars, const Index &jacobian_do, const Agenda &ppath_agenda, const Agenda &blackbody_radiation_agenda, const Agenda &propmat_clearsky_agenda, const Agenda &iy_main_agenda, const Agenda &iy_space_agenda, const Agenda &iy_surface_agenda, const Index &iy_agenda_call1, const Tensor3 &iy_transmission, const Vector &rte_pos, const Vector &rte_los, const Vector &rte_pos2, const Numeric &rte_alonglos_v, const Numeric &ppath_lraytrace, const Matrix &fos_scatint_angles, const Vector &fos_iyin_za_angles, const Index &fos_za_interporder, const Index &fos_n, const Verbosity &verbosity)
WORKSPACE METHOD: iyFOS. 
 
void iy_transmission_mult(Tensor3 &iy_trans_total, ConstTensor3View iy_trans_old, ConstTensor3View iy_trans_new)
iy_transmission_mult 
 
Index nelem() const
Number of elements. 
 
Numeric interp(ConstVectorView itw, ConstVectorView a, const GridPos &tc)
Red 1D Interpolate. 
 
void apply_iy_unit(MatrixView iy, const String &y_unit, ConstVectorView f_grid, const Numeric &n, const ArrayOfIndex &i_pol)
apply_iy_unit 
 
Numeric last(ConstVectorView x)
last 
 
void get_ppath_blackrad(Workspace &ws, Matrix &ppath_blackrad, const Agenda &blackbody_radiation_agenda, const Ppath &ppath, ConstVectorView ppath_t, ConstMatrixView ppath_f)
get_ppath_blackrad 
 
void get_ppath_abs(Workspace &ws, Tensor4 &ppath_abs, Tensor5 &abs_per_species, const Agenda &propmat_clearsky_agenda, const Ppath &ppath, ConstVectorView ppath_p, ConstVectorView ppath_t, ConstMatrixView ppath_vmr, ConstMatrixView ppath_f, ConstMatrixView ppath_mag, ConstVectorView f_grid, const Index &stokes_dim, const ArrayOfIndex &ispecies)
get_ppath_abs 
 
Index nelem() const
Returns the number of elements. 
 
Index ppath_what_background(const Ppath &ppath)
ppath_what_background 
 
void get_ppath_atmvars(Vector &ppath_p, Vector &ppath_t, Matrix &ppath_vmr, Matrix &ppath_wind, Matrix &ppath_mag, const Ppath &ppath, const Index &atmosphere_dim, ConstVectorView p_grid, ConstTensor3View t_field, ConstTensor4View vmr_field, ConstTensor3View wind_u_field, ConstTensor3View wind_v_field, ConstTensor3View wind_w_field, ConstTensor3View mag_u_field, ConstTensor3View mag_v_field, ConstTensor3View mag_w_field)
get_ppath_atmvars 
 
void mult(VectorView y, const ConstMatrixView &M, const ConstVectorView &x)
Matrix Vector multiplication. 
 
void fos(Workspace &ws, Matrix &iy, ArrayOfTensor4 &iy_aux, Ppath &ppath, ArrayOfTensor3 &diy_dx, const Index &stokes_dim, const Vector &f_grid, const Index &atmosphere_dim, const Vector &p_grid, const Tensor3 &z_field, const Tensor3 &t_field, const Tensor4 &vmr_field, const ArrayOfArrayOfSpeciesTag &abs_species, const Tensor3 &wind_u_field, const Tensor3 &wind_v_field, const Tensor3 &wind_w_field, const Tensor3 &mag_u_field, const Tensor3 &mag_v_field, const Tensor3 &mag_w_field, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Tensor4 &pnd_field, const Index &use_mean_scat_data, const ArrayOfSingleScatteringData &scat_data_array, const Matrix &particle_masses, const String &iy_unit, const ArrayOfString &iy_aux_vars, const Index &jacobian_do, const Agenda &ppath_agenda, const Agenda &blackbody_radiation_agenda, const Agenda &propmat_clearsky_agenda, const Agenda &iy_main_agenda, const Agenda &iy_space_agenda, const Agenda &iy_surface_agenda, const Index &iy_agenda_call1, const Tensor3 &iy_transmission, const Vector &rte_pos, const Vector &rte_los, const Vector &rte_pos2, const Numeric &rte_alonglos_v, const Numeric &ppath_lraytrace, const Matrix &fos_scatint_angles, const Vector &fos_iyin_za_angles, const Index &fos_za_interporder, const Index &fos_n, const Index &fos_i, const Verbosity &verbosity)
 
The implementation for String, the ARTS string class. 
 
Index ncols() const
Returns the number of columns. 
 
The global header file for ARTS. 
 
NUMERIC Numeric
The type to use for all floating point numbers. 
 
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. 
 
Radiative transfer in cloudbox. 
 
void emission_rtstep(Matrix &iy, const Index &stokes_dim, ConstVectorView bbar, ArrayOfIndex &extmat_case, ConstTensor3View t)
emission_rtstep 
 
This can be used to make arrays out of anything. 
 
void resize(Index n)
Assignment operator from VectorView. 
 
Index nbooks() const
Returns the number of books. 
 
void get_ppath_ext(ArrayOfIndex &clear2cloudbox, Tensor3 &pnd_abs_vec, Tensor4 &pnd_ext_mat, Array< ArrayOfSingleScatteringData > &scat_data, Matrix &ppath_pnd, const Ppath &ppath, ConstVectorView ppath_t, const Index &stokes_dim, ConstMatrixView ppath_f, const Index &atmosphere_dim, const ArrayOfIndex &cloudbox_limits, const Tensor4 &pnd_field, const Index &use_mean_scat_data, const ArrayOfSingleScatteringData &scat_data_array, const Verbosity &verbosity)
get_ppath_ext 
 
void mirror_los(Vector &los_mirrored, ConstVectorView los, const Index &atmosphere_dim)
mirror_los 
 
void get_ppath_trans2(Tensor4 &trans_partial, ArrayOfArrayOfIndex &extmat_case, Tensor4 &trans_cumulat, Vector &scalar_tau, const Ppath &ppath, ConstTensor4View &ppath_abs, ConstVectorView f_grid, const Index &stokes_dim, const ArrayOfIndex &clear2cloudbox, ConstTensor4View pnd_ext_mat)
get_ppath_trans2 
 
void get_iy_of_background(Workspace &ws, Matrix &iy, ArrayOfTensor3 &diy_dx, ConstTensor3View iy_transmission, const Index &jacobian_do, const Ppath &ppath, ConstVectorView rte_pos2, const Index &atmosphere_dim, ConstTensor3View t_field, ConstTensor3View z_field, ConstTensor4View vmr_field, const Index &cloudbox_on, const Index &stokes_dim, ConstVectorView f_grid, const Agenda &iy_main_agenda, const Agenda &iy_space_agenda, const Agenda &iy_surface_agenda, const Agenda &iy_cloudbox_agenda, const Verbosity &verbosity)
get_iy_of_background 
 
void id_mat(MatrixView I)
Identity Matrix. 
 
The structure to describe a propagation path and releated quantities. 
 
Header file for helper functions for OpenMP. 
 
void interpweights(VectorView itw, const GridPos &tc)
Red 1D interpolation weights. 
 
void get_ppath_trans(Tensor4 &trans_partial, ArrayOfArrayOfIndex &extmat_case, Tensor4 &trans_cumulat, Vector &scalar_tau, const Ppath &ppath, ConstTensor4View &ppath_abs, ConstVectorView f_grid, const Index &stokes_dim)
get_ppath_trans 
 
void ext_matFromabs_vec(MatrixView ext_mat, ConstVectorView abs_vec, const Index &stokes_dim)
Derive extinction matrix from absorption vector. 
 
Index nrows() const
Returns the number of rows. 
 
void resize(Index b, Index p, Index r, Index c)
Resize function. 
 
void rte_step_doit(VectorView stokes_vec, MatrixView trans_mat, ConstMatrixView ext_mat_av, ConstVectorView abs_vec_av, ConstVectorView sca_vec_av, const Numeric &lstep, const Numeric &rtp_planck_value, const bool &trans_is_precalc)
rte_step_doit 
 
void ext2trans(MatrixView trans_mat, Index &icase, ConstMatrixView ext_mat, const Numeric &lstep)
 
void pha_mat_singleCalc(MatrixView Z, const Numeric za_sca, const Numeric aa_sca, const Numeric za_inc, const Numeric aa_inc, const ArrayOfSingleScatteringData &scat_data_array_mono, const Index stokes_dim, ConstVectorView pnd_vec, const Numeric rtp_temperature, const Verbosity &verbosity)
pha_mat_singleCalc 
 
Declaration of functions in rte.cc.