59 const Index& N_za_grid,
60 const Index& N_aa_grid,
61 const String& za_grid_type,
66 else if (N_aa_grid < 1) {
68 os <<
"N_aa_grid must be > 0 (even for 1D).";
69 throw std::runtime_error(os.
str());
75 if (N_za_grid % 2 == 1) {
77 os <<
"N_za_grid must be even.";
78 throw runtime_error(os.
str());
81 Index nph = N_za_grid / 2;
86 za_grid_weights.
resize(N_za_grid);
89 if (za_grid_type ==
"double_gauss") {
106 x[xtemp.
nelem() - 1] = acos((xtemp[0] + 1) / 2) /
DEG2RAD;
107 w[wtemp.
nelem() - 1] = wtemp[0] / 2;
111 x[xtemp.
nelem() +
i] = acos(1 - (xtemp[
i + 1] + 1) / 2.) /
DEG2RAD;
113 w[
i] = wtemp[wtemp.
nelem() - 1 -
i] / 2;
114 w[wtemp.
nelem() +
i] = wtemp[
i + 1] / 2;
121 w[
i] = wtemp[wtemp.
nelem() - 1 -
i] / 2;
122 w[wtemp.
nelem() +
i] = wtemp[
i] / 2;
130 za_grid[za_grid.
nelem() - 1 -
i] = 180 - x[
i];
133 za_grid_weights[
i] = w[
i];
134 za_grid_weights[za_grid_weights.
nelem() - 1 -
i] = w[
i];
137 }
else if (za_grid_type ==
"linear") {
142 for (
Index i = 0;
i < N_za_grid;
i++) {
143 za_grid[
i] = (x[
i] + 1) * 90.;
147 za_grid_weights[
i] = w[
i] * sin(za_grid[
i] *
DEG2RAD);
149 }
else if (za_grid_type ==
"linear_mu") {
160 for (
Index i = 0;
i < N_za_grid;
i++) {
170 os <<
"The selected grid type is not implemented";
171 throw std::runtime_error(os.
str());
177 if (za_grid[0] < 0) {
181 if (za_grid[za_grid.
nelem() - 1] > 180) {
182 za_grid[za_grid.
nelem() - 1] = 180.;
189 const Tensor4& irradiance_field,
190 const Tensor3& specific_heat_capacity,
195 irradiance_field.
npages(),
196 irradiance_field.
nrows());
208 for (
Index b = 1; b < irradiance_field.
nbooks() - 1; b++) {
209 for (
Index p = 0; p < irradiance_field.
npages(); p++) {
211 net_flux_b = (irradiance_field(b - 1, p,
r, 0) +
212 irradiance_field(b - 1, p,
r, 1));
213 net_flux_t = (irradiance_field(b + 1, p,
r, 0) +
214 irradiance_field(b + 1, p,
r, 1));
216 heating_rates(b, p,
r) = (net_flux_t - net_flux_b) /
217 (p_grid[b + 1] - p_grid[b - 1]) * g0 /
218 specific_heat_capacity(b, p,
r);
223 idx = irradiance_field.
nbooks();
226 for (
Index p = 0; p < irradiance_field.
npages(); p++) {
230 (irradiance_field(0, p,
r, 0) + irradiance_field(0, p,
r, 1));
232 (irradiance_field(1, p,
r, 0) + irradiance_field(1, p,
r, 1));
234 (irradiance_field(2, p,
r, 0) + irradiance_field(0, p,
r, 1));
236 heating_rates(0, p,
r) = (-3 * net_flux_b + 4 * net_flux_c - net_flux_t) /
237 (p_grid[2] - p_grid[0]) * g0 /
238 specific_heat_capacity(0, p,
r);
241 net_flux_t = (irradiance_field(idx - 1, p,
r, 0) +
242 irradiance_field(idx - 1, p,
r, 1));
243 net_flux_c = (irradiance_field(idx - 2, p,
r, 0) +
244 irradiance_field(idx - 2, p,
r, 1));
245 net_flux_b = (irradiance_field(idx - 3, p,
r, 0) +
246 irradiance_field(idx - 3, p,
r, 1));
248 heating_rates(idx - 1, p,
r) =
249 -(-3 * net_flux_t + 4 * net_flux_c - net_flux_b) /
250 (p_grid[2] - p_grid[0]) * g0 / specific_heat_capacity(0, p,
r);
260 const Vector& za_grid_weights,
266 Tensor4 radiance_field_aa_integrated;
271 radiance_field_aa_integrated =
273 radiance_field_aa_integrated *= 2 *
PI;
280 radiance_field.
nrows());
281 radiance_field_aa_integrated = 0.;
283 for (
Index b = 0; b < radiance_field_aa_integrated.
nbooks(); b++) {
284 for (
Index p = 0; p < radiance_field_aa_integrated.
npages(); p++) {
285 for (
Index r = 0;
r < radiance_field_aa_integrated.
nrows();
r++) {
286 for (
Index c = 0; c < radiance_field_aa_integrated.
ncols(); c++) {
287 for (
Index i = 0;
i < N_scat_aa - 1;
i++) {
288 radiance_field_aa_integrated(b, p,
r, c) +=
289 (radiance_field(b, p,
r, c,
i) +
290 radiance_field(b, p,
r, c,
i + 1)) /
304 irradiance_field = 0;
308 for (
Index b = 0; b < irradiance_field.
nbooks(); b++) {
309 for (
Index p = 0; p < irradiance_field.
npages(); p++) {
311 for (
Index i = 0;
i < N_scat_za;
i++) {
312 if (za_grid[
i] <= 90.) {
313 irradiance_field(b, p,
r, 0) +=
314 radiance_field_aa_integrated(b, p,
r,
i) *
315 cos(za_grid[
i] *
DEG2RAD) * (-1.) * za_grid_weights[
i];
317 irradiance_field(b, p,
r, 1) +=
318 radiance_field_aa_integrated(b, p,
r,
i) *
319 cos(za_grid[
i] *
DEG2RAD) * (-1.) * za_grid_weights[
i];
330 const Tensor5& spectral_radiation_field,
334 "The length of f_grid does not match with\n" 335 " the first dimension of the spectral_radiation_field");
339 radiation_field.
resize(spectral_radiation_field.
nbooks(),
340 spectral_radiation_field.
npages(),
341 spectral_radiation_field.
nrows(),
342 spectral_radiation_field.
ncols());
347 const Numeric df = f_grid[
i + 1] - f_grid[
i];
349 for (
Index b = 0; b < radiation_field.
nbooks(); b++) {
350 for (
Index p = 0; p < radiation_field.
npages(); p++) {
352 for (
Index c = 0; c < radiation_field.
ncols(); c++) {
353 radiation_field(b, p,
r, c) +=
354 (spectral_radiation_field(
i + 1, b, p,
r, c) +
355 spectral_radiation_field(
i, b, p,
r, c)) /
367 const Tensor7& spectral_radiation_field,
371 "The length of f_grid does not match with\n" 372 " the first dimension of the spectral_radiation_field");
377 spectral_radiation_field.
nshelves(),
378 spectral_radiation_field.
nbooks(),
379 spectral_radiation_field.
npages(),
380 spectral_radiation_field.
nrows());
385 const Numeric df = f_grid[
i + 1] - f_grid[
i];
388 for (
Index b = 0; b < radiation_field.
nbooks(); b++) {
389 for (
Index p = 0; p < radiation_field.
npages(); p++) {
391 for (
Index c = 0; c < radiation_field.
ncols(); c++) {
392 radiation_field(s, b, p,
r, c) +=
393 (spectral_radiation_field(
i + 1, s, b, p,
r, c, 0) +
394 spectral_radiation_field(
i, s, b, p,
r, c, 0)) /
406 Tensor5& spectral_irradiance_field,
407 const Tensor7& spectral_radiance_field,
410 const Vector& za_grid_weights,
416 Tensor5 iy_field_aa_integrated;
421 iy_field_aa_integrated =
423 iy_field_aa_integrated *= 2 *
PI;
430 spectral_radiance_field.
nbooks(),
431 spectral_radiance_field.
npages());
432 iy_field_aa_integrated = 0.;
434 for (
Index s = 0; s < iy_field_aa_integrated.
nshelves(); s++) {
435 for (
Index b = 0; b < iy_field_aa_integrated.
nbooks(); b++) {
436 for (
Index p = 0; p < iy_field_aa_integrated.
npages(); p++) {
438 for (
Index c = 0; c < iy_field_aa_integrated.
ncols(); c++) {
439 for (
Index i = 0;
i < N_scat_aa - 1;
i++) {
440 iy_field_aa_integrated(s, b, p,
r, c) +=
441 (spectral_radiance_field(s, b, p,
r, c,
i, 0) +
442 spectral_radiance_field(s, b, p,
r, c,
i + 1, 0)) /
456 spectral_radiance_field.
nbooks(),
458 spectral_irradiance_field = 0;
461 for (
Index s = 0; s < spectral_irradiance_field.
nshelves(); s++) {
462 for (
Index b = 0; b < spectral_irradiance_field.
nbooks(); b++) {
463 for (
Index p = 0; p < spectral_irradiance_field.
npages(); p++) {
464 for (
Index r = 0;
r < spectral_irradiance_field.
nrows();
r++) {
465 for (
Index i = 0;
i < N_scat_za;
i++) {
466 if (za_grid[
i] <= 90.) {
467 spectral_irradiance_field(s, b, p,
r, 0) +=
468 iy_field_aa_integrated(s, b, p,
r,
i) *
469 cos(za_grid[
i] *
DEG2RAD) * (-1.) * za_grid_weights[
i];
471 spectral_irradiance_field(s, b, p,
r, 1) +=
472 iy_field_aa_integrated(s, b, p,
r,
i) *
473 cos(za_grid[
i] *
DEG2RAD) * (-1.) * za_grid_weights[
i];
485 Tensor7& spectral_radiance_field,
487 const Agenda& propmat_clearsky_agenda,
488 const Agenda& water_p_eq_agenda,
489 const Agenda& iy_space_agenda,
490 const Agenda& iy_surface_agenda,
491 const Agenda& iy_cloudbox_agenda,
492 const Index& stokes_dim,
494 const Index& atmosphere_dim,
510 const Tensor3& surface_props_data,
512 const Index& use_parallel_iy,
515 if (atmosphere_dim != 1)
516 throw runtime_error(
"This method only works for atmosphere_dim = 1.");
524 spectral_radiance_field.
resize(nf, nl, 1, 1, nza, 1, stokes_dim);
525 trans_field.
resize(nf, nl, nza);
528 const Index cloudbox_on = 0, ppath_inside_cloudbox_do = 0;
532 const String iy_unit =
"1";
535 const Index iy_agenda_call1 = 1;
536 const Tensor3 iy_transmission(0, 0, 0);
537 const Index jacobian_do = 0;
540 const Numeric z_space = z_field(nl - 1, 0, 0) + 10;
552 iy_main_agenda.
set_name(
"iy_main_agenda");
553 iy_main_agenda.
check(ws, verbosity);
561 #pragma omp parallel for if (!arts_omp_in_parallel() && nza > 1 && \ 562 !use_parallel_iy) firstprivate(l_ws) 564 if (failed)
continue;
569 Matrix iy, ppvar_vmr, ppvar_wind, ppvar_mag, ppvar_f;
572 Tensor4 ppvar_trans_cumulat, ppvar_trans_partial;
578 Vector rte_pos(1, za_grid[i] < 90 ? z_surface(0, 0) : z_space);
586 ppath_inside_cloudbox_do,
591 assert(ppath.
gp_p[ppath.
np - 1].idx == i0 ||
592 ppath.
gp_p[ppath.
np - 1].idx == nl - 2);
594 if (use_parallel_iy) {
631 propmat_clearsky_agenda,
679 propmat_clearsky_agenda,
691 assert(iy.
ncols() == stokes_dim);
694 if (za_grid[i] < 90) {
695 spectral_radiance_field(
joker, i0, 0, 0, i, 0,
joker) =
697 spectral_radiance_field(
joker, nl - 1, 0, 0, i, 0,
joker) =
699 trans_field(
joker, 0, i) = ppvar_trans_partial(0,
joker, 0, 0);
700 trans_field(
joker, nl - 1, i) =
701 ppvar_trans_partial(ppath.
np - 1,
joker, 0, 0);
703 spectral_radiance_field(
joker, nl - 1, 0, 0, i, 0,
joker) =
705 spectral_radiance_field(
joker, i0, 0, 0, i, 0,
joker) =
707 trans_field(
joker, nl - 1, i) = ppvar_trans_partial(0,
joker, 0, 0);
708 trans_field(
joker, 0, i) =
709 ppvar_trans_partial(ppath.
np - 1,
joker, 0, 0);
713 for (
Index p = 1; p < ppath.
np - 1; p++) {
715 if (ppath.
gp_p[p].fd[0] < 1e-2) {
716 spectral_radiance_field(
719 trans_field(
joker, ppath.
gp_p[p].idx, i) =
720 ppvar_trans_partial(p,
joker, 0, 0);
727 for (
Index p = 0; p < i0; p++) {
728 spectral_radiance_field(
joker, p, 0, 0, i, 0,
joker) =
729 spectral_radiance_field(
joker, i0, 0, 0, i, 0,
joker);
730 trans_field(
joker, p, i) = trans_field(
joker, i0, i);
733 }
catch (
const std::exception& e) {
734 #pragma omp critical(planep_setabort) 738 os <<
"Run-time error at nza #" <<
i <<
": \n" << e.what();
739 #pragma omp critical(planep_push_fail_msg) 740 fail_msg.push_back(os.
str());
744 if (fail_msg.
nelem()) {
746 for (
auto& msg : fail_msg) os << msg <<
'\n';
747 throw runtime_error(os.
str());
753 Tensor7& spectral_radiance_field,
754 const Index& atmosphere_dim,
756 const Index& cloudbox_on,
760 if (atmosphere_dim > 1)
761 throw runtime_error(
"This method can only be used for 1D calculations.\n");
763 throw runtime_error(
"Cloudbox is off. This is not handled by this method.");
764 if (cloudbox_limits[0] || cloudbox_limits[1] != p_grid.
nelem() - 1)
766 "The cloudbox must cover all pressure levels " 767 "to use this method.");
770 spectral_radiance_field = cloudbox_field;
776 Tensor7& spectral_radiance_field,
777 const Agenda& propmat_clearsky_agenda,
778 const Agenda& water_p_eq_agenda,
779 const Agenda& iy_space_agenda,
780 const Agenda& iy_surface_agenda,
781 const Agenda& iy_cloudbox_agenda,
782 const Index& stokes_dim,
784 const Index& atmosphere_dim,
798 const Index& cloudbox_on,
803 const Tensor3& surface_props_data,
805 const Index& use_parallel_iy,
808 if (atmosphere_dim != 1)
809 throw runtime_error(
"This method only works for atmosphere_dim = 1.");
811 throw runtime_error(
"No ned to use this method with cloudbox=0.");
812 if (cloudbox_limits[0])
814 "The first element of *cloudbox_limits* must be zero " 815 "to use this method.");
823 spectral_radiance_field.
resize(nf, nl, 1, 1, nza, 1, stokes_dim);
826 spectral_radiance_field(
joker,
827 Range(0, cloudbox_limits[1] + 1),
832 joker) = cloudbox_field;
835 const Index ppath_inside_cloudbox_do = 0;
836 const String iy_unit =
"1";
839 const Index iy_agenda_call1 = 1;
840 const Tensor3 iy_transmission(0, 0, 0);
841 const Index jacobian_do = 0;
844 const Numeric z_space = z_field(nl - 1, 0, 0) + 10;
855 iy_main_agenda.
set_name(
"iy_main_agenda");
856 iy_main_agenda.
check(ws, verbosity);
859 const Index i0 = cloudbox_limits[1];
860 const Numeric z_top = z_field(i0 + 1, 0, 0);
865 #pragma omp parallel for if (!arts_omp_in_parallel() && nza > 1 && \ 866 !use_parallel_iy) firstprivate(l_ws) 868 if (failed)
continue;
873 Matrix iy, ppvar_vmr, ppvar_wind, ppvar_mag, ppvar_f;
876 Tensor4 ppvar_trans_cumulat, ppvar_trans_partial;
882 Vector rte_pos(1, za_grid[i] < 90 ? z_top : z_space);
890 ppath_inside_cloudbox_do,
895 assert(ppath.
gp_p[ppath.
np - 1].idx == i0 ||
896 ppath.
gp_p[ppath.
np - 1].idx == nl - 2);
898 if (use_parallel_iy) {
935 propmat_clearsky_agenda,
983 propmat_clearsky_agenda,
995 assert(iy.
ncols() == stokes_dim);
999 if (za_grid[i] < 90) {
1000 spectral_radiance_field(
joker, i0 + 1, 0, 0, i, 0,
joker) =
1002 spectral_radiance_field(
joker, nl - 1, 0, 0, i, 0,
joker) =
1005 spectral_radiance_field(
joker, nl - 1, 0, 0, i, 0,
joker) =
1010 for (
Index p = 1; p < ppath.
np - 1; p++) {
1012 if (ppath.
gp_p[p].fd[0] < 1e-2) {
1013 spectral_radiance_field(
1019 }
catch (
const std::exception& e) {
1020 #pragma omp critical(planep_setabort) 1024 os <<
"Run-time error at nza #" <<
i <<
": \n" << e.what();
1025 #pragma omp critical(planep_push_fail_msg) 1026 fail_msg.push_back(os.
str());
1030 if (fail_msg.
nelem()) {
1032 for (
auto& msg : fail_msg) os << msg <<
'\n';
1033 throw runtime_error(os.
str());
Index npages() const
Returns the number of pages.
INDEX Index
The type to use for all integer numbers and indices.
void spectral_radiance_fieldCopyCloudboxField(Tensor7 &spectral_radiance_field, const Index &atmosphere_dim, const Vector &p_grid, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Tensor7 &cloudbox_field, const Verbosity &)
WORKSPACE METHOD: spectral_radiance_fieldCopyCloudboxField.
void irradiance_fieldFromRadiance(Tensor4 &irradiance_field, const Tensor5 &radiance_field, const Vector &za_grid, const Vector &aa_grid, const Vector &za_grid_weights, const Verbosity &)
WORKSPACE METHOD: irradiance_fieldFromRadiance.
Index nrows() const
Returns the number of rows.
Index nelem() const
Number of elements.
void resize(Index s, Index b, Index p, Index r, Index c)
Resize function.
void AngularGridsSetFluxCalc(Vector &za_grid, Vector &aa_grid, Vector &za_grid_weights, const Index &N_za_grid, const Index &N_aa_grid, const String &za_grid_type, const Verbosity &)
WORKSPACE METHOD: AngularGridsSetFluxCalc.
void check(Workspace &ws, const Verbosity &verbosity)
Checks consistency of an agenda.
Declarations having to do with the four output streams.
void spectral_radiance_fieldClearskyPlaneParallel(Workspace &ws, Tensor7 &spectral_radiance_field, Tensor3 &trans_field, const Agenda &propmat_clearsky_agenda, const Agenda &water_p_eq_agenda, const Agenda &iy_space_agenda, const Agenda &iy_surface_agenda, const Agenda &iy_cloudbox_agenda, 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 EnergyLevelMap &nlte_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 Matrix &z_surface, const Numeric &ppath_lmax, const Numeric &rte_alonglos_v, const Tensor3 &surface_props_data, const Vector &za_grid, const Index &use_parallel_iy, const Verbosity &verbosity)
WORKSPACE METHOD: spectral_radiance_fieldClearskyPlaneParallel.
Contains the code to calculate Legendre polynomials.
void spectral_radiance_fieldExpandCloudboxField(Workspace &ws, Tensor7 &spectral_radiance_field, const Agenda &propmat_clearsky_agenda, const Agenda &water_p_eq_agenda, const Agenda &iy_space_agenda, const Agenda &iy_surface_agenda, const Agenda &iy_cloudbox_agenda, 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 EnergyLevelMap &nlte_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 Matrix &z_surface, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Tensor7 &cloudbox_field, const Numeric &ppath_lmax, const Numeric &rte_alonglos_v, const Tensor3 &surface_props_data, const Vector &za_grid, const Index &use_parallel_iy, const Verbosity &verbosity)
WORKSPACE METHOD: spectral_radiance_fieldExpandCloudboxField.
Index nrows() const
Returns the number of rows.
Index npages() const
Returns the number of pages.
cmplx FADDEEVA() w(cmplx z, double relerr)
Index nbooks() const
Returns the number of books.
Index nrows() const
Returns the number of rows.
Index nelem() const
Returns the number of elements.
Contains sorting routines.
This file contains the Workspace class.
void iyEmissionStandardSequential(Workspace &ws, Matrix &iy, ArrayOfMatrix &iy_aux, ArrayOfTensor3 &diy_dx, Vector &ppvar_p, Vector &ppvar_t, EnergyLevelMap &ppvar_nlte, Matrix &ppvar_vmr, Matrix &ppvar_wind, Matrix &ppvar_mag, Matrix &ppvar_f, Tensor3 &ppvar_iy, Tensor4 &ppvar_trans_cumulat, Tensor4 &ppvar_trans_partial, const Index &iy_id, const Index &stokes_dim, const Vector &f_grid, const Index &atmosphere_dim, const Vector &p_grid, const Tensor3 &t_field, const EnergyLevelMap &nlte_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 String &iy_unit, const ArrayOfString &iy_aux_vars, const Index &jacobian_do, const ArrayOfRetrievalQuantity &jacobian_quantities, const Ppath &ppath, const Vector &rte_pos2, const Agenda &propmat_clearsky_agenda, const Agenda &water_p_eq_agenda, const Agenda &iy_main_agenda, const Agenda &iy_space_agenda, const Agenda &iy_surface_agenda, const Agenda &iy_cloudbox_agenda, const Index &iy_agenda_call1, const Tensor3 &iy_transmission, const Numeric &rte_alonglos_v, const Tensor3 &surface_props_data, const Verbosity &verbosity)
WORKSPACE METHOD: iyEmissionStandardSequential.
Index ncols() const
Returns the number of columns.
Index nshelves() const
Returns the number of shelves.
_CS_string_type str() const
Declarations for agendas.
void nlinspace(Vector &x, const Numeric start, const Numeric stop, const Index n)
nlinspace
void iyEmissionStandard(Workspace &ws, Matrix &iy, ArrayOfMatrix &iy_aux, ArrayOfTensor3 &diy_dx, Vector &ppvar_p, Vector &ppvar_t, EnergyLevelMap &ppvar_nlte, Matrix &ppvar_vmr, Matrix &ppvar_wind, Matrix &ppvar_mag, Matrix &ppvar_f, Tensor3 &ppvar_iy, Tensor4 &ppvar_trans_cumulat, Tensor4 &ppvar_trans_partial, const Index &iy_id, const Index &stokes_dim, const Vector &f_grid, const Index &atmosphere_dim, const Vector &p_grid, const Tensor3 &t_field, const EnergyLevelMap &nlte_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 String &iy_unit, const ArrayOfString &iy_aux_vars, const Index &jacobian_do, const ArrayOfRetrievalQuantity &jacobian_quantities, const Ppath &ppath, const Vector &rte_pos2, const Agenda &propmat_clearsky_agenda, const Agenda &water_p_eq_agenda, const Agenda &iy_main_agenda, const Agenda &iy_space_agenda, const Agenda &iy_surface_agenda, const Agenda &iy_cloudbox_agenda, const Index &iy_agenda_call1, const Tensor3 &iy_transmission, const Numeric &rte_alonglos_v, const Tensor3 &surface_props_data, const Verbosity &verbosity)
WORKSPACE METHOD: iyEmissionStandard.
NUMERIC Numeric
The type to use for all floating point numbers.
Index nlibraries() const
Returns the number of libraries.
Declarations required for the calculation of absorption coefficients.
void resize(Index p, Index r, Index c)
Resize function.
bool gsl_integration_glfixed_table_alloc(Vector &x, Vector &w, Index n)
gsl_integration_glfixed_table_alloc
Index index_of_zsurface(const Numeric &z_surface, ConstVectorView z_profile)
Lccates the surface with respect to pressure levels.
void set_name(const String &nname)
Set agenda name.
void resize(Index n)
Resize function.
Index np
Number of points describing the ppath.
Index nshelves() const
Returns the number of shelves.
Index npages() const
Returns the number of pages.
void ppathPlaneParallel(Ppath &ppath, const Index &atmosphere_dim, const Tensor3 &z_field, const Matrix &z_surface, const Index &cloudbox_on, const ArrayOfIndex &cloudbox_limits, const Index &ppath_inside_cloudbox_do, const Vector &rte_pos, const Vector &rte_los, const Numeric &ppath_lmax, const Verbosity &)
WORKSPACE METHOD: ppathPlaneParallel.
Index nbooks() const
Returns the number of books.
Index ncols() const
Returns the number of columns.
Index nvitrines() const
Returns the number of vitrines.
The structure to describe a propagation path and releated quantities.
Index ncols() const
Returns the number of columns.
void heating_ratesFromIrradiance(Tensor3 &heating_rates, const Vector &p_grid, const Tensor4 &irradiance_field, const Tensor3 &specific_heat_capacity, const Numeric &g0, const Verbosity &)
WORKSPACE METHOD: heating_ratesFromIrradiance.
void resize(Index l, Index v, Index s, Index b, Index p, Index r, Index c)
Resize function.
This stores arbitrary token values and remembers the type.
void calculate_weights_linear(Vector &x, Vector &w, const Index nph)
calculate_weights_linear
void RadiationFieldSpectralIntegrate(Tensor4 &radiation_field, const Vector &f_grid, const Tensor5 &spectral_radiation_field, const Verbosity &)
WORKSPACE METHOD: RadiationFieldSpectralIntegrate.
Index nbooks() const
Returns the number of books.
ArrayOfGridPos gp_p
Index position with respect to the pressure grid.
void resize(Index b, Index p, Index r, Index c)
Resize function.
void spectral_irradiance_fieldFromSpectralRadianceField(Tensor5 &spectral_irradiance_field, const Tensor7 &spectral_radiance_field, const Vector &za_grid, const Vector &aa_grid, const Vector &za_grid_weights, const Verbosity &)
WORKSPACE METHOD: spectral_irradiance_fieldFromSpectralRadianceField.
void append(const String &methodname, const TokVal &keywordvalue)
Appends methods to an agenda.