On 5/21/21 2:23 AM, Sebastian Kinnewig wrote:
The problem you are considering, i.e.
curl ( curl ( E ) ) - k^2 E = 0
is respectively sometimes called the ill-posed Maxwell's equations or the
indefinite Maxwell's equations.
When you are considering only the 2D case a direct solver should be enough.
But for the 3D case you will need more advanced methods. The most common
approach to solve these equations is via domain decomposition method (ddm).
The basic idea of the ddm is to divide the the domain into smaller subdomains,
where each subdomain becomes small enough so it can be handled by a direct
solver. The ddm for Maxwell is explained in greater detail in this paper: A
quasi-optimal domain decomposition algorithm for the time-harmonic Maxwell's
equations
<https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.sciencedirect.com%2Fscience%2Farticle%2Fpii%2FS0021999115001965&data=04%7C01%7CWolfgang.Bangerth%40colostate.edu%7Cae145f9e73094301870808d91c31afa9%7Cafb58802ff7a4bb1ab21367ff2ecfc8b%7C0%7C0%7C637571823692274784%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sdata=ZE74xHiT8FLjtTNhQCA68VeVYp3BjnWxDl3o%2Brrn8nM%3D&reserved=0>.
But it is not easy to build a Maxwell solver based on ddm in deal.II (I know
this, since I am currently working on such a solver by myself).
I am sorry, there is no easy way to do this.
This is somewhat outside of my realm of experience, but I'll chime in anyway:
Domain decomposition methods conceptually originated from the desire to use
serial codes that were developed in the 1990s and re-use them in a parallel
context. The question was how to connect them into a parallel code. deal.II
does not follow this paradigm: it just distributes *all* data structures
(mesh, matrices, vectors, etc). As a consequence, it is difficult to press
deal.II into service for DD methods because they philosophically just don't
quite fit into the deal.II world view.
But, I believe you also don't have to because essentially everything that has
been developed in the DD world is also available in the fully-distributed
world deal.II lives in. In the case you describe above, the key piece is the
direct solver that can be run on each subdomain sequentially. But there are
good parallel direct solvers that one could use -- specifically, I would
suggest to explore MUMPS, which you can access via its PETSc interfaces. (I
think I recall that there is also a Trilinos parallel direct solver, but I've
forgotten its name and we don't have an interface to it.) If you were to
consider something like step-40, where the domain is split into subdomains,
the matrix is split into corresponding sub-matrices, then a parallel direct
solver such as MUMPS can conceptually be thought of as inverting the diagonal
blocks of the matrix corresponding to each subdomain -- i.e., not so different
from what a direct solver applied to one subdomain in the DD context does. The
difference is that in the DD context, you then have to think of how to stitch
the individual subdomains back together (the boundary or "transmission"
conditions between subdomains) whereas in the fully-distributed,
one-global-linear-system world this is unnecessary.
Best
Wolfgang
--
------------------------------------------------------------------------
Wolfgang Bangerth email: bange...@colostate.edu
www: http://www.math.colostate.edu/~bangerth/
--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see
https://groups.google.com/d/forum/dealii?hl=en
---
You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to dealii+unsubscr...@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/dealii/41320c05-1389-5e5d-d1bd-2db22f9ecda9%40colostate.edu.