Anonymous
×
Create a new article
Write your page title here:
We currently have 105 articles on MOR Wiki. Type your article name above or click on one of the titles below and start writing!



MOR Wiki

Difference between revisions of "Convection-Diffusion"

(remove preliminary warning)
(Add categories, small fixes)
 
Line 1: Line 1:
 
[[Category:benchmark]]
 
[[Category:benchmark]]
 
[[Category:procedural]]
 
[[Category:procedural]]
  +
[[Category:linear]]
  +
[[Category:time invariant]]
  +
[[Category:first differential order]]
 
[[Category:SISO]]
 
[[Category:SISO]]
 
[[Category:Sparse]]
 
[[Category:Sparse]]
Line 6: Line 9:
 
==Description==
 
==Description==
   
The '''Convection-Diffusion''' benchmark is given by a finite-difference discretization of a two-dimensional dynamic convection-diffusion heat equation on a unit square domain, which was introduced as a example in <ref name="lyapack"/>:
+
The '''Convection-Diffusion''' benchmark is given by a finite-difference discretization of a two-dimensional dynamic convection-diffusion heat equation on a unit square domain, which was introduced as an example in <ref name="lyapack"/>:
   
 
:<math>
 
:<math>
Line 15: Line 18:
 
</math>
 
</math>
   
For this procedural partial differential equation benchmark Dirichlet boundary conditions are used.
+
For this procedural partial differential equation benchmark, Dirichlet boundary conditions are used.
The setup of this benchmark is rather generic, in that it allows based on the configuration of <math>f_x</math>, <math>f_y</math>, <math>g</math> and <math>f</math> to tune the influence of the diffusive, convective and reactive differential operators.
+
The setup of this benchmark is rather generic, in that it allows based on the configuration of <math>f_x</math>, <math>f_y</math>, <math>g</math>, and <math>f</math> to tune the influence of the diffusive, convective and reactive differential operators.
   
 
==Origin==
 
==Origin==
Line 26: Line 29:
 
In the folder <tt>examples</tt> of LYAPCK the MATLAB functions <tt>fdm_2d_matrix</tt> and <tt>fdm_2d_vector</tt> are utilized to generate the system, input matrices:
 
In the folder <tt>examples</tt> of LYAPCK the MATLAB functions <tt>fdm_2d_matrix</tt> and <tt>fdm_2d_vector</tt> are utilized to generate the system, input matrices:
   
  +
:<syntaxhighlight lang="matlab">
A = fdm_2d_matrix(n0,fx_str,fy_str,g_str);
+
A = fdm_2d_matrix(n0, fx_str, fy_str, g_str);
B = fdm_2d_vector(n0,f_str);
+
B = fdm_2d_vector(n0, f_str);
  +
</syntaxhighlight>
   
The no argument determines the common spatial resolution, hence the discretized problem has dimension <math>N = n_0^2</math>.
+
The <tt>n0</tt> argument determines the common spatial resolution, hence the discretized problem has dimension <math>N = n_0^2</math>.
The arguments <tt>fx_str</tt>, <tt>fy_str</tt>, <tt>g_str</tt>, and <tt>f_str</tt> are strings (see documentation) describing the convection in the first dimension, second dimension, the reaction coefficient and the source term respectively.
+
The arguments <tt>fx_str</tt>, <tt>fy_str</tt>, <tt>g_str</tt>, and <tt>f_str</tt> are strings (see documentation) describing the convection in the first dimension, the second dimension, the reaction coefficient, and the source term, respectively.
The output matrix can be generated in the same fashaion as the input matrix.
+
The output matrix can be generated in the same fashion as the input matrix.
   
 
For example, in <ref name="lyapack"/>, the examples are constructed with:
 
For example, in <ref name="lyapack"/>, the examples are constructed with:
   
  +
:<syntaxhighlight lang="matlab">
A = fdm_2d_matrix(20,'10*x','100*y','0');
 
B = fdm_2d_vector(20,'.1<x<=.3');
+
A = fdm_2d_matrix(20, '10*x', '100*y', '0');
C = fdm_2d_vector(20,'.7<x<=.9')';
+
B = fdm_2d_vector(20, '.1<x<=.3');
  +
C = fdm_2d_vector(20, '.7<x<=.9')';
  +
</syntaxhighlight>
   
 
resulting in a SISO system of order <math>400</math>.
 
resulting in a SISO system of order <math>400</math>.
Line 47: Line 54:
 
:<math>
 
:<math>
 
\begin{align}
 
\begin{align}
\dot{x}(t) &= Ax(t) + Bu(t) \\
+
\dot{x}(t) &= A x(t) + B u(t) \\
y(t) &= Cx(t)
+
y(t) &= C x(t)
 
\end{align}
 
\end{align}
 
</math>
 
</math>
Line 54: Line 61:
 
System dimensions:
 
System dimensions:
   
<math>A \in \mathbb{R}^{N \times N}</math>,
+
<math>A \in \mathbb{R}^{n \times n}</math>,
<math>B \in \mathbb{R}^{N \times 1}</math>,
+
<math>B \in \mathbb{R}^{n \times 1}</math>,
<math>C \in \mathbb{R}^{1 \times N}</math>.
+
<math>C \in \mathbb{R}^{1 \times n}</math>.
   
 
==Citation==
 
==Citation==
 
   
 
To cite this benchmark, use the following references:
 
To cite this benchmark, use the following references:

Latest revision as of 20:07, 1 September 2023


Description

The Convection-Diffusion benchmark is given by a finite-difference discretization of a two-dimensional dynamic convection-diffusion heat equation on a unit square domain, which was introduced as an example in [1]:


\begin{align}
 \Delta u - f_x \partial_x u - f_y \partial_y u - g u &= f \\
 u &= 0
\end{align}

For this procedural partial differential equation benchmark, Dirichlet boundary conditions are used. The setup of this benchmark is rather generic, in that it allows based on the configuration of f_x, f_y, g, and f to tune the influence of the diffusive, convective and reactive differential operators.

Origin

This benchmark is part of LYAPACK [1].

Data

In the folder examples of LYAPCK the MATLAB functions fdm_2d_matrix and fdm_2d_vector are utilized to generate the system, input matrices:

A = fdm_2d_matrix(n0, fx_str, fy_str, g_str);
B = fdm_2d_vector(n0, f_str);

The n0 argument determines the common spatial resolution, hence the discretized problem has dimension N = n_0^2. The arguments fx_str, fy_str, g_str, and f_str are strings (see documentation) describing the convection in the first dimension, the second dimension, the reaction coefficient, and the source term, respectively. The output matrix can be generated in the same fashion as the input matrix.

For example, in [1], the examples are constructed with:

A = fdm_2d_matrix(20, '10*x', '100*y', '0');
B = fdm_2d_vector(20, '.1<x<=.3');
C = fdm_2d_vector(20, '.7<x<=.9')';

resulting in a SISO system of order 400.

Dimensions

System structure:


\begin{align}
  \dot{x}(t) &= A x(t) + B u(t) \\
  y(t) &= C x(t)
\end{align}

System dimensions:

A \in \mathbb{R}^{n \times n}, B \in \mathbb{R}^{n \times 1}, C \in \mathbb{R}^{1 \times n}.

Citation

To cite this benchmark, use the following references:

  • For the benchmark:
The MORwiki Community, LYAPACK - A MATLAB Toolbox for Large Lyapunov and Riccati Equations, Model Reduction Problems, and Linear–Quadratic Optimal Control Problems. Version 1.0, netlib, 1999. http://www.netlib.org/lyapack
@MISC{lyapack,
  author =       {T. Penzl},
  title =        {LYAPACK - A MATLAB Toolbox for Large Lyapunov and Riccati Equations, Model Reduction Problems, and Linear–Quadratic Optimal Control Problems},
  howpublished = {netlib},
  note =         {Version 1.0},
  url =          {http://www.netlib.org/lyapack},
  year =         {1999}
}

References