LECCION 7 - EJERCICIO 9 (18.9) v.2005

INICIO

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

SetDirectory[NotebookDirectory[]]

DEFINICION  ELEMENTO CUADRILATERO DE TRANSICION DE 6 NODOS - ###

DEFINICION GRAFICA

CuaT6=;

CuaT6r=Show[CuaT6, ImageSize->250]

COORDENADAS NATURALES NODOS

Cn={{-1,-1},{1,-1},{1,1},X,{0,-1},{1,0}};

NNodos=Dimensions[Cn][[1]]

ELEMENTOS COMPLETOS NECESARIOS

REGULAR DE 4 NODOS

CuaR4=;

CuaR4r=Show[CuaR4, ImageSize->250]

SERENDIPITO DE 8 NODOS - 2 DIVISIONES POR LADO

CuaS8=;

CuaS8r=Show[CuaS8, ImageSize->250]

FUNCIONES DE FORMA - METODO PRODUCTO DE CURVAS

CURVAS A CONSIDERAR

LADOS - CUADRILATERO REGULAR DE 4 NODOS - ###

CuCR04N=Table[0,{i,4}];

CuCR04N[[1]]=(η+1);CuCR04N[[2]]=(ξ-1);CuCR04N[[3]]=X;CuCR04N[[4]]=(ξ+1);

LADOS Y MEDIANAS - CUADRILATERO SERENDIPITO DE 8 NODOS - ###

Show[CuaS8, ImageSize->250]

CuCS8N=Table[0,{i,6 }];

CuCS8N[[1]]=(η+1);
CuCS8N[[2]]=(ξ-1);
CuCS8N[[3]]=(η-1);
CuCS8N[[4]]=(ξ+1);

CuCS8N[[5]]=X;

CuCS8N[[6]]=(η);

DEFINICION PRODUCTO DE CURVAS EN CADA NODO - NODOS NO ESQUINA

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

Show[CuaT6,ImageSize->250]

Tipo 2 - LADOS - ###

Nc[[5]]=CuCS8N[[2]]*CuCS8N[[3]]*CuCS8N[[4]];

Nc[[6]]=CuCS8N[[1]]*X*CuCS8N[[4]];

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]]/.{ξ->Cn[[i,1]],η->Cn[[i,2]]};
as=a/.Solve[eq,a][[1]];Print["Nodo ",i];
Nf[[i]]=Simplify[Nfp[[i]]/.{a->as}],
{i,5,NNodos}
];

MatrixForm[Nf]

OBTENCION FUNCIONES DE FORMA - NODOS ESQUINA - ###

Utilizamos las Funciones de Forma del Cuadrilatero de 4 Nodos.

NfCR4={(1/4) (-1+η) (-1+ξ),-(1/4) (-1+η) (1+ξ),(1/4) (1+η) (1+ξ),X};

NODO 1 - Desarrollo - #

Clear[a5,a6];

Nf[[1]]=NfCR4[[1]]+X*Nf[[5]]+a6*Nf[[6]];

Show[CuaT6,ImageSize-> 250]

eq=0==Nf[[1]]/.{ξ->Cn[[5]][[1]],η->Cn[[5]][[2]]}
a5s=a5/.Solve[eq,a5][[1]]

Nf[[1]]=Simplify[Nf[[1]]/.{a5->a5s}];

eq=0==Nf[[1]]/.{ξ->Cn[[6]][[1]],η->Cn[[6]][[2]]}
a6s=a6/.Solve[eq,a6][[1]]

Nf[[1]]=Simplify[Nf[[1]]/.{a6->a6s}];

Nf[[1]]

NODO 2 - Desarrollo - #

Clear[a5,a6];

Nf[[2]]=NfCR4[[2]]+a5*Nf[[5]]+X*Nf[[6]];

Show[CuaT6,ImageSize-> 250]

eq=0==Nf[[2]]/.{ξ->Cn[[5]][[1]],η->Cn[[5]][[2]]}
a5s=a5/.Solve[eq,a5][[1]]

Nf[[2]]=Simplify[Nf[[2]]/.{a5->a5s}];

eq=0==Nf[[2]]/.{ξ->Cn[[6]][[1]],η->Cn[[6]][[2]]}
a6s=a6/.Solve[eq,a6][[1]]

Nf[[2]]=Simplify[Nf[[2]]/.{a6->a6s}]

NODO 3 - Desarrollo - #

Clear[a5,a6];

Nf[[3]]=X+a5*Nf[[5]]+a6*Nf[[6]];

Show[CuaT6,ImageSize-> 250]

eq=0==Nf[[3]]/.{ξ->Cn[[5]][[1]],η->Cn[[5]][[2]]}
a5s=a5/.Solve[eq,a5][[1]]

Nf[[3]]=Simplify[Nf[[3]]/.{a5->a5s}]

eq=0==Nf[[3]]/.{ξ->Cn[[6]][[1]],η->Cn[[6]][[2]]}
a6s=a6/.Solve[eq,a6][[1]]

Nf[[3]]=Simplify[Nf[[3]]/.{a6->a6s}]

NODO 4 - Desarrollo - #

Clear[a5,a6];

Nf[[4]]=NfCR4[[4]]+a5*Nf[[5]]+a6*X;

Show[CuaT6,ImageSize-> 250]

eq=0==Nf[[4]]/.{ξ->Cn[[5]][[1]],η->Cn[[5]][[2]]}
a5s=a5/.Solve[eq,a5][[1]]

Nf[[4]]=Simplify[Nf[[4]]/.{a5->a5s}];

eq=0==Nf[[4]]/.{ξ->Cn[[6]][[1]],η->Cn[[6]][[2]]}
a6s=a6/.Solve[eq,a6][[1]]

Nf[[4]]=Simplify[Nf[[4]]/.{a6->a6s}]

Funciones de Forma de todos los Nodos.

MatrixForm[Nf]

Comprobación Suma Unidad - #

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

Simplify[%]

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]]/.{ξ->Cn[[i,1]],η->Cn[[i,2]]}]],
{i,NNodos}
  ],
{j,NNodos}
];

Representación Gráfica.

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

PlotQuadrilateralShapeFunction[xyquad_,f_,Nsub_,aspect_]:=Module[{Ne,Nev,line3D={},poly3D={},xyf1,xyf2,xyf3,i,j,n,ixi,ieta,xi,eta,x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4,xc,yc},{{x1,y1,z1},{x2,y2,z2},{x3,y3,z3},{x4,y4,z4}}=Take[xyquad,4];xc={x1,x2,x3,x4};yc={y1,y2,y3,y4};Ne[xi_,eta_]:=N[{(1-xi)*(1-eta),(1+xi)*(1-eta),(1+xi)*(1+eta),(1-xi)*(1+eta)}/4];n=Nsub;Do[Do[ixi=(2*i-n-1)/n;ieta=(2*j-n-1)/n;{xi,eta}=N[{ixi-1/n,ieta-1/n}];Nev=Ne[xi,eta];xyf1={xc.Nev,yc.Nev,f[xi,eta]};{xi,eta}=N[{ixi+1/n,ieta-1/n}];Nev=Ne[xi,eta];xyf2={xc.Nev,yc.Nev,f[xi,eta]};{xi,eta}=N[{ixi+1/n,ieta+1/n}];Nev=Ne[xi,eta];xyf3={xc.Nev,yc.Nev,f[xi,eta]};{xi,eta}=N[{ixi-1/n,ieta+1/n}];Nev=Ne[xi,eta];xyf4={xc.Nev,yc.Nev,f[xi,eta]};AppendTo[poly3D,Polygon[{xyf1,xyf2,xyf3,xyf4}]];AppendTo[line3D,Line[{xyf1,xyf2,xyf3,xyf4,xyf1}]],{i,1,Nsub}],{j,1,Nsub}];Show[Graphics3D[RGBColor[1,1,0]],Graphics3D[poly3D],Graphics3D[Thickness[.002]],Graphics3D[line3D],Graphics3D[RGBColor[0,0,0]],Graphics3D[Thickness[.005]],Graphics3D[Line[xyquad]],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={3,3,0};xyc4={0,3,0};xyquad=N[{xyc1,xyc2,xyc3,xyc4,xyc1}];

Control de Cuadricula

Nsub=20;

Do[
fi[ξ_,η_]=Nf[[i]];
Ng[[i]]=PlotQuadrilateralShapeFunction[xyquad,fi,Nsub,1/2],
{i,NNodos}
];

RESULTADOS INTERACTIVOS

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