LECCION 7 - EJERCICIO 8 (18.8) v.2005

INICIO

Off[General::"spell1"]
Off[General::"spell"]

SetDirectory[NotebookDirectory[]]

DEFINICION  ELEMENTO TRIANGULAR DE TRANSICION DE 4 NODOS - ###

DEFINICION GRAFICA

TriT4=;

TriT4r=Show[TriT4, ImageSize->300]

COORDENADAS TRIANGULARES NODOS

Cnt={{1,0,0},{0,1,0},{0,0,1},X};

NNodos=Dimensions[Cnt][[1]]

ELEMENTO COMPLETO NECESARIO - 2 DIVISIONES POR LADO

TriR6=;

Show[TriR6, ImageSize->300]

FUNCIONES DE FORMA - METODO PRODUCTO DE CURVAS

CURVAS A CONSIDERAR - TRIANGULO REGULAR DE 6 NODOS - ###

Show[TriR6,ImageSize-> 350]

Cu=Table[0,{i,9}];

LADOS

Cu[[1]]=ζ3;Cu[[2]]=X;Cu[[3]]=ζ2;

MEDIANAS

Cu[[4]]=(ζ1-1/2);

Cu[[5]]=X;

Cu[[6]]=(ζ3-1/2);

DEFINICION PRODUCTO DE CURVAS EN CADA NODO - NODOS NO ESQUINA - ###

Nc=Table[0,{i,NNodos}];

Show[TriT4,ImageSize-> 350]

Tipo 2 - LADOS

Nc[[4]]=Cu[[2]]*X;

OBTENCION FUNCIONES DE FORMA - NODOS NO ESQUINA

Clear[Nf]

Nfp=Table[0,{i,NNodos}];

Nf=Table[0,{i,NNodos}];

Do[
Nfp[[i]]=a*Nc[[i]];
eq=1==Nfp[[i]]/.{ζ1 ->Cnt[[i,1]],ζ2->Cnt[[i,2]],ζ3->Cnt[[i,3]]};
as=a/.Solve[eq,a][[1]];Print["Nodo ",i];
Nf[[i]]=Simplify[Nfp[[i]]/.{a->as}],
{i,4,NNodos}
];

MatrixForm[Nf]

OBTENCION FUNCIONES DE FORMA - NODOS ESQUINA

Utilizamos las Funciones de Forma del Triangulo de 3 Nodos.

Nf3={ζ1,ζ2,ζ3};

NODO 1

Clear[a4]

Nf[[1]]=X+a4*Nf[[4]];

Show[TriT4,ImageSize-> 400]

eq=0==Nf[[1]]/.{ζ1->Cnt[[4]][[1]],ζ2->Cnt[[4]][[2]],ζ3->Cnt[[4]][[3]]}
a4s=a4/.Solve[eq,a4][[1]]

Nf[[1]]=Simplify[Nf[[1]]/.{a4->a4s}]

NODO 2

Clear[a4]

Nf[[2]]=Nf3[[2]]+X*Nf[[4]];

Show[TriT4,ImageSize-> 400]

eq=0==Nf[[2]]/.{ζ1->Cnt[[4]][[1]],ζ2->Cnt[[4]][[2]],ζ3->Cnt[[4]][[3]]}
a4s=a4/.Solve[eq,a4][[1]]

Nf[[2]]=Simplify[Nf[[2]]/.{a4->a4s}]

NODO 3

Clear[a4]

Nf[[3]]=Nf3[[3]]+a4*X;

Show[TriT4,ImageSize-> 400]

eq=0==Nf[[3]]/.{ζ1->Cnt[[4]][[1]],ζ2->Cnt[[4]][[2]],ζ3->Cnt[[4]][[3]]}
a4s=a4/.Solve[eq,a4][[1]]

Nf[[3]]=Simplify[Nf[[3]]/.{a4->a4s}]

FUNCIONES DE FORMA DE TODOS LOS NODOS

MatrixForm[Nf]

COMPROBACION SUMA UNIDAD

Suma=(∑_(i=1)^NNodos)Nf[[i]]

Simplify[Suma/.{ζ1->1-ζ2-ζ3}]

OK - SE CUMPLE LA CONDICION DE COMPLETITUD

Proceso para comprobar Valor Funciones de Forman en Nodos - en caso de Error

(*Do[
Print["NODO ",j];
Do[
Print[i,"  ",Simplify[Nf[[j]]/.{ζ1 ->Cnt[[i,1]],ζ2->Cnt[[i,2]],ζ3->Cnt[[i,3]]}]/.{ζ1->1-ζ2-ζ3}],
{i,NNodos}
  ],
{j,NNodos}
];*)

REPRESENTACION GRAFICA

Función Representación Gráfica Funciones de Forma

PlotTriangleShapeFunction[xytrig_,f_,Nsub_,aspect_]:=Module[{Ni,line3D={},poly3D={},zc1,zc2,zc3,xyf1,xyf2,xyf3,xc,yc,x1,x2,x3,y1,y2,y3,z1,z2,z3,iz1,iz2,iz3,d},{{x1,y1,z1},{x2,y2,z2},{x3,y3,z3}}=Take[xytrig,3];xc={x1,x2,x3};yc={y1,y2,y3};Ni=Nsub*3;Do[Do[iz3=Ni-iz1-iz2;If[iz3≤0,Continue[]];d=0;If[Mod[iz1+2,3]==0&&Mod[iz2-1,3]==0,d=1];If[Mod[iz1-2,3]==0&&Mod[iz2+1,3]==0,d=-1];If[d==0,Continue[]];zc1=N[{iz1+d+d,iz2-d,iz3-d}/Ni];zc2=N[{iz1-d,iz2+d+d,iz3-d}/Ni];zc3=N[{iz1-d,iz2-d,iz3+d+d}/Ni];xyf1={xc.zc1,yc.zc1,f[zc1[[1]],zc1[[2]],zc1[[3]]]};xyf2={xc.zc2,yc.zc2,f[zc2[[1]],zc2[[2]],zc2[[3]]]};xyf3={xc.zc3,yc.zc3,f[zc3[[1]],zc3[[2]],zc3[[3]]]};AppendTo[poly3D,Polygon[{xyf1,xyf2,xyf3}]];AppendTo[line3D,Line[{xyf1,xyf2,xyf3,xyf1}]],{iz2,1,Ni-iz1}],{iz1,1,Ni}];Show[Graphics3D[RGBColor[1,0,0]],Graphics3D[poly3D],Graphics3D[Thickness[.002]],Graphics3D[line3D],Graphics3D[RGBColor[0,0,0]],Graphics3D[Thickness[.005]],Graphics3D[Line[xytrig]],PlotRange->All,BoxRatios->{1,1,aspect},Boxed->False]];

Representación Gráfica Funciones Forma Elemento.

Ng=Table[0,{i,NNodos}];

xyc1={0,0,0};xyc2={3,0,0};xyc3={Sqrt[3],3/2,0};xytrig=N[{xyc1,xyc2,xyc3,xyc1}];

Control de Cuadricula

Nsub=20;

Do[
fi[ζ1_,ζ2_,ζ3_]=Nf[[i]];
Ng[[i]]=PlotTriangleShapeFunction[xytrig,fi,Nsub,1/2],
{i,NNodos}
];

RESULTADOS INTERACTIVOS

Manipulate[{TriT4r,Ng[[n]],Nf[[n]]},{n,1,Dimensions[Nf][[1]],1},{n,Range[Dimensions[Nf][[1]]]},FrameLabel->{"FUNCION DE FORMA EN NODO n - TRIANGULO TRANSICION 4 NODOS"}, SaveDefinitions->True]

COMPROBACION COMPATIBILIDAD - N1 - LADO 1-2

CONDICION EN LADO

{ζ3->0};

GRADO FUNCION DE FORMA N1 EN LADO 1-2 -> X

Nf[[1]]

Expand[Nf[[1]]/.{ζ3->0}]

UNA FUNCION X SE DEFINE POR X NODOS - EN AL LADO 1-2 HAY X ---> SE CUMPLE LA CONDICION DE COMPATIBILIDAD

COMPROBACION COMPATIBILIDAD - N1 - LADO 1-3

CONDICION EN LADO

{ζ2->0};

GRADO FUNCION DE FORMA N1 EN LADO 1-2 -> X

Nf[[1]]

Expand[Nf[[1]]/.{ζ2->0}]

UNA FUNCION X SE DEFINE POR X NODOS - EN AL LADO 1-3 HAY X ---> SE CUMPLE LA CONDICION DE COMPATIBILIDAD