You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Use case: we have a lot of degrees of freedom (e.g. N=30000, for example a 3D grid 20x20x20 with 4 fields), but the linear step is diagonal by block with small blocks.
Example equation: homogeneous Rayleigh-Bénard system with variables $u_x,u_y,u_z,\theta$: $\partial_t u_i + u_j\partial_ju_i + \nabla P = Pr\Delta u_i + RaPr \theta\delta_{i=z}$ $\partial\theta+u_j\partial_j\theta=\Delta \theta+u_z$.
In this system, the linear term for $\theta$ is extremely simple $\mathcal{L}(k_x,k_y,k_z)\theta=-k^2\theta+u_z$. It is block-diagonal with blocks of size 4 (the number of equations).
However, if we use (for instance) EDT35, we have to compute the NxN full matrix of the operator, which is way too big (1e10 elements !!).
Moreover, looking at the code of _ETD35_Diagonalized, it seems to me that all the quantities involved are stable by block diagonalization, so I expect that we could handle gracefully those cases (maybe using scipy.sparse ?).
The text was updated successfully, but these errors were encountered:
Hi,
Things may have changed but at the time I studied ETD with adaptive step,
nondiagonal linear operators were typically handled with other types of
exponential integrators, usually involving krylov subspace approximations
to the system thereby "shrinking" the sparse nondiagonal system under
investigation with a close approximation. If I knew of a good python
library for that I would point you to it, but I'm not aware of one, though
you may want to look into it.
I see the temptation in the block diagonal structure of your system to look
for ways to fit it into ETD35 but I think you would be getting into an area
that is or at least was not well studied or understood. If you would like
to try modifying the code to see if something works using scipy sparse
please let me know how that goes.
Best regards,
Patrick
On Wed, May 10, 2023, 5:54 AM Hippalectryon ***@***.***> wrote:
Use case: we have a lot of degrees of freedom (e.g. N=30000, for example a
3D grid 20x20x20 with 4 fields), but the linear step is diagonal by block
with small blocks.
Example equation: homogeneous Rayleigh-Bénard system with variables
$u_x,u_y,u_z,\theta$:
$\partial_t u_i + u_j\partial_ju_i + \nabla P = Pr\Delta u_i + RaPr
\theta\delta_{i=z}$
$\partial\theta+u_j\partial_j\theta=\Delta \theta+u_z$.
In this system, the linear term for $\theta$ is extremely simple
$\mathcal{L}(k_x,k_y,k_z)\theta=-k^2\theta+u_z$. It is block-diagonal
with blocks of size 4 (the number of equations).
However, if we use (for instance) EDT35, we have to compute the NxN full
matrix of the operator, which is way too big (1e10 elements !!).
Moreover, looking at the code of _ETD35_Diagonalized, it seems to me that
all the quantities involved are stable by block diagonalization, so I
expect that we could handle gracefully those cases (maybe using
scipy.sparse ?).
—
Reply to this email directly, view it on GitHub
<#4>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AGS5CMCTMBUZMAP7Z4LRSEDXFOFXNANCNFSM6AAAAAAX4WOEFM>
.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
Use case: we have a lot of degrees of freedom (e.g. N=30000, for example a 3D grid 20x20x20 with 4 fields), but the linear step is diagonal by block with small blocks.
Example equation: homogeneous Rayleigh-Bénard system with variables$u_x,u_y,u_z,\theta$ :
$\partial_t u_i + u_j\partial_ju_i + \nabla P = Pr\Delta u_i + RaPr \theta\delta_{i=z}$
$\partial\theta+u_j\partial_j\theta=\Delta \theta+u_z$ .
In this system, the linear term for$\theta$ is extremely simple $\mathcal{L}(k_x,k_y,k_z)\theta=-k^2\theta+u_z$ . It is block-diagonal with blocks of size 4 (the number of equations).
However, if we use (for instance) EDT35, we have to compute the NxN full matrix of the operator, which is way too big (1e10 elements !!).
Moreover, looking at the code of
_ETD35_Diagonalized
, it seems to me that all the quantities involved are stable by block diagonalization, so I expect that we could handle gracefully those cases (maybe usingscipy.sparse
?).The text was updated successfully, but these errors were encountered: