Eigenfunctions¶
This modules provides eigenfunctions for a certain set of parabolic problems. Therefore functions for the computation of the corresponding eigenvalues are included. The functions which compute the eigenvalues are deliberately separated from the predefined eigenfunctions in order to handle transformations and reduce effort by the controller implementation.
-
class
AddMulFunction(function)[source]¶ Bases:
object(Temporary) Function class wich can multiplied with scalars and added with functions. Only needed to compute the matrix (of scalars) vector (of functions) product in
FiniteTransformFunction. Will be no longer needed whenpyinduct.core.Functionis overloaded with__add__and__mul__operator.Parameters: function (callable) –
-
class
FiniteTransformFunction(function, M, l, scale_func=None, nested_lambda=False)[source]¶ Bases:
pyinduct.core.FunctionProvide a transformed
pyinduct.core.Function
through the transformation
,
with the function vector
and
with a given matrix
.
The operator
denotes the matrix (of scalars) vector (of functions)
product. The interim result
is a vector
of functions
![&\bar\xi_{1,j} = \bar x(jl_0 + z),\qquad j=0,...,n-1, \quad l_0=l/n, \quad z\in[0,l_0] \\
&\bar\xi_{2,j} = \bar x(l - jl_0 + z).](../_images/math/998cef78022f912ac12b2afa04e32950ad356e67.png)
Finally, the provided function
is given through
.Note
For a more extensive documentation see section 4.2 in:
Wang, S. und F. Woittennek: Backstepping-Methode für parabolische Systeme mit punktförmigem inneren Eingriff. Automatisierungstechnik, 2015.
Parameters: - function (callable) –
Function
which will subdivided in
Functions![&\bar\xi_{1,j} = x(jl_0 + z),\qquad j=0,...,n-1, \quad l_0=l/n, \quad z\in[0,l_0] \\
&\bar\xi_{2,j} = x(l - jl_0 + z).](../_images/math/f18263c43b3a4e8bab5e20f8bff4b0ae8d345a78.png)
The vector of functions
consist of these functions:
- M (numpy.ndarray) – Matrix
of scalars. - l (numbers.Number) – Length of the domain (
).
-
class
SecondOrderDirichletEigenfunction(omega, param, spatial_domain, norm_fac=1.0)[source]¶ Bases:
pyinduct.core.FunctionProvide the eigenfunction
to an eigenvalue problem of the form
The eigenfrequency

must be provided.
Parameters: - om (numbers.Number) – eigenfrequency

- param (array_like) –

- spatial_domain (tuple) – Start point
and end point
of
the spatial domain
. - norm_fac (numbers.Number) – Factor to scale the eigenfunctions.
- om (numbers.Number) – eigenfrequency
-
class
SecondOrderRobinEigenfunction(om, param, spatial_domain, phi_0=1)[source]¶ Bases:
pyinduct.core.FunctionProvide the eigenfunction
to an eigenvalue problem of the form
The eigenfrequency

must be provided (with
compute_rad_robin_eigenfrequencies).Parameters: - om (numbers.Number) – eigenfrequency

- param (array_like) –

- spatial_domain (tuple) – Start point
and end point
of
the spatial domain
. - phi_0 (numbers.Number) – Factor to scale the eigenfunctions (correspond
).
- om (numbers.Number) – eigenfrequency
-
class
TransformedSecondOrderEigenfunction(target_eigenvalue, init_state_vect, dgl_coefficients, domain)[source]¶ Bases:
pyinduct.core.FunctionProvide the eigenfunction
to an eigenvalue problem of the form
where
is a predefined (potentially complex) eigenvalue and
is the domain.Parameters: - target_eigenvalue (numbers.Number) –

- init_state_vect (array_like) –

- dgl_coefficients (array_like) –

- domain (array_like) –

- target_eigenvalue (numbers.Number) –
-
compute_rad_robin_eigenfrequencies(param, l, n_roots=10, show_plot=False)[source]¶ Return the first
n_rootseigenfrequencies
(and eigenvalues
)
to the eigenvalue problem

Parameters: - param (array_like) –

- l (numbers.Number) – Right boundary value of the domain
. - n_roots (int) – Amount of eigenfrequencies to be compute.
- show_plot (bool) – A plot window of the characteristic equation appears if it is
True.
Returns: ![\Big(\big[\omega_1,...,\omega_\text{n\_roots}\Big], \Big[\lambda_1,...,\lambda_\text{n\_roots}\big]\Big)](../_images/math/e86fc2cd8b96e315ebd8426180d416296d1f9322.png)
Return type: tuple –> booth tuple elements are numpy.ndarrays of length
nroots- param (array_like) –
-
get_adjoint_rad_evp_param(param)[source]¶ Return to the eigen value problem of the reaction-advection-diffusion equation with robin and/or dirichlet boundary conditions

the parameters for the adjoint problem (with the same structure).
Parameters: param (array_like) – 
Returns: Parameters
for
the adjoint problem
Return type: tuple
-
return_real_part(to_return)[source]¶ Check if the imaginary part of
to_returnvanishes and return the real part.Parameters: to_return (numbers.Number or array_like) – Variable to check. Raises: ValueError– If (all) imaginary part(s) not vanishes.Returns: Real part of to_return.Return type: numbers.Number or array_like
-
transform2intermediate(param, d_end=None)[source]¶ Transformation
which eliminate the advection term
from the
reaction-advection-diffusion equation
with robin

or dirichlet

or mixed boundary condition.
Parameters: param (array_like) – 
Raises: TypeError– If
is callable but no derivative handle is defined for it.Returns: Parameters
for
the transformed system
and the corresponding boundary conditions (
and/or
set to None by dirichlet
boundary condition).Return type: tuple