Trace on an internal boundary of a dc finite element

Dear,

I would like to have access to the trace of a discontinuous finite element function on each side of an internal border of my mesh. Do you know a robust way to do this?

Best
Morgane

Here a small example

remark the normal of internal border is given by the orientation.
here the normal is (0,1).

border aa(t=0,pi) { x=cos(t); y= sin(t); label=1;}
border bb(t=pi,2*pi) { x=cos(t); y= sin(t); label=1;}
border cc(t=-1,1) { x=t; y= 0; label=2;}

mesh Th=buildmesh(aa(31)+bb(31)+cc(20));
plot(Th,wait=1);
fespace Vh(Th,P2dc);

Vh u,v;

solve Pb(u,v)= int2d(Th)( v*u) - int2d(Th)(x*v+(region+1)*v);
plot(u,wait=1);
cout << " region top " << Th(0,0.1).region << endl; 
cout << " region down " << Th(0,-0.1).region << endl; 
cout << int1d(Th,2)( jump(u) ) << endl; // jump 
cout << int1d(Th,2)( (u) ) << endl; // top 
cout << int1d(Th,2)( region  ) << endl; // top 
cout << int1d(Th,2)( otherside(u) ) << endl; // down 

1 Like