pheromone_dispersion.advection_operator module
- class pheromone_dispersion.advection_operator.Advection(*args: Any, **kwargs: Any)[source]
Bases:
LinearOperatorClass containing the advection term linear operator \(A:c\mapsto \nabla\cdot(\vec{u}c)~\forall (x,y)\in\Omega~\forall t\in]0;T]\) with the related boundary condition \(\vec{u}c\cdot\vec{n}=0~\forall (x,y)\in\partial\Omega\cap \{(x,y)|\vec{u}(x,y,t)\cdot\vec{n}<0\}~\forall t\in]0;T]\).
The implementation of this linear operator is a subclass of the
LinearOperatorclass.- msh
The geometry of the domain.
- Type:
- shape
Shape of the matrix of the linear operator. The shape is (
msh.y.size*msh.x.size,msh.y.size*msh.x.size)- Type:
tupleofint
- dtype
Data type of the elements of the matrix of the linear operator. The type is float64
- Type:
- __init__(U, msh)[source]
Constructor method
- Parameters:
U (
Velocity) – The wind field \(\vec{u}(x,y,t)\).msh (
MeshRect2D) – The geometry of the domain.
- _matvec(x_out)[source]
Compute the image (matrix-vector product) of \(A:c\mapsto \nabla\cdot(\vec{u}c)\) with the related boundary condition for a given concentration map \(c\) at the current time.
- Parameters:
x_out (
ndarray) – The map of concentration of pheromones \(c(x,y)\) at a given time \(t\) raveled into a vector.- Returns:
Array containing the image \(\nabla\cdot(\vec{u}c)\).
- Return type:
Notes
The input \(c\) has to be raveled into a (
msh.y.size*msh.x.size,)-shape array to match the format of theLinearOperatorclass. The same way, the ouput can be reshape into a (msh.y.size,msh.x.size)-shape array to get the map \(Ac(x,y)\) at the current time \(t\)
- _rmatvec(x_out)[source]
Compute the image (matrix-vector product) of \(A^*_f:c^*\mapsto - \nabla\cdot(\vec{u}c^*)\) with the related boundary condition, image of the flux part of the adjoint of the convection linear operator for the map of a given element of the adjoint state space at the current time.
- Parameters:
x_out (
ndarray) – The map of an element of the adjoint state space \(c^*(x,y)\) at a given time \(t\) raveled into a vector.- Returns:
Array containing the image \(- \nabla\cdot(\vec{u}c^*)\).
- Return type:
Notes
As the adjoint operator is \(A^*:c^*\mapsto - \nabla\cdot(\vec{u}c^*)+(\nabla.\vec{u})c^*\) with the boundary condition \(\vec{u}c\cdot\vec{n}=0~\forall (x,y)\in\partial\Omega\cap \{(x,y)|\vec{u}(x,y,t)\cdot\vec{n}>0\}~\forall t\in]0;T]\), this flux part of the adjoint operator \(A^*_f\) is the adjoint operator \(A^*\) if \(\nabla.\vec{u}=0\), i.e. the velocity field is divergence-free.
- at_current_time(tc, U)[source]
Update a given wind field at a given time.
- Parameters:
tc (
floatorinteger) – The current time.U (
Velocity) – The wind field to update.
Notes
Updates the given wind field and its attributes using the method
at_current_time()of the classVelocity.
- class pheromone_dispersion.advection_operator.AdvectionAdjoint(*args: Any, **kwargs: Any)[source]
Bases:
LinearOperatorClass containing the adjoint of the advection term linear operator \(A^*:c^*\mapsto - \nabla\cdot(\vec{u}c^*)+(\nabla.\vec{u})c^*\) with the boundary condition \(\vec{u}c\cdot\vec{n}=0~\forall (x,y)\in\partial\Omega\cap \{(x,y)|\vec{u}(x,y,t)\cdot\vec{n}>0\}~\forall t\in]0;T]\).
The implementation of this linear operator is a subclass of the
LinearOperatorclass.- msh
The geometry of the domain.
- Type:
- shape
Shape of the matrix of the linear operator. The shape is (
msh.y.size*msh.x.size,msh.y.size*msh.x.size)- Type:
tupleofint
- dtype
Data type of the elements of the matrix of the linear operator. The type is float64
- Type:
- __init__(U, msh)[source]
Constructor method
- Parameters:
U (
Velocity) – The wind field \(\vec{u}(x,y,t)\).msh (
MeshRect2D) – The geometry of the domain.
- _matvec(x_out)[source]
Compute the image (matrix-vector product) of \(A^*:c^*\mapsto - \nabla\cdot(\vec{u}c^*)+(\nabla.\vec{u})c^*\) with the related boundary condition for the map of a given element of the adjoint state space at the current time.
- Parameters:
x_out (
ndarray) – The map of an element of the adjoint state space \(c^*(x,y)\) at a given time \(t\) raveled into a vector.- Returns:
Array containing the image \(- \nabla\cdot(\vec{u}c^*)+(\nabla.\vec{u})c^*\).
- Return type:
Notes
The input \(c^*\) has to be raveled into a (
msh.y.size*msh.x.size,)-shape array to match the format of theLinearOperatorclass. The same way, the ouput can be reshape into a (msh.y.size,msh.x.size)-shape array to get the map \(A^*c^*(x,y)\) at the current time \(t\)
- pheromone_dispersion.advection_operator.sum_advection_flux_given_U(U, x, msh)[source]
Compute at each cells the sum of the flux of an advection term \(A:c\mapsto \nabla\cdot(\vec{u}c)~\forall (x,y)\in\Omega~\forall t\in]0;T]\) with the related boundary condition \(\vec{u}c\cdot\vec{n}=0~\forall (x,y)\in\partial\Omega\cap \{(x,y)|\vec{u}(x,y,t)\cdot\vec{n}<0\}~\forall t\in]0;T]\) for a given velocity field \(\vec{u}\) at the current time.
- Parameters:
U (
Velocity) – The wind field \(\vec{u}(x,y,t)\).x (
ndarray) – The concentration of pheromones map \(c(x,y)\) at the current time \(t\) raveled into a vector.msh (
MeshRect2D) – The geometry of the domain.
- Returns:
the sum of the flux at each cells at the current time.
- Return type: