ryujin 2.1.1 revision f751393c604e228afd3e8516e9e236ec609caae0
Public Types | Public Member Functions | Static Public Attributes | List of all members
ryujin::Postprocessor< Description, dim, Number > Class Template Referencefinal

#include <source/postprocessor.h>

Inheritance diagram for ryujin::Postprocessor< Description, dim, Number >:
Inheritance graph
[legend]
Collaboration diagram for ryujin::Postprocessor< Description, dim, Number >:
Collaboration graph
[legend]

Public Types

using HyperbolicSystem = typename Description::HyperbolicSystem
 
using View = typename Description::template HyperbolicSystemView< dim, Number >
 
using state_type = typename View::state_type
 
template<typename T >
using grad_type = dealii::Tensor< 1, dim, T >
 
template<typename T >
using curl_type = dealii::Tensor< 1, dim==2 ? 1 :dim, T >
 
using scalar_type = typename OfflineData< dim, Number >::scalar_type
 
using vector_type = MultiComponentVector< Number, problem_dimension >
 

Public Member Functions

 Postprocessor (const MPI_Comm &mpi_communicator, const HyperbolicSystem &hyperbolic_system, const OfflineData< dim, Number > &offline_data, const std::string &subsection="/Postprocessor")
 
void prepare ()
 
unsigned int n_quantities () const
 
const std::vector< std::string > component_names () const
 
void reset_bounds () const
 
void compute (const vector_type &U) const
 

Static Public Attributes

static constexpr unsigned int problem_dimension = View::problem_dimension
 

Detailed Description

template<typename Description, int dim, typename Number = double>
class ryujin::Postprocessor< Description, dim, Number >

The Postprocessor class implements a number of postprocessing primitives in particular for a scaled and normalized schlieren like plot, and a scaled and normalized magnitude of the vorticity. The normalization is computed as follows:

\[ \text{quantity}[i] = \exp\left(-\beta \frac{ |\mathbf q_i| - \min_k |\mathbf q_k|} {\max_k |\mathbf q_k| - \min_k |\mathbf q_k|}\right), \]

where \(\mathbf q_i\) is either

Definition at line 38 of file postprocessor.h.

Member Typedef Documentation

◆ HyperbolicSystem

template<typename Description , int dim, typename Number = double>
using ryujin::Postprocessor< Description, dim, Number >::HyperbolicSystem = typename Description::HyperbolicSystem

Definition at line 44 of file postprocessor.h.

◆ View

template<typename Description , int dim, typename Number = double>
using ryujin::Postprocessor< Description, dim, Number >::View = typename Description::template HyperbolicSystemView<dim, Number>

Definition at line 49 of file postprocessor.h.

◆ state_type

template<typename Description , int dim, typename Number = double>
using ryujin::Postprocessor< Description, dim, Number >::state_type = typename View::state_type

Definition at line 60 of file postprocessor.h.

◆ grad_type

template<typename Description , int dim, typename Number = double>
template<typename T >
using ryujin::Postprocessor< Description, dim, Number >::grad_type = dealii::Tensor<1, dim, T>

The type used to store the gradient of a scalar quantitty;

Definition at line 66 of file postprocessor.h.

◆ curl_type

template<typename Description , int dim, typename Number = double>
template<typename T >
using ryujin::Postprocessor< Description, dim, Number >::curl_type = dealii::Tensor<1, dim == 2 ? 1 : dim, T>

Type used to store the curl of an 2D/3D vector field. Departing from mathematical rigor, in 2D this is a number (stored as Tensor<1,1>), in 3D this is a rank 1 tensor.

Definition at line 74 of file postprocessor.h.

◆ scalar_type

template<typename Description , int dim, typename Number = double>
using ryujin::Postprocessor< Description, dim, Number >::scalar_type = typename OfflineData<dim, Number>::scalar_type

Shorthand typedef for dealii::LinearAlgebra::distributed::Vector<Number>.

Definition at line 79 of file postprocessor.h.

◆ vector_type

template<typename Description , int dim, typename Number = double>
using ryujin::Postprocessor< Description, dim, Number >::vector_type = MultiComponentVector<Number, problem_dimension>

MulticomponentVector for storing a vector of conserved states:

Definition at line 84 of file postprocessor.h.

Constructor & Destructor Documentation

◆ Postprocessor()

template<typename Description , int dim, typename Number >
ryujin::Postprocessor< Description, dim, Number >::Postprocessor ( const MPI_Comm &  mpi_communicator,
const HyperbolicSystem hyperbolic_system,
const OfflineData< dim, Number > &  offline_data,
const std::string &  subsection = "/Postprocessor< Description, dim, Number >" 
)

Constructor.

Definition at line 23 of file postprocessor.template.h.

Member Function Documentation

◆ prepare()

template<typename Description , int dim, typename Number >
void ryujin::Postprocessor< Description, dim, Number >::prepare

Prepare Postprocessor. A call to prepare() allocates temporary storage and is necessary before schedule_output() can be called.

Calling prepare() allocates temporary storage for two additional scalar vectors of type OfflineData::scalar_type.

Definition at line 65 of file postprocessor.template.h.

◆ n_quantities()

template<typename Description , int dim, typename Number = double>
unsigned int ryujin::Postprocessor< Description, dim, Number >::n_quantities ( ) const
inline

Returns the number of computed quantities.

Definition at line 106 of file postprocessor.h.

◆ component_names()

template<typename Description , int dim, typename Number = double>
const std::vector< std::string > ryujin::Postprocessor< Description, dim, Number >::component_names ( ) const
inline

A vector of strings for all component names.

Definition at line 114 of file postprocessor.h.

◆ reset_bounds()

template<typename Description , int dim, typename Number = double>
void ryujin::Postprocessor< Description, dim, Number >::reset_bounds ( ) const
inline

Reset computed normalization bounds. Calling this function will force a recomputation of the normalization bounds during the next call to compute().

Definition at line 124 of file postprocessor.h.

◆ compute()

template<typename Description , int dim, typename Number >
void ryujin::Postprocessor< Description, dim, Number >::compute ( const vector_type U) const

Given a state vector U and a file name prefix name, the current time t, and the current output cycle cycle) schedule a solution output.

The function post-processes quantities synchronously, and (depending on configuration options) schedules the write-out asynchronously onto a background worker thread. This implies that U can again be modified once schedule_output() returned.

The function requires MPI communication and is not reentrant.

Definition at line 111 of file postprocessor.template.h.

Member Data Documentation

◆ problem_dimension

template<typename Description , int dim, typename Number = double>
constexpr unsigned int ryujin::Postprocessor< Description, dim, Number >::problem_dimension = View::problem_dimension
staticconstexpr

Definition at line 55 of file postprocessor.h.


The documentation for this class was generated from the following files: