[Gmsh] periodic surfaces of a cube

Martin Genet genet at lmt.ens-cachan.fr
Tue Oct 13 11:30:16 CEST 2009


A solution is attached. Many thanks! Martin.

On lundi 12 octobre 2009 21:34:33, Martin Genet wrote:
> Hello all!
> 
> I am trying to generate the faces of a cube with periodic meshes. However, I do not succeed.
> 
> The code is attached. I do not get any error, but only the first two surfaces are generated. A few points:
>  - I can generate each pair of surfaces independantly: the problem only occurs when I try to generate all surfaces in the same code.
>  - When I change the extrude vectors (e.g. -L instead of L), everything is alright and I get all surfaces.
>  - When I change the extrude vector of the second and third pairs (e.g. -L instead of L), only the extruded surfaces are generated, and I get some "Error : Unknown source surface 42 for extrusion".
> 
> Many thanks for your help!
> 
> Martin.
> 
-------------- next part --------------
General.Terminal = 1;

L = 10;
l = 1.;

P1 = newp; Point(P1) = {0, 0, 0, l};
P2 = newp; Point(P2) = {L, 0, 0, l};
P3 = newp; Point(P3) = {L, 0, L, l};
P4 = newp; Point(P4) = {0, 0, L, l};
P5 = newp; Point(P5) = {0, L, 0, l};
P6 = newp; Point(P6) = {L, L, 0, l};
P7 = newp; Point(P7) = {L, L, L, l};
P8 = newp; Point(P8) = {0, L, L, l};

L01 = newl; Line(L01) = {P1, P2};
L02 = newl; Line(L02) = {P2, P3};
L03 = newl; Line(L03) = {P3, P4};
L04 = newl; Line(L04) = {P4, P1};
L05 = newl; Line(L05) = {P2, P6};
L06 = newl; Line(L06) = {P6, P7};
L07 = newl; Line(L07) = {P7, P3};
L08 = newl; Line(L08) = {P6, P5};
L09 = newl; Line(L09) = {P5, P8};
L10 = newl; Line(L10) = {P8, P7};
L11 = newl; Line(L11) = {P5, P1};
L12 = newl; Line(L12) = {P4, P8};

LL1 = newll; Line Loop(LL1) = { L01,  L02,  L03,  L04};
LL2 = newll; Line Loop(LL2) = { L05,  L06,  L07, -L02};
LL3 = newll; Line Loop(LL3) = { L08,  L09,  L10, -L06};
LL4 = newll; Line Loop(LL4) = { L11, -L04,  L12, -L09};
LL5 = newll; Line Loop(LL5) = { L01,  L05,  L08,  L11};
LL6 = newll; Line Loop(LL6) = {-L03, -L07, -L10, -L12};

Geometry.AutoCoherence = 0;

S1 = news; Plane Surface(S1) = {LL1};
out[] = Extrude {0., L, 0.} { Surface{S1}; Layers{{1}, {1}}; };
S3 = out[0];
Delete {Volume {out[1]};}
Delete {Surface {out[2]};}
Delete {Surface {out[3]};}
Delete {Surface {out[4]};}
Delete {Surface {out[5]};}

S4 = news; Plane Surface(S4) = {LL4};
out[] = Extrude {L, 0., 0.} { Surface{S4}; Layers{{1}, {1}}; };
S2 = out[0];
Delete {Volume {out[1]};}
Delete {Surface {out[2]};}
Delete {Surface {out[3]};}
Delete {Surface {out[4]};}
Delete {Surface {out[5]};}

S5 = news; Plane Surface(S5) = {LL5};
out[] = Extrude {0., 0., L} { Surface{S5}; Layers{{1}, {1}}; };
S6 = out[0];
Delete {Volume {out[1]};}
Delete {Surface {out[2]};}
Delete {Surface {out[3]};}
Delete {Surface {out[4]};}
Delete {Surface {out[5]};}

Geometry.AutoCoherence = 1;
Coherence;

Physical Surface ( "surf" ) = { S1, S2, S3, S4, S5, S6 };