[Dune] parametrized AMR and cell divergence
Carsten Gräser
graeser at mi.fu-berlin.de
Wed Feb 25 00:28:11 CET 2015
Hi Marco,
with hanging node you will have precisely the situation mentioned
by Andreas. This does not change in 3d.
The problem is that GeometryGrid moves individual vertices, i.e,
the grid is deformed by a P1-function living on the host grid.
Unfortunately a P1-function with arbitrary values for each vertex
is not continuous in general. Hence you get holes or overlapping
elements as described by Andreas.
However you can cure this by using conforming P1-functions
leading to continuous deformations. This can be achieved by
interpolating the values at hanging nodes by their non-hanging
neighbors.
Best,
Carsten
Am 24.02.2015 um 19:17 schrieb Andreas Dedner:
> All I'm saying is that one element is a pentagon and GeometryGrid does
> not change the type of the element. So that the situation will not
> be correctly resolved by GeometryGrid since it uses the element geometry
> types of the hostgrid. For example element.geometry().volume() would
> be wrong. You would need a grid that can handle this pentagon.
> So the underlying codim zero elements do not conform to the dune
> structure if you use GeometryGrid.
>
> One could still get the intersection correctly I guess. But not the way
> it is implemented as you can see in
> dune/grid/geometrygrid/intersection.hh, As you can see it uses the
> geometry of
> the inside element and as discussed above that is not correct.
> Andreas
> FieldVector< ctype, dimensionworld >
> outerNormal ( const FieldVector< ctype, dimension-1 > &local ) const
> {
> const ReferenceElement< ctype, dimension > &refElement
> = ReferenceElements< ctype, dimension>::general(
> insideGeo_.type() );
>
> FieldVector< ctype, dimension > x( geometryInInside().global(
> local ) );
> const typename ElementGeometryImpl::JacobianInverseTransposed
> &jit = insideGeo_.jacobianInverseTransposed( x );
> const FieldVector< ctype, dimension > &refNormal =
> refElement.integrationOuterNormal( indexInInside() );
> FieldVector< ctype, dimensionworld > normal;
> jit.mv( refNormal, normal );
> return normal;
> }
>
>
>
>
>
> On 24/02/15 17:17, Marco Cisternino wrote:
>> This is exactly what I mean, but I was talking about 3D.
>> Anyway, from what you're saying I cannot understand the use of
>> GeometryGrid.
>> If I can move nodes using a deformation function and I can refine
>> locally (in Dune style), the "moved" situation is quite common.
>> Moreover, in this case I'd sum over the 5 intersections of the right
>> element asking for normals and intersections length, what is the
>> relevance of being a cube for the element? Intersections are "cube".
>> I can agree if you speak about the volume of the right element.
>> Who's Z?? You meant Y?
>> Thanks,
>>
>> Marco
>>
>>
>> --
>> -----------------------------------------------
>> Marco Cisternino, PhD
>> Software Developer
>> OPTIMAD Engineering s.r.l.
>> Via Giacinto Collegno 18
>> 10143 Torino - Italy
>> www.optimad.it
>> marco.cisternino at optimad.it
>> +39 011 19719782
>> -----------------------------------------------
>>
>> ------------------------------------------------------------------------
>> *Da: *"Andreas Dedner" <a.s.dedner at warwick.ac.uk>
>> *A: *"Marco Cisternino" <marco.cisternino at optimad.it>
>> *Cc: *dune at dune-project.org
>> *Inviato: *Martedì, 24 febbraio 2015 18:00:30
>> *Oggetto: *Re: [Dune] parametrized AMR and cell divergence
>>
>> So you have the following situation
>> Original Moved
>> X-----------A----------------X X--------A------------------X
>> | | | |
>> \ |
>> | | | |
>> \ |
>> |------------Y | |-----------Y |
>> | | | |
>> / |
>> | | | |
>> / |
>> X-----------B----------------X X-------B-------------------X
>> Perhaps somebody else can add his thoughts but the right element after
>> movement is not a cube any more so it still will have the straight edge
>> between AB and your grid elements would not be non overlapping. That
>> is not allowed in DUNE.
>>
>> The right element does have 5 intersections and I guess two of those
>> could be between AZ and ZB... But the main problem is the non DUNE
>> style grid.
>>
>> Andreas
>>
>> On 24/02/15 16:35, Marco Cisternino wrote:
>>
>> Absolutely non conforming.
>> I know I have a hanging node, but I cannot understand what you
>> say: why do you talk about coarse and fine intersections??
>> If I move a hanging node I'm moving 4 intersections, isn't it? And
>> my coarse element has 9 intersections, right?
>> Through its intersections the coarse element knows about the
>> hanging node or not?
>> If not I cannot imagine the use of intersections.
>>
>> Thanks again.
>> Marco
>>
>>
>> ------------------------------------------------------------------------
>> *Da: *"Andreas Dedner" <a.s.dedner at warwick.ac.uk>
>> *A: *"Marco Cisternino" <marco.cisternino at optimad.it>,
>> dune at dune-project.org
>> *Inviato: *Martedì, 24 febbraio 2015 16:55:38
>> *Oggetto: *Re: [Dune] parametrized AMR and cell divergence
>>
>> Hi.
>> Conforming or non conforming? If non conforming you have a hanging
>> node and if you move coarse and fine intersections will not match
>> (the
>> coarse grid element does not know about the hanging nor where it
>> is). Could that be your problem?
>> Best
>> Andreas
>>
>>
>> On 24/02/15 15:39, Marco Cisternino wrote:
>>
>> Hi Andreas, thank you for your reply.
>> I'm using GeometryGrid and ALU together. I provide ALU with a
>> DiscreteDeformationFunction (my coarse element
>> parametrization). Any time a new point appears in the mesh
>> after a refinement I move that point using the
>> DiscreteDeformationFunction.
>> The problem appears for local refinement. On the other hand,
>> if I globally refine the mesh I have no problem about the
>> divergence of the cells: it is zero everywhere.
>> However, if I refine only a bunch of cells, then the coarse
>> ones, sharing intersection with the fine ones, have non-zero
>> divergence.
>> I'm doing all this using the following methods:
>> intersection centerOuterUnitNormal
>> and codimension 1 volume method (choosing the element face
>> corresponding to the intersection)
>> I hope it is clearer.
>> Thanks,
>>
>> Marco
>>
>>
>>
>> ------------------------------------------------------------------------
>> *Da: *"Andreas Dedner" <a.s.dedner at warwick.ac.uk>
>> *A: *dune at dune-project.org
>> *Inviato: *Martedì, 24 febbraio 2015 12:14:33
>> *Oggetto: *Re: [Dune] parametrized AMR and cell divergence
>>
>> I'm not quite sure I understand the question. Are you seeing
>> problems
>> when refining the grid using ALU's standard globalRefine
>> method or do the problems
>> only appear when you use your local parametrization and after
>> moving nodes around
>> (I'm not quite clear how you do that with ALU....).
>> Andreas
>>
>>
>> On 24/02/15 11:00, Marco Cisternino wrote:
>>
>> Good morning,
>> I would like to ask duners about deformed AMR.
>> I'm working with body fitted mesh and ALUGrid.
>>
>> In order to refine my mesh I compute a local
>> parametrization for every coarse element, then I refine
>> the mesh moving new nodes using my parametrization.
>> Therefore I compute the cell divergence summing over the
>> cell intersection
>> normal . flux * area
>> where intersection normals and areas are computed by Dune
>> methods centerUnitNormal and volume(this for a face),
>> while flux is (1,1,1) everywhere.
>> I expect 0 over the entire mesh and this is true on the
>> coarse grid, but for a refined grid this is not true for
>> coarse cells sharing intersections with finer cells.
>> Does anyone see something like this? And is there a cure?
>> Am I doing something wrong?
>>
>> Thanks for any hint.
>> Bests,
>>
>> Marco
More information about the Dune
mailing list