Dear all,
I’m having trouble with meshing. I’m trying to mesh a region that has a hole inside, but instead, I’m getting elements in yellow within that region. I want no elements in that area. How can I fix this?
int nbseg = 80, n = 10;
mesh Th;
real r1=1, r2=r1/4., r3=r1/8, r4=r1/12,anchoaleta=(r3/10); // Tubes dimensions
border circleO(t=-pi/2,pi/2){label=1;x=r1cos(t); y=r1sin(t);}
border gamma3(t=(r1/2)-sqrt(r3^2-anchoaleta^2)-r3,-r1/2+sqrt(r3^2-anchoaleta^2)+r3){label=2;x=0;y=t;} // pared simetria al medio
border gamma4(t=-(r1/2)-sqrt(r3^2-anchoaleta^2)-r3,-r1){label=2;x=0;y=t;} // pared superior
border gamma5(t=r1,r1/2+sqrt(r3^2-anchoaleta^2)+r3){label=2;x=0;y=t;} // pared inferior
///////// aletas tubo derecho completo /////////
//aleta derecha
border gammaTCD1(t=((r1/2)+sqrt(r3^2-anchoaleta^2)),((r1/2)+sqrt(r3^2-anchoaleta^2))+r3){label=4;x=t;y=anchoaleta;}
border gammaTCD2(t=anchoaleta,-anchoaleta){label=4;x=(r1/2)+sqrt(r3^2-anchoaleta^2)+r3;y=t;}
border gammaTCD3(t=((r1/2)+sqrt(r3^2-anchoaleta^2))+r3,(r1/2)+sqrt(r3^2-anchoaleta^2)){label=4;x=t;y=-anchoaleta;}
//aleta izquierda
border gammaTCI1(t=((r1/2)-sqrt(r3^2-anchoaleta^2))-r3,(r1/2)-sqrt(r3^2-anchoaleta^2)){label=4;x=t;y=anchoaleta;}
border gammaTCI2(t=-anchoaleta,anchoaleta){label=4;x=(r1/2)-sqrt(r3^2-anchoaleta^2)-r3;y=t;}
border gammaTCI3(t=(r1/2)-sqrt(r3^2-anchoaleta^2),(r1/2)-sqrt(r3^2-anchoaleta^2)-r3){label=4;x=t;y=-anchoaleta;}
//aleta superior
border gammaTCS1(t=(sqrt(r3^2-anchoaleta^2)),(sqrt(r3^2-anchoaleta^2))+r3){label=4;x=(r1/2)+anchoaleta;y=t;}
border gammaTCS2(t=(r1/2)-anchoaleta,(r1/2)+anchoaleta){label=4;x=t;y=sqrt(r3^2-anchoaleta^2)+r3;}
border gammaTCS3(t=sqrt(r3^2-anchoaleta^2),sqrt(r3^2-anchoaleta^2)+r3){label=4;x=(r1/2)-anchoaleta;y=t;}
//aleta inferior
border gammaTCB1(t=-(sqrt(r3^2-anchoaleta^2)),-((sqrt(r3^2-anchoaleta^2))+r3)){label=4;x=(r1/2)+anchoaleta;y=t;}
border gammaTCB2(t=anchoaleta,-anchoaleta){label=4;x=(r1/2)+t;y=-sqrt(r3^2-anchoaleta^2)-r3;}
border gammaTCB3(t=-(sqrt(r3^2-anchoaleta^2))±r3,-(sqrt(r3^2-anchoaleta^2))){label=4;x=(r1/2)-anchoaleta;y=t;}
////// aleta superior semi ///////
//aleta derecha
border gammaTSD1(t=(sqrt(r3^2-anchoaleta^2)),(sqrt(r3^2-anchoaleta^2))+r3){label=2;x=t;y=(r1/2)+anchoaleta;}
border gammaTSD2(t=anchoaleta,-anchoaleta){label=2;x=(sqrt(r3^2-anchoaleta^2)+r3);y=(r1/2)+t;}
border gammaTSD3(t=(sqrt(r3^2-anchoaleta^2))+r3,(sqrt(r3^2-anchoaleta^2))){label=2;x=t;y=(r1/2)-anchoaleta;}
//aleta superior
border gammaTSS1(t=((sqrt(r3^2-anchoaleta^2))+r3),(sqrt(r3^2-anchoaleta^2))){label=2;x=anchoaleta;y=(r1/2)+t;}
border gammaTSS2(t=0,anchoaleta){label=2;x=t;y=r1/2+sqrt(r3^2-anchoaleta^2)+r3;}
//aleta inferior
border gammaTSI1(t=-(sqrt(r3^2-anchoaleta^2)),-((sqrt(r3^2-anchoaleta^2))+r3)){label=2;x=anchoaleta;y=(r1/2)+t;}
border gammaTSI2(t=anchoaleta,0){label=2;x=t;y=+(r1/2)-sqrt(r3^2-anchoaleta^2)-r3;}
///// aleta inferior semi ///////
// aleta derecha
border gammaTID1(t=(sqrt(r3^2-anchoaleta^2)),((sqrt(r3^2-anchoaleta^2))+r3)){label=2;x=t;y=-(r1/2)+anchoaleta;}
border gammaTID2(t=anchoaleta,-anchoaleta){label=2;x=(sqrt(r3^2-anchoaleta^2)+r3);y=-(r1/2)+t;}
border gammaTID3(t=(sqrt(r3^2-anchoaleta^2))+r3,(sqrt(r3^2-anchoaleta^2))){label=2;x=t;y=-(r1/2)-anchoaleta;}
// aleta superior
border gammaTIS1(t=((sqrt(r3^2-anchoaleta^2))+r3),(sqrt(r3^2-anchoaleta^2))){label=2;x=anchoaleta;y=-(r1/2)+t;}
border gammaTIS2(t=0,anchoaleta){label=2;x=t;y=-r1/2+sqrt(r3^2-anchoaleta^2)+r3;}
//aleta inferior
border gammaTII1(t=-(sqrt(r3^2-anchoaleta^2)),-((sqrt(r3^2-anchoaleta^2))+r3)){label=2;x=anchoaleta;y=-(r1/2)+t;}
border gammaTII2(t=anchoaleta,0){label=2;x=t;y=-(r1/2)-sqrt(r3^2-anchoaleta^2)-r3;}
// bordes circulo completo
border segcircint1(t=acos(anchoaleta/r3),asin(anchoaleta/r3)){label=4;x=r1/2.+r3cos(t); y=r3sin(t);} // primer cuadrante
border segcircint2(t=pi-asin(anchoaleta/r3),pi-acos(anchoaleta/r3)){label=4;x=r1/2.+r3cos(t); y=r3sin(t);} // segundo cuadrante
border segcircint3(t=pi+acos(anchoaleta/r3),pi-asin(-anchoaleta/r3)){label=4;x=r1/2.+r3cos(t); y=r3sin(t);} // // tercer cuadrante
border segcircint4(t=2pi+asin(-anchoaleta/r3),2pi-acos(anchoaleta/r3)){label=4;x=r1/2.+r3cos(t); y=r3sin(t);} // cuarto cuadrante
//bordes ciruclo superior
border segcircsup1(t=acos(anchoaleta/r3),asin(anchoaleta/r3)){label=3;x=+r3cos(t); y=(r1/2)+r3sin(t);}
border segcircsup2(t=2pi+asin(-anchoaleta/r3),2pi-acos(anchoaleta/r3)){label=3;x=r3cos(t); y=(r1/2)+r3sin(t);}
//bordes ciculo inferior
border segcircinf1(t=acos(anchoaleta/r3),asin(anchoaleta/r3)){label=3;x=+r3cos(t); y=-(r1/2)+r3sin(t);}
border segcircinf2(t=2pi+asin(-anchoaleta/r3),2pi-acos(anchoaleta/r3)){label=3;x=r3cos(t); y=-(r1/2)+r3sin(t);}
// Construcción de la malla principal con exclusión de la región rosada
Th = buildmesh(
circleO(n8) // Contorno exterior
+ gamma3(n3) + gamma4(n) + gamma5(n) // Bordes adicionales
+ segcircsup1(n) + segcircsup2(n) // Segmentos superiores
+ segcircinf1(n) + segcircinf2(n) // Segmentos inferiores
+ gammaTSD1(n) + gammaTSD2(n/3) + gammaTSD3(n) // Aletas semiderecha
+ gammaTID1(n) + gammaTID2(n/3) + gammaTID3(n) // Aletas semizquierda
+ gammaTSS1(n) + gammaTSS2(n) // Aletas superiores semicirculares
+ gammaTIS1(n) + gammaTIS2(n) // Aletas inferiores semicirculares
+ gammaTSI1(n) + gammaTSI2(n) // Aletas inferiores laterales
+ gammaTII1(n) + gammaTII2(n) // Aletas inferiores internas
+ segcircint1(n) + segcircint2(n) + segcircint3(n) + segcircint4(n)
+ gammaTCD1(n) + gammaTCD2(n/3) + gammaTCD3(n)
+ gammaTCI1(n) + gammaTCI2(n/3) + gammaTCI3(n)
+ gammaTCS1(n) + gammaTCS2(n/3) + gammaTCS3(n)
+ gammaTCB1(n) + gammaTCB2(n/3) + gammaTCB3(n)
);
plot(Th, wait=1);