# ARTS built-in documentation server

## Workspace Method RT4Calc

### Description

Interface to the PolRadTran RT4 scattering solver (by F. Evans). RT4 provides the radiation field (cloudbox_field) from a vector 1D scattering solution assuming a plane-parallel atmosphere (flat Earth). It calculates up to two Stokes parameters (stokes_dim<=2), i.e., all azimuthally randomly oriented particles are allowed (this also includes macroscopically isotropic particles). Refraction is not taken into account. The scattering solution is internally obtained over the full (plane-parallel) atmosphere, i.e. not confined to the cloudbox. However, the radiation field output is limited to the cloudbox. This allows to consider clearsky RT through a non-spherical atmosphere outside the cloudbox improving the RT solution for non-plane-parallel media compared to the plain RT4 output. *nstreams* is the number of polar angles taken into account internally in the scattering solution. That is, *nstreams* determines the angular resolution, hence the accuracy, of the scattering solution. The more anisotropic the bulk scattering matrix, the more streams are required. The computational burden increases approximately with the third power of *nstreams*. The default value (*nstreams*=16) was found to be sufficient for most microwave scattering calculations. It is likely insufficient for IR calculations involving ice clouds, though. Here, za_grid is NOT an input parameter, but output, and its size equals *nstreams* or *nstreams*+2 (Gauss-Legendre and Double Gauss quadratures in case *add_straight_angles*=1) (the reason is that the computational burden is high for additional angles, regardless whether they are quadrature angles or not; hence the quadrature angles supplemented with 0 and 180deg are considered to provide the best radiation field for a given effort). The *auto_inc_nstreams* feature can be used to increase the number of streams used internally in the scattering solution when found necessary. NOTE: this number-of-streams increase is only internally - the angular dimension of the output cloudbox_field is fixed to the *nstreams* given as input to this WSM. Quadrature methods available are: 'L'obatto, 'G'auss-Legendre and 'D'ouble Gauss quadrature. This WSM applies surface_rtprop_agenda to derive reflection matrix and surface emission vector that are directly feed into RT4's core solver (instead of their RT4-internal calculation as used by RT4CalcWithRT4Surface). Known issues of ARTS implementation: - TOA incoming radiation is so far assumed as blackbody cosmic background (temperature taken from the ARTS-internal constant). The keyword *pfct_method* allows to choose how to extract the scattering matrix, by chosing one specific temperature grid point from the single scattering data: 'low' choses the lowest T-point, 'high' the highest T-point, and 'median' the median T-point. As different scattering elements can have different temperature grids, the actual temperature value used can differ between the scattering elements. Note that this keyword solely affects the scattering matrix; extinction matrix and absorption vector are always interpolated to the actual temperature.

**Authors: **Jana Mendrok

### Synopsis

RT4Calc( | cloudbox_field, za_grid, aa_grid, atmfields_checked, atmgeom_checked, scat_data_checked, cloudbox_checked, cloudbox_on, cloudbox_limits, propmat_clearsky_agenda, surface_rtprop_agenda, atmosphere_dim, pnd_field, t_field, z_field, vmr_field, p_grid, scat_data, f_grid, stokes_dim, z_surface, nstreams, pfct_method, quad_type, add_straight_angles, pfct_aa_grid_size, auto_inc_nstreams, robust, za_interp_order, cos_za_interp, max_delta_tau ) |

### Variables

OUT | cloudbox_field | (Tensor7) | The spectral radiance field inside the cloudbx. |

OUT | za_grid | (Vector) | Zenith angle grid. |

OUT | aa_grid | (Vector) | Azimuthal angle grid. |

IN | atmfields_checked | (Index) | OK-flag for atmospheric grids and (physical) fields. |

IN | atmgeom_checked | (Index) | OK-flag for the geometry of the model atmosphere. |

IN | scat_data_checked | (Index) | OK-flag for scat_data. |

IN | cloudbox_checked | (Index) | OK-flag for variables associated with the cloudbox. |

IN | cloudbox_on | (Index) | Flag to activate the cloud box. |

IN | cloudbox_limits | (ArrayOfIndex) | The limits of the cloud box. |

IN | propmat_clearsky_agenda | (Agenda) | Agenda calculating the absorption coefficient matrices. |

IN | surface_rtprop_agenda | (Agenda) | Agenda providing radiative properties of the surface. |

IN | atmosphere_dim | (Index) | The atmospheric dimensionality (1-3). |

IN | pnd_field | (Tensor4) | Particle number density field. |

IN | t_field | (Tensor3) | The field of atmospheric temperatures. |

IN | z_field | (Tensor3) | The field of geometrical altitudes. |

IN | vmr_field | (Tensor4) | VMR field. |

IN | p_grid | (Vector) | The pressure grid. |

IN | scat_data | (ArrayOfArrayOfSingleScatteringData) | Array of single scattering data. |

IN | f_grid | (Vector) | The frequency grid for monochromatic pencil beam calculations. |

IN | stokes_dim | (Index) | The dimensionality of the Stokes vector (1-4). |

IN | z_surface | (Matrix) | The surface altitude. |

GIN | nstreams | (Index, Default: 16) | Number of polar angle directions (streams) in RT4 solution (must be an even number). |

GIN | pfct_method | (String, Default: "median") | Flag which method to apply to derive phase function (for available options see above). |

GIN | quad_type | (String, Default: "D") | Flag which quadrature to apply in RT4 solution (for available options see above). |

GIN | add_straight_angles | (Index, Default: 1) | Flag whether to include nadir and zenith as explicit directions (only effective for quad_type G and D). |

GIN | pfct_aa_grid_size | (Index, Default: 19) | Number of azimuthal angle grid points to consider in Fourier series decomposition of scattering matrix (only applied for randomly oriented scattering elements) |

GIN | auto_inc_nstreams | (Index, Default: 0) | Flag whether to internally increase nstreams (individually per frequency) if norm of (bulk) scattering matrix is not preserved properly. If 0, no adaptation is done. Else *auto_inc_nstreams* gives the maximum number of streams to increase to. Note that the output cloudbox_field remains with angular dimension of *nstreams*, only the internal solution is adapted (and then interpolated to the lower-resolution output angular grid). |

GIN | robust | (Index, Default: 0) | For *auto_inc_nstreams*>0, flag whether to not fail even if scattering matrix norm is not preserved when maximum stream number is reached. Internal RT4 calculations is then performed with nstreams=*auto_inc_nstreams*. |

GIN | za_interp_order | (Index, Default: 1) | For *auto_inc_nstreams*>0, polar angle interpolation order for interpolation from internal increased stream to originally requested nstreams-ifield. |

GIN | cos_za_interp | (Index, Default: 0) | For *auto_inc_nstreams*>0, flag whether to do polar angle interpolation in cosine (='mu') space. |

GIN | max_delta_tau | (Numeric, Default: 1e-6) | Maximum optical depth of infinitesimal layer (where single scattering approximation is assumed to apply). |