Firstly, thanks for the response, it's a big help.

Moreover --I probably wasn't clear--, I'm solving the problem using *two*
meshes. First is a small rectangle, and second a large rectangle with a hole
(at the size of the first rectangle) in its center.
What I thought I should do is create two classes similar to LaplaceProblem in
Tutorial 3, one for each of the problems. Then call each of them to solve their
respective problem (by first feeding to them the new boundary conditions), and
when they're done take the gradient from each of the solutions and update the
boundary conditions.

Thanks again.

Quoting Wolfgang Bangerth <[email protected]>:


I want to solve a problem in a 2D rectangle. The problem is tough only in a
small rectangle in the middle, thus I want to break the initial problem to
two problems (1st problem: a small rectangle in the middle, and 2nd
problem: the remaining domain if you remove the said rectangle from a
larger one), which I can solve independently and converge to a solution,
iteratively, through interface relaxation.
I use Dirichlet conditions on the common boundary, which I update on every
iteration. Specifically, after solving both problems (in a certain
iteration) I use the derivatives at the common boundary to update the
Dirichlet conditions.

So you are using a domain decomposition approach, but want to solve things on
a single mesh, right?


1) how can I take the derivatives at the common boundary (after solving the
problem)?, and

You can use FEFaceValues and evaluate the gradients of the current solution
using
 fe_face_values.get_function_gradients(...)


2) can I use the boundary vector directly (in case the refinement of the
domain is such that they have the same nodes on the common boundary)?
should I probably avoid feeding the boundary data to the problem by setting
the values of the boundary vector directly, and instead interpolate my data
to create a function and use interpolate_boundary_values() to setup the
boundary vector?

I don't understand this question. Are the two subdomains part of the same
mesh?


Lastly, a question that has to do with both my questions above (it depends
on the answers to these questions whether an answer to the following
question is "required"):
how do I know which element of the boundary vector corresponds to what
coordinate (or the reverse)?

You can ask DoFTools::map_dofs_to_support_points() for this task.

Best
W.

-------------------------------------------------------------------------
Wolfgang Bangerth                email:            [email protected]
                                www: http://www.math.tamu.edu/~bangerth/



_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii

Reply via email to