00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00036 #ifndef scatrte_h
00037 #define scatrte_h
00038
00039 #include "agenda_class.h"
00040 #include "matpackVI.h"
00041 #include "ppath.h"
00042
00043
00044 void cloud_fieldsCalc(Workspace& ws,
00045
00046 Tensor5View ext_mat_field,
00047 Tensor4View abs_vec_field,
00048
00049 const Agenda& spt_calc_agenda,
00050 const Agenda& opt_prop_part_agenda,
00051 const Index& scat_za_index,
00052 const Index& scat_aa_index,
00053 const ArrayOfIndex& cloudbox_limits,
00054 const Tensor3View t_field,
00055 const Tensor4View pnd_field
00056 );
00057
00058 void cloud_ppath_update1D(
00059 Workspace& ws,
00060 Tensor6View i_field,
00061
00062 const Index& p_index,
00063 const Index& scat_za_index,
00064 ConstVectorView scat_za_grid,
00065 const ArrayOfIndex& cloudbox_limits,
00066 ConstTensor6View scat_field,
00067
00068 const Agenda& abs_scalar_gas_agenda,
00069 ConstTensor4View vmr_field,
00070
00071 const Agenda& opt_prop_gas_agenda,
00072
00073 const Agenda& ppath_step_agenda,
00074 ConstVectorView p_grid,
00075 ConstTensor3View z_field,
00076 ConstMatrixView r_geoid,
00077 ConstMatrixView z_surface,
00078
00079 ConstTensor3View t_field,
00080 ConstVectorView f_grid,
00081 const Index& f_index,
00082
00083 ConstTensor5View ext_mat_field,
00084 ConstTensor4View abs_vec_field,
00085 const Agenda& surface_prop_agenda,
00086 const Index& scat_za_interp
00087 );
00088
00089 void cloud_ppath_update1D_noseq(
00090 Workspace& ws,
00091
00092 Tensor6View doit_i_field,
00093
00094 const Index& p_index,
00095 const Index& scat_za_index,
00096 ConstVectorView scat_za_grid,
00097 const ArrayOfIndex& cloudbox_limits,
00098 ConstTensor6View doit_i_field_old,
00099 ConstTensor6View doit_scat_field,
00100
00101 const Agenda& abs_scalar_gas_agenda,
00102 ConstTensor4View vmr_field,
00103
00104 const Agenda& opt_prop_gas_agenda,
00105
00106 const Agenda& ppath_step_agenda,
00107 ConstVectorView p_grid,
00108 ConstTensor3View z_field,
00109 ConstMatrixView r_geoid,
00110 ConstMatrixView z_surface,
00111
00112 ConstTensor3View t_field,
00113 ConstVectorView f_grid,
00114
00115 const Index& f_index,
00116
00117 ConstTensor5View ext_mat_field,
00118 ConstTensor4View abs_vec_field,
00119
00120 const Index& scat_za_interp
00121 );
00122
00123 void cloud_ppath_update1D_planeparallel(
00124 Workspace& ws,
00125 Tensor6View i_field,
00126
00127 const Index& p_index,
00128 const Index& scat_za_index,
00129 ConstVectorView scat_za_grid,
00130 const ArrayOfIndex& cloudbox_limits,
00131 ConstTensor6View scat_field,
00132
00133 const Agenda& abs_scalar_gas_agenda,
00134 ConstTensor4View vmr_field,
00135
00136 const Agenda& opt_prop_gas_agenda,
00137
00138 const Agenda& ppath_step_agenda,
00139 ConstVectorView p_grid,
00140 ConstTensor3View z_field,
00141 ConstMatrixView r_geoid,
00142
00143 ConstTensor3View t_field,
00144 ConstVectorView f_grid,
00145 const Index& f_index,
00146
00147 ConstTensor5View ext_mat_field,
00148 ConstTensor4View abs_vec_field
00149
00150 );
00151
00152 void cloud_ppath_update3D(Workspace& ws,
00153 Tensor6View doit_i_field,
00154
00155 const Index& p_index,
00156 const Index& lat_index,
00157 const Index& lon_index,
00158 const Index& scat_za_index,
00159 const Index& scat_aa_index,
00160 ConstVectorView scat_za_grid,
00161 ConstVectorView scat_aa_grid,
00162 const ArrayOfIndex& cloudbox_limits,
00163 ConstTensor6View doit_scat_field,
00164
00165 const Agenda& abs_scalar_gas_agenda,
00166 ConstTensor4View vmr_field,
00167
00168 const Agenda& opt_prop_gas_agenda,
00169
00170 const Agenda& ppath_step_agenda,
00171 ConstVectorView p_grid,
00172 ConstVectorView lat_grid,
00173 ConstVectorView lon_grid,
00174 ConstTensor3View z_field,
00175 ConstMatrixView r_geoid,
00176 ConstMatrixView z_surface,
00177
00178 ConstTensor3View t_field,
00179 ConstVectorView f_grid,
00180 const Index& f_index,
00181
00182 ConstTensor5View ext_mat_field,
00183 ConstTensor4View abs_vec_field,
00184 const Index&
00185 );
00186
00187 void cloud_RT_no_background(Workspace& ws,
00188
00189 Tensor6View doit_i_field,
00190
00191 const Agenda& abs_scalar_gas_agenda,
00192 const Agenda& opt_prop_gas_agenda,
00193 const Ppath& ppath_step,
00194 ConstVectorView t_int,
00195 ConstMatrixView vmr_list_int,
00196 ConstTensor3View ext_mat_int,
00197 ConstMatrixView abs_vec_int,
00198 ConstMatrixView sca_vec_int,
00199 ConstMatrixView doit_i_field_int,
00200 ConstVectorView p_int,
00201 const ArrayOfIndex& cloudbox_limits,
00202 ConstVectorView f_grid,
00203 const Index& f_index,
00204 const Index& p_index,
00205 const Index& lat_index,
00206 const Index& lon_index,
00207 const Index& scat_za_index,
00208 const Index& scat_aa_index);
00209
00210 void cloud_RT_surface(Workspace& ws,
00211
00212 Tensor6View doit_i_field,
00213
00214 const Agenda& surface_prop_agenda,
00215 const Index& f_index,
00216 const Index& stokes_dim,
00217 const Ppath& ppath_step,
00218 const ArrayOfIndex& cloudbox_limits,
00219 ConstVectorView scat_za_grid,
00220 const Index& scat_za_index
00221 );
00222
00223
00224 void ppath_step_in_cloudbox(Workspace& ws,
00225 Ppath& ppath_step,
00226 const Agenda& ppath_step_agenda,
00227 const Index& p,
00228 const Index& lat,
00229 const Index& lon,
00230 ConstTensor3View z_field,
00231 ConstMatrixView r_geoid,
00232 ConstMatrixView z_surface,
00233 ConstVectorView scat_za_grid,
00234 ConstVectorView aa_grid,
00235 const Index& scat_za_index,
00236 const Index& scat_aa_index,
00237 ConstVectorView p_grid,
00238 ConstVectorView lat_grid,
00239 ConstVectorView lon_grid);
00240
00241 void interp_cloud_coeff1D(
00242 Tensor3View ext_mat_int,
00243 MatrixView abs_vec_int,
00244 MatrixView sca_vec_int,
00245 MatrixView doit_i_field_int,
00246 VectorView t_int,
00247 MatrixView vmr_list_int,
00248 VectorView p_int,
00249
00250 ConstTensor5View ext_mat_field,
00251 ConstTensor4View abs_vec_field,
00252 ConstTensor6View doit_scat_field,
00253 ConstTensor6View doit_i_field,
00254 ConstTensor3View t_field,
00255 ConstTensor4View vmr_field,
00256 ConstVectorView p_grid,
00257 const Ppath& ppath_step,
00258 const ArrayOfIndex& cloudbox_limits,
00259 ConstVectorView scat_za_grid,
00260 const Index& scat_za_interp);
00261
00262 bool is_gp_inside_cloudbox(const GridPos& gp_p,
00263 const GridPos& gp_lat,
00264 const GridPos& gp_lon,
00265 const ArrayOfIndex& cloudbox_limits,
00266 const bool include_boundaries);
00267
00268 bool is_inside_cloudbox(const Ppath& ppath_step,
00269 const ArrayOfIndex& cloudbox_limits,
00270 const bool include_boundaries);
00271
00272 void za_gridOpt(
00273 Vector& za_grid_opt,
00274 Matrix& i_field_opt,
00275
00276 ConstVectorView za_grid_fine,
00277 ConstTensor6View i_field,
00278 const Numeric& acc,
00279 const Index& scat_za_interp);
00280
00281
00282 #endif //scatrte_h