[Getdp] solving trivial example using edge elements

Olivier Castany castany at quatramaran.ens.fr
Sat Jun 2 00:26:03 CEST 2007


Hello,

after discussing and working on that problem (with William McLean), I 
present a few conclusions :

* The problem : "u + rot(rot(u)) = f, in Omega" can be stated with the 
following boundary conditions (among other possibilities) :

- tangential value of rot(u) imposed on the boundary
- tangential value of u imposed on the boundary

* The first b.c. can be easily formulated in GetDP (see attached file 
edge_elts_rot_u.pro).

* I did not find a direct way to impose the second b.c., but had to 
use a two-step resolution :

1st) the edge coefficients of u on the boundaries are weakly 
assigned by an initial resolution

2nd) the former result is taken as an essential b.c. for the main 
resolution (TransferSolution / AssignFromResolution) (see attached file 
edge_elts_u.pro).

* This solution works, but it could be interesting to have the 
possibility to directly assign the edge values with something like :

Constraint {
  { Name DirichletBC; Type Assign;
    Case {
        { Region Bdry; Value EdgeVector[]*g[] ; } 
or even better :
        { Region Bdry; Value CirculationAlongTheEdge[g[]] ; }
    }
  }
}

* In a former message where I said that "I made a quick try", the 
solution I wrote was not giving the desired b.c. (in fact, the b.c. 
assigned was : gamma_t u - n x rot(u) = gamma_t g, where gamma_t is the 
operator taking the tangential part of the vector)

Regards,

O.C.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: edge_elts.tgz
Type: application/x-gtar
Size: 1859 bytes
Desc: not available
URL: <http://www.geuz.org/pipermail/getdp/attachments/20070602/f6eb1a4e/attachment.tgz>