ARTS  2.3.1285(git:92a29ea9-dirty)
doit.h
Go to the documentation of this file.
1 /* Copyright (C) 2003-2012 Claudia Emde <claudia.emde@dlr.de>
2 
3  This program is free software; you can redistribute it and/or modify it
4  under the terms of the GNU General Public License as published by the
5  Free Software Foundation; either version 2, or (at your option) any
6  later version.
7 
8  This program is distributed in the hope that it will be useful,
9  but WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  GNU General Public License for more details.
12 
13  You should have received a copy of the GNU General Public License
14  along with this program; if not, write to the Free Software
15  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
16  USA. */
17 
18 /*===========================================================================
19  === File description
20  ===========================================================================*/
21 
33 #ifndef doit_h
34 #define doit_h
35 
36 #include "agenda_class.h"
37 #include "matpackVI.h"
38 #include "ppath.h"
39 #include "propagationmatrix.h"
40 
42 
85  //FIXME function name of 'rte_step_doit_replacement' should be replaced by
86  // proper name
87  //Output and Input:
88  VectorView stokes_vec,
89  MatrixView trans_mat,
90  //Input
91  const PropagationMatrix& ext_mat_av,
92  const StokesVector& abs_vec_av,
93  ConstVectorView sca_vec_av,
94  const Numeric& lstep,
95  const Numeric& rtp_planck_value,
96  const bool& trans_is_precalc = false);
97 
99 // propagation direction.
121 void cloud_fieldsCalc(Workspace& ws,
122  // Output:
123  Tensor5View ext_mat_field,
124  Tensor4View abs_vec_field,
125  // Input:
126  const Agenda& spt_calc_agenda,
127  const Index& za_index,
128  const Index& aa_index,
129  const ArrayOfIndex& cloudbox_limits,
130  ConstTensor3View t_field,
131  ConstTensor4View pnd_field,
132  const Verbosity& verbosity);
133 
136 
178  Tensor6View i_field,
179  // ppath_step_agenda:
180  const Index& p_index,
181  const Index& za_index,
182  ConstVectorView za_grid,
183  const ArrayOfIndex& cloudbox_limits,
184  ConstTensor6View scat_field,
185  // Calculate scalar gas absorption:
186  const Agenda& propmat_clearsky_agenda,
187  ConstTensor4View vmr_field,
188  // Gas absorption:
189  // Propagation path calculation:
190  const Agenda& ppath_step_agenda,
191  const Numeric& ppath_lmax,
192  const Numeric& ppath_lraytrace,
193  ConstVectorView p_grid,
194  ConstTensor3View z_field,
195  ConstVectorView refellipsoid,
196  // Calculate thermal emission:
197  ConstTensor3View t_field,
198  ConstVectorView f_grid,
199  const Index& f_index,
200  //particle opticla properties
201  ConstTensor5View ext_mat_field,
202  ConstTensor4View abs_vec_field,
203  const Agenda& surface_rtprop_agenda,
204  const Index& scat_za_interp,
205  const Verbosity& verbosity);
206 
209 
248  // Input and output
249  Tensor6View cloudbox_field_mono,
250  // ppath_step_agenda:
251  const Index& p_index,
252  const Index& za_index,
253  ConstVectorView za_grid,
254  const ArrayOfIndex& cloudbox_limits,
255  ConstTensor6View cloudbox_field_mono_old,
256  ConstTensor6View doit_scat_field,
257  // Calculate scalar gas absorption:
258  const Agenda& propmat_clearsky_agenda,
259  ConstTensor4View vmr_field,
260  // Gas absorption:
261  // Propagation path calculation:
262  const Agenda& ppath_step_agenda,
263  const Numeric& ppath_lmax,
264  const Numeric& ppath_lraytrace,
265  ConstVectorView p_grid,
266  ConstTensor3View z_field,
267  ConstVectorView refellipsoid,
268  // Calculate thermal emission:
269  ConstTensor3View t_field,
270  ConstVectorView f_grid,
271  // used for surface ?
272  const Index& f_index,
273  //particle optical properties
274  ConstTensor5View ext_mat_field,
275  ConstTensor4View abs_vec_field,
276  const Agenda& surface_rtprop_agenda,
277  const Index& scat_za_interp,
278  const Verbosity& verbosity);
279 
281 
316  Tensor6View cloudbox_field_mono,
317  // ppath_step_agenda:
318  const Index& p_index,
319  const Index& za_index,
320  ConstVectorView za_grid,
321  const ArrayOfIndex& cloudbox_limits,
322  ConstTensor6View scat_field,
323  // Calculate scalar gas absorption:
324  const Agenda& propmat_clearsky_agenda,
325  ConstTensor4View vmr_field,
326  // Gas absorption:
327  // Propagation path calculation:
328  ConstVectorView p_grid,
329  ConstTensor3View z_field,
330  // Calculate thermal emission:
331  ConstTensor3View t_field,
332  ConstVectorView f_grid,
333  const Index& f_index,
334  //particle opticla properties
335  ConstTensor5View ext_mat_field,
336  ConstTensor4View abs_vec_field,
337  // const Agenda& surface_agenda,
338  const Verbosity& verbosity);
339 
341 
388  Tensor6View cloudbox_field_mono,
389  // ppath_step_agenda:
390  const Index& p_index,
391  const Index& lat_index,
392  const Index& lon_index,
393  const Index& za_index,
394  const Index& aa_index,
395  ConstVectorView za_grid,
396  ConstVectorView aa_grid,
397  const ArrayOfIndex& cloudbox_limits,
398  ConstTensor6View doit_scat_field,
399  // Calculate scalar gas absorption:
400  const Agenda& propmat_clearsky_agenda,
401  ConstTensor4View vmr_field,
402  // Gas absorption:
403  // Propagation path calculation:
404  const Agenda& ppath_step_agenda,
405  const Numeric& ppath_lmax,
406  const Numeric& ppath_lraytrace,
407  ConstVectorView p_grid,
408  ConstVectorView lat_grid,
409  ConstVectorView lon_grid,
410  ConstTensor3View z_field,
411  ConstVectorView refellipsoid,
412  // Calculate thermal emission:
413  ConstTensor3View t_field,
414  ConstVectorView f_grid,
415  const Index& f_index,
416  //particle optical properties
417  ConstTensor5View ext_mat_field,
418  ConstTensor4View abs_vec_field,
419  const Index&, //scat_za_interp
420  const Verbosity& verbosity);
421 
423 
454  //Output
455  Tensor6View cloudbox_field_mono,
456  // Input
457  const Agenda& propmat_clearsky_agenda,
458  const Ppath& ppath_step,
459  ConstVectorView t_int,
460  ConstMatrixView vmr_list_int,
461  ConstTensor3View ext_mat_int,
462  ConstMatrixView abs_vec_int,
463  ConstMatrixView sca_vec_int,
464  ConstMatrixView cloudbox_field_mono_int,
465  ConstVectorView p_int,
466  const ArrayOfIndex& cloudbox_limits,
467  ConstVectorView f_grid,
468  const Index& f_index,
469  const Index& p_index,
470  const Index& lat_index,
471  const Index& lon_index,
472  const Index& za_index,
473  const Index& aa_index,
474  const Verbosity& verbosity);
475 
477 
499 void cloud_RT_surface(Workspace& ws,
500  //Output
501  Tensor6View cloudbox_field_mono,
502  //Input
503  const Agenda& surface_rtprop_agenda,
504  ConstVectorView f_grid,
505  const Index& f_index,
506  const Index& stokes_dim,
507  const Ppath& ppath_step,
508  const ArrayOfIndex& cloudbox_limits,
509  ConstVectorView za_grid,
510  const Index& za_index);
511 
513 
528 void cloudbox_field_ngAcceleration( //Output
529  Tensor6& cloudbox_field_mono,
530  //Input
531  const ArrayOfTensor6& acceleration_input,
532  const Index& accelerated,
533  const Verbosity& verbosity);
534 
536 
564 void interp_cloud_coeff1D( //Output
565  Tensor3View ext_mat_int,
566  MatrixView abs_vec_int,
567  MatrixView sca_vec_int,
568  MatrixView cloudbox_field_mono_int,
569  VectorView t_int,
570  MatrixView vmr_list_int,
571  VectorView p_int,
572  //Input
573  ConstTensor5View ext_mat_field,
574  ConstTensor4View abs_vec_field,
575  ConstTensor6View doit_scat_field,
576  ConstTensor6View cloudbox_field_mono,
577  ConstTensor3View t_field,
578  ConstTensor4View vmr_field,
579  ConstVectorView p_grid,
580  const Ppath& ppath_step,
581  const ArrayOfIndex& cloudbox_limits,
582  ConstVectorView za_grid,
583  const Index& scat_za_interp,
584  const Verbosity& verbosity);
585 
587 
609 void za_gridOpt( //Output:
610  Vector& za_grid_opt,
611  Matrix& i_field_opt,
612  // Input
613  ConstVectorView za_grid_fine,
614  ConstTensor6View i_field,
615  const Numeric& acc,
616  const Index& scat_za_interp);
617 
619 
643  Tensor6& doit_scat_field,
644  const Tensor6& cloudbox_field_mono,
645  const ArrayOfIndex& cloudbox_limits,
646  const Agenda& spt_calc_agenda,
647  const Index& atmosphere_dim,
648  const Vector& za_grid,
649  const Vector& aa_grid,
650  const Tensor4& pnd_field,
651  const Tensor3& t_field,
652  const Numeric& norm_error_threshold,
653  const Index& norm_debug,
654  const Verbosity& verbosity);
655 
656 #endif //doit_h
INDEX Index
The type to use for all integer numbers and indices.
Definition: matpack.h:39
The VectorView class.
Definition: matpackI.h:610
void cloud_ppath_update1D_noseq(Workspace &ws, Tensor6View cloudbox_field_mono, const Index &p_index, const Index &za_index, ConstVectorView za_grid, const ArrayOfIndex &cloudbox_limits, ConstTensor6View cloudbox_field_mono_old, ConstTensor6View doit_scat_field, const Agenda &propmat_clearsky_agenda, ConstTensor4View vmr_field, const Agenda &ppath_step_agenda, const Numeric &ppath_lmax, const Numeric &ppath_lraytrace, ConstVectorView p_grid, ConstTensor3View z_field, ConstVectorView refellipsoid, ConstTensor3View t_field, ConstVectorView f_grid, const Index &f_index, ConstTensor5View ext_mat_field, ConstTensor4View abs_vec_field, const Agenda &surface_rtprop_agenda, const Index &scat_za_interp, const Verbosity &verbosity)
Calculation of radiation field along a propagation path step for specified zenith direction and press...
Definition: doit.cc:457
The Tensor4View class.
Definition: matpackIV.h:284
The Agenda class.
Definition: agenda_class.h:44
void cloud_RT_surface(Workspace &ws, Tensor6View cloudbox_field_mono, const Agenda &surface_rtprop_agenda, ConstVectorView f_grid, const Index &f_index, const Index &stokes_dim, const Ppath &ppath_step, const ArrayOfIndex &cloudbox_limits, ConstVectorView za_grid, const Index &za_index)
Calculates RT in the cloudbox.
Definition: doit.cc:1547
void cloudbox_field_ngAcceleration(Tensor6 &cloudbox_field_mono, const ArrayOfTensor6 &acceleration_input, const Index &accelerated, const Verbosity &verbosity)
Convergence acceleration.
Definition: doit.cc:1620
void za_gridOpt(Vector &za_grid_opt, Matrix &i_field_opt, ConstVectorView za_grid_fine, ConstTensor6View i_field, const Numeric &acc, const Index &scat_za_interp)
Optimize the zenith angle grid.
Definition: doit.cc:1853
The Vector class.
Definition: matpackI.h:860
The MatrixView class.
Definition: matpackI.h:1093
A constant view of a Tensor6.
Definition: matpackVI.h:149
The Tensor4 class.
Definition: matpackIV.h:421
void cloud_fieldsCalc(Workspace &ws, Tensor5View ext_mat_field, Tensor4View abs_vec_field, const Agenda &spt_calc_agenda, const Index &za_index, const Index &aa_index, const ArrayOfIndex &cloudbox_limits, ConstTensor3View t_field, ConstTensor4View pnd_field, const Verbosity &verbosity)
Calculate ext_mat, abs_vec for all points inside the cloudbox for one.
Definition: doit.cc:163
The Tensor6View class.
Definition: matpackVI.h:621
Stokes vector is as Propagation matrix but only has 4 possible values.
A constant view of a Tensor4.
Definition: matpackIV.h:133
void cloud_RT_no_background(Workspace &ws, Tensor6View cloudbox_field_mono, const Agenda &propmat_clearsky_agenda, const Ppath &ppath_step, ConstVectorView t_int, ConstMatrixView vmr_list_int, ConstTensor3View ext_mat_int, ConstMatrixView abs_vec_int, ConstMatrixView sca_vec_int, ConstMatrixView cloudbox_field_mono_int, ConstVectorView p_int, const ArrayOfIndex &cloudbox_limits, ConstVectorView f_grid, const Index &f_index, const Index &p_index, const Index &lat_index, const Index &lon_index, const Index &za_index, const Index &aa_index, const Verbosity &verbosity)
Calculates RT in the cloudbox (1D)
Definition: doit.cc:1382
The Tensor3 class.
Definition: matpackIII.h:339
void doit_scat_fieldNormalize(Workspace &ws, Tensor6 &doit_scat_field, const Tensor6 &cloudbox_field_mono, const ArrayOfIndex &cloudbox_limits, const Agenda &spt_calc_agenda, const Index &atmosphere_dim, const Vector &za_grid, const Vector &aa_grid, const Tensor4 &pnd_field, const Tensor3 &t_field, const Numeric &norm_error_threshold, const Index &norm_debug, const Verbosity &verbosity)
Normalization of scattered field.
Definition: doit.cc:1959
Stuff related to the propagation matrix.
void cloud_ppath_update1D_planeparallel(Workspace &ws, Tensor6View cloudbox_field_mono, const Index &p_index, const Index &za_index, ConstVectorView za_grid, const ArrayOfIndex &cloudbox_limits, ConstTensor6View scat_field, const Agenda &propmat_clearsky_agenda, ConstTensor4View vmr_field, ConstVectorView p_grid, ConstTensor3View z_field, ConstTensor3View t_field, ConstVectorView f_grid, const Index &f_index, ConstTensor5View ext_mat_field, ConstTensor4View abs_vec_field, const Verbosity &verbosity)
Radiative transfer calculation inside cloudbox for planeparallel case.
Definition: doit.cc:615
Declarations for agendas.
The Tensor3View class.
Definition: matpackIII.h:239
A constant view of a Tensor5.
Definition: matpackV.h:143
NUMERIC Numeric
The type to use for all floating point numbers.
Definition: matpack.h:33
The Matrix class.
Definition: matpackI.h:1193
Propagation path structure and functions.
void rte_step_doit_replacement(VectorView stokes_vec, MatrixView trans_mat, const PropagationMatrix &ext_mat_av, const StokesVector &abs_vec_av, ConstVectorView sca_vec_av, const Numeric &lstep, const Numeric &rtp_planck_value, const bool &trans_is_precalc=false)
Solves monochromatic VRTE for an atmospheric slab with constant conditions.
Definition: doit.cc:62
The Tensor5View class.
Definition: matpackV.h:333
void interp_cloud_coeff1D(Tensor3View ext_mat_int, MatrixView abs_vec_int, MatrixView sca_vec_int, MatrixView cloudbox_field_mono_int, VectorView t_int, MatrixView vmr_list_int, VectorView p_int, ConstTensor5View ext_mat_field, ConstTensor4View abs_vec_field, ConstTensor6View doit_scat_field, ConstTensor6View cloudbox_field_mono, ConstTensor3View t_field, ConstTensor4View vmr_field, ConstVectorView p_grid, const Ppath &ppath_step, const ArrayOfIndex &cloudbox_limits, ConstVectorView za_grid, const Index &scat_za_interp, const Verbosity &verbosity)
Interpolate all inputs of the VRTE on a propagation path step.
Definition: doit.cc:1695
This can be used to make arrays out of anything.
Definition: array.h:40
A constant view of a Tensor3.
Definition: matpackIII.h:132
The Tensor6 class.
Definition: matpackVI.h:1088
A constant view of a Vector.
Definition: matpackI.h:476
A constant view of a Matrix.
Definition: matpackI.h:982
Workspace class.
Definition: workspace_ng.h:40
void cloud_ppath_update3D(Workspace &ws, Tensor6View cloudbox_field_mono, const Index &p_index, const Index &lat_index, const Index &lon_index, const Index &za_index, const Index &aa_index, ConstVectorView za_grid, ConstVectorView aa_grid, const ArrayOfIndex &cloudbox_limits, ConstTensor6View doit_scat_field, const Agenda &propmat_clearsky_agenda, ConstTensor4View vmr_field, const Agenda &ppath_step_agenda, const Numeric &ppath_lmax, const Numeric &ppath_lraytrace, ConstVectorView p_grid, ConstVectorView lat_grid, ConstVectorView lon_grid, ConstTensor3View z_field, ConstVectorView refellipsoid, ConstTensor3View t_field, ConstVectorView f_grid, const Index &f_index, ConstTensor5View ext_mat_field, ConstTensor4View abs_vec_field, const Index &, const Verbosity &verbosity)
Radiative transfer calculation along a path inside the cloudbox (3D).
Definition: doit.cc:1108
The structure to describe a propagation path and releated quantities.
Definition: ppath.h:48
void cloud_ppath_update1D(Workspace &ws, Tensor6View i_field, const Index &p_index, const Index &za_index, ConstVectorView za_grid, const ArrayOfIndex &cloudbox_limits, ConstTensor6View scat_field, const Agenda &propmat_clearsky_agenda, ConstTensor4View vmr_field, const Agenda &ppath_step_agenda, const Numeric &ppath_lmax, const Numeric &ppath_lraytrace, ConstVectorView p_grid, ConstTensor3View z_field, ConstVectorView refellipsoid, ConstTensor3View t_field, ConstVectorView f_grid, const Index &f_index, ConstTensor5View ext_mat_field, ConstTensor4View abs_vec_field, const Agenda &surface_rtprop_agenda, const Index &scat_za_interp, const Verbosity &verbosity)
Calculates radiation field along a propagation path step for specified zenith direction and pressure ...
Definition: doit.cc:301