Hi John, Maybe I can give some hints of how I would approach this problem (these are just some quick thoughts): Write this problem as a vector Laplace problem
curl(nu*curl(A)) - grad(div(A)) = J which you then have to write as a system of PDEs. Note, this can only be the same as curl(nu*curl(A)) = J if J is a curl itself. If you do not want to impose conditions on the divergence then you have two options: 1.) You use sigma = div(A) as an auxiliary variable and impose natural boundary conditions (i.e., the ones that you get through integration by parts) on A*n and nu*curl(A)xn, where n is the outward unit normal. This means that sigma is a 0-form and A is a 1-form -> sigma is then discretized (for example) by FE_Q(n+1) and A by FE_Nedelec(n) System: (A1) sigma + div(A) = 0 (B1) grad(sigma) + curl(nu*curl(A)) = J For the weak form you multiply (A1) with a FE_Q test function and integrate the second summand by parts. Secondly, you multiply (B1) with a Nedelec test function and also integrate the second summand by parts. You will see your natural boundary conditions pop up. 2.) You use sigma = nu*curl(A) as an auxiliary variable and impose essential boundary conditions on A*n and nu*curl(A)xn, where n is the outward unit normal. This means that sigma is interpreted as a 1-form and A is a 2-form -> sigma is then discretized (for example) by FE_Nedelec(n) and A by FE_RaviartThomas(n) System: (A2) (1/nu)*sigma - curl(A) = 0 (B2) curl(sigma) - grad(div(A)) = J For the weak form you multiply (A2) with a Nedelec test function and integrate the second summand by parts. Secondly, you multiply (B2) with a Raviart-Thomas test function and also integrate the second summand by parts. You will NOT see your natural boundary conditions pop up since conditions on A*n and nu*curl(A)xn are essential in this case. You need to enforce them on the function spaces directly. In deal.ii you do so by using project_boundary_values_curl_conforming_l2 <https://dealii.org/current/doxygen/deal.II/group__constraints.html#gacdba6b0a8a06f9c9ceff9f11ef05a203> or project_boundary_values_div_conforming <https://dealii.org/current/doxygen/deal.II/group__constraints.html#gafb7e51448054f5a4cdc95c7e39dfc0e0> Note that the additional boundary conditions make the system invertible and if J is a curl it will turn out that div(A)=0. There is a field in mathematics that is called finite element exterior calculus (FEEC) that answers the question of stability when solving such problems. See this book <https://epubs.siam.org/doi/book/10.1137/1.9781611975543>. I guess Chapters 4, 5 and 6 are most interesting for you. > I do not understand when a geometry gets complicated. Is a toroid inside a > sphere, both centred at the origin, a complicated geometry? To start with, > I will use a relatively simple mesh. I will not use local refinement, only > global. I can do without refinement as well, i.e. making the mesh in gmsh. > > Yes, I would like to know more about orientations issues on complicated > geometries. Could please tell me about it? I would very much prefer to use > FE_Nedelec without hierarchical shape functions. The first order 3D > FE_Nedelec will do nicely provided the orientation issues will be > irrelevant to the mesh. > Lowest order Nedelec and all other elements I mentioned are fine on the meshes you need I guess. Hope that helps. Best, Konrad -- 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/c2773841-4e03-42a1-9f1e-e1a41c0933c9n%40googlegroups.com.