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.

Reply via email to