EXERCISE 6 - CIRCULAR PLATE WITH MULTIPLE HOLES

1.- DATOS MALLA DE ELEMENTOS FINITOS

NODOS

VALORES COORDENADAS NODOS

nodecoor=
{{1,{-1.35925,-0.85227}},{2,{1.79965,-1.04346}},{3,{-0.65924,1.05955}},{4,{-1.50571,-0.49871}},
{5,{-1.85915,-0.35227}},{6,{-2.21288,-0.49880}},{7,{-2.35925,-0.85227}},{8,{-2.21288,-1.20575}},
{9,{-1.85915,-1.35227}},{10,{-1.50571,-1.20584}},{11,{1.65634,-0.46230}},{12,{1.25973,-0.01473}},
{13,{0.70048,0.19741}},{14,{0.10654,0.12537}},{15,{-0.38620,-0.21479}},{16,{-0.66404,-0.74436}},
{17,{-0.66404,-1.34256}},{18,{-0.38620,-1.87213}},{19,{0.10654,-2.21228}},{20,{0.70048,-2.28432}},
{21,{1.25973,-2.07219}},{22,{1.65634,-1.62462}},{23,{-0.79823,1.53275}},{24,{-1.17075,1.85548}},
{25,{-1.65854,1.92568}},{26,{-2.10735,1.72074}},{27,{-2.37381,1.30602}},{28,{-2.37381,0.81308}},
{29,{-2.10735,0.39836}},{30,{-1.65854,0.19343}},{31,{-1.17075,0.26363}},{32,{-0.79823,0.58636}},
{33,{2.65109,0.13232}},{34,{2.62740,0.50858}},{35,{2.55684,0.87839}},{36,{2.44042,1.23669}},
{37,{2.28001,1.57758}},{38,{2.07814,1.89567}},{39,{1.83788,2.18609}},{40,{1.56334,2.44388}},
{41,{1.25857,2.66530}},{42,{0.92843,2.84680}},{43,{0.57821,2.98546}},{44,{0.21348,3.07913}},
{45,{-0.16054,3.12640}},{46,{-0.53728,3.12640}},{47,{-0.91105,3.07918}},{48,{-1.27596,2.98549}},
{49,{-1.62612,2.84686}},{50,{-1.95642,2.66528}},{51,{-2.26118,2.44386}},{52,{-2.53581,2.18596}},
{53,{-2.77596,1.89567}},{54,{-2.97783,1.57758}},{55,{-3.13836,1.23638}},{56,{-3.25469,0.87827}},
{57,{-3.32526,0.50830}},{58,{-3.34891,0.13232}},{59,{-3.32526,-0.24367}},{60,{-3.25469,-0.61364}},
{61,{-3.13836,-0.97175}},{62,{-2.97783,-1.31295}},{63,{-2.77596,-1.63104}},{64,{-2.53581,-1.92133}},
{65,{-2.26118,-2.17922}},{66,{-1.95642,-2.40065}},{67,{-1.62612,-2.58222}},{68,{-1.27596,-2.72085}},
{69,{-0.91105,-2.81455}},{70,{-0.53728,-2.86176}},{71,{-0.16054,-2.86176}},{72,{0.21348,-2.81450}},
{73,{0.57821,-2.72083}},{74,{0.92843,-2.58216}},{75,{1.25857,-2.40067}},{76,{1.56334,-2.17925}},
{77,{1.83788,-1.92145}},{78,{2.07814,-1.63104}},{79,{2.28001,-1.31295}},{80,{2.44042,-0.97206}},
{81,{2.55684,-0.61375}},{82,{2.62740,-0.24395}},{83,{-2.08111,2.16378}},{84,{-1.91730,-2.05615}},
{85,{-1.88738,-1.72539}},{86,{-0.32616,0.34708}},{87,{-2.88234,0.64326}},{88,{-2.56946,0.36214}},
{89,{-2.38638,0.09053}},{90,{-2.11256,-0.06651}},{91,{-2.56112,-1.24946}},{92,{-2.17779,-1.89001}},
{93,{-2.28716,-1.56789}},{94,{-2.97534,0.23861}},{95,{-2.45103,-0.23032}},{96,{-2.69152,-0.01102}},
{97,{-3.03458,-0.20330}},{98,{-2.57050,-0.57231}},{99,{-2.73232,-0.32378}},{100,{-2.75351,-0.92678}},
{101,{-2.91399,-0.60193}},{102,{-1.62513,-1.91359}},{103,{-0.94916,-1.67251}},{104,{-0.34435,-2.53664}},
{105,{-1.59425,-2.22690}},{106,{-1.26905,-1.98716}},{107,{-1.17086,-2.42120}},{108,{-0.81763,-2.11673}},
{109,{-1.10044,-1.14419}},{110,{-0.70165,-2.49974}},{111,{-0.42866,-2.24750}},{112,{-2.43731,1.79165}},
{113,{-2.74979,1.47774}},{114,{-2.79547,1.05913}},{115,{-1.10402,-0.62002}},{116,{-1.45658,-1.57157}},
{117,{-0.77934,0.08361}},{118,{-1.17329,-0.15124}},{119,{-0.82138,-0.32936}},{120,{2.20794,-0.05916}},
{121,{2.45321,-0.04498}},{122,{2.39429,-0.29238}},{123,{2.12615,-0.50006}},{124,{0.63583,2.58692}},
{125,{0.32174,2.29803}},{126,{-0.02877,2.02782}},{127,{-0.39363,1.77903}},{128,{-1.61114,2.41332}},
{129,{-1.19311,2.20807}},{130,{-0.79142,1.99259}},{131,{0.24331,2.69927}},{132,{-0.41750,2.18915}},
{133,{-0.08581,2.42559}},{134,{-1.15155,2.67024}},{135,{-0.77530,2.39109}},{136,{-0.66814,2.76770}},
{137,{-0.43006,2.51880}},{138,{-0.20358,2.82047}},{139,{0.01857,1.60135}},{140,{0.41995,1.44126}},
{141,{0.79972,1.25840}},{142,{1.18778,1.04865}},{143,{1.60187,0.86328}},{144,{1.98306,0.70495}},
{145,{2.31237,0.59123}},{146,{2.06177,0.30145}},{147,{2.38563,0.23824}},{148,{0.45170,1.05916}},
{149,{0.20798,0.64745}},{150,{0.07437,1.15569}},{151,{-0.34430,1.33047}},{152,{-0.30760,0.85443}},
{153,{1.65454,0.39067}},{154,{1.19351,0.54637}},{155,{0.75686,0.79291}},{156,{1.82775,-0.05735}},
{157,{0.38419,1.87371}},{158,{0.78193,2.17477}},{159,{0.79203,1.69898}},{160,{1.20304,2.31191}},
{161,{1.17559,1.93653}},{162,{1.19129,1.50911}},{163,{0.96156,2.51714}},{164,{2.26028,0.91570}},
{165,{1.58493,1.32155}},{166,{2.00892,1.16718}},{167,{1.47757,2.13378}},{168,{1.60819,1.79046}},
{169,{1.91204,1.55049}}};

NUMERO DE NODOS

xy=nodecoor;

numnod=Length[xy];

DEFINICION ESTRUCTURA DATOS DE NODOS - ###

X=Table[xy[[i,2]],{i,1,numnod}];

ELEMENTOS

CONECTIVIDAD DE NODOS EN ELEMENTOS

elemnodes={{1,{1,115,4}},{2,{10,109,1}},{3,{115,1,109}},{4,{2,123,11}},
{5,{2,22,78}},{6,{78,79,2}},{7,{79,80,2}},{8,{2,80,123}},
{9,{3,151,23}},{10,{3,32,152}},{11,{151,3,152}},{12,{4,30,5}},
{13,{4,118,30}},{14,{115,118,4}},{15,{5,90,6}},{16,{5,30,90}},
{17,{6,98,7}},{18,{90,95,6}},{19,{95,98,6}},{20,{7,91,8}},
{21,{91,7,100}},{22,{98,100,7}},{23,{8,93,9}},{24,{8,91,93}},
{25,{9,116,10}},{26,{9,93,85}},{27,{9,85,116}},{28,{109,10,116}},
{29,{11,156,12}},{30,{156,123,120}},{31,{123,156,11}},{32,{12,154,13}},
{33,{153,154,12}},{34,{153,12,156}},{35,{13,149,14}},{36,{149,155,148}},
{37,{149,13,155}},{38,{154,155,13}},{39,{14,86,15}},{40,{14,149,86}},
{41,{15,119,16}},{42,{86,117,15}},{43,{15,117,119}},{44,{17,16,109}},
{45,{16,119,115}},{46,{18,17,103}},{47,{109,116,103}},{48,{115,109,16}},
{49,{18,111,19}},{50,{18,108,111}},{51,{103,108,18}},{52,{19,73,20}},
{53,{72,73,19}},{54,{72,19,71}},{55,{19,111,104}},{56,{20,75,21}},
{57,{73,74,20}},{58,{74,75,20}},{59,{21,76,22}},{60,{75,76,21}},
{61,{76,77,22}},{62,{77,78,22}},{63,{23,130,24}},{64,{127,130,23}},
{65,{127,23,151}},{66,{24,129,25}},{67,{129,24,130}},{68,{25,83,26}},
{69,{25,128,83}},{70,{128,25,129}},{71,{26,112,27}},{72,{26,83,112}},
{73,{27,114,28}},{74,{112,113,27}},{75,{113,114,27}},{76,{28,88,29}},
{77,{87,88,28}},{78,{87,28,114}},{79,{29,90,30}},{80,{29,88,89}},
{81,{29,89,90}},{82,{30,118,31}},{83,{31,117,32}},{84,{117,31,118}},
{85,{86,32,117}},{86,{86,152,32}},{87,{33,34,147}},{88,{33,121,82}},
{89,{33,147,121}},{90,{34,35,145}},{91,{145,147,34}},{92,{35,36,164}},
{93,{35,164,145}},{94,{36,166,164}},{95,{37,38,169}},{96,{36,37,166}},
{97,{37,169,166}},{98,{38,39,168}},{99,{38,168,169}},{100,{39,40,167}},
{101,{39,167,168}},{102,{40,41,160}},{103,{40,160,167}},{104,{41,42,163}},
{105,{41,163,160}},{106,{42,43,124}},{107,{42,124,163}},{108,{43,44,131}},
{109,{124,43,131}},{110,{44,45,138}},{111,{44,138,131}},{112,{45,46,138}},
{113,{46,47,136}},{114,{136,138,46}},{115,{136,137,138}},{116,{47,48,134}},
{117,{47,134,136}},{118,{49,134,48}},{119,{49,128,134}},{120,{49,50,128}},
{121,{50,83,128}},{122,{51,52,83}},{123,{51,83,50}},{124,{52,53,112}},
{125,{52,112,83}},{126,{53,54,113}},{127,{112,53,113}},{128,{54,55,113}},
{129,{55,56,114}},{130,{113,55,114}},{131,{56,57,87}},{132,{87,114,56}},
{133,{57,58,94}},{134,{87,57,94}},{135,{58,59,97}},{136,{58,97,94}},
{137,{59,60,97}},{138,{60,61,101}},{139,{97,101,99}},{140,{97,60,101}},
{141,{61,62,100}},{142,{100,101,61}},{143,{62,63,91}},{144,{91,100,62}},
{145,{63,64,93}},{146,{63,93,91}},{147,{64,65,92}},{148,{64,92,93}},
{149,{65,66,84}},{150,{65,84,92}},{151,{66,67,105}},{152,{84,66,105}},
{153,{67,107,105}},{154,{68,69,107}},{155,{67,68,107}},{156,{69,70,110}},
{157,{69,110,107}},{158,{70,71,104}},{159,{70,104,110}},{160,{104,71,19}},
{161,{81,123,80}},{162,{81,122,123}},{163,{81,82,122}},{164,{82,121,122}},
{165,{84,85,92}},{166,{84,102,85}},{167,{84,105,102}},{168,{85,93,92}},
{169,{85,102,116}},{170,{86,149,152}},{171,{87,94,88}},{172,{88,96,89}},
{173,{96,88,94}},{174,{90,89,95}},{175,{95,89,96}},{176,{94,97,96}},
{177,{95,96,99}},{178,{95,99,98}},{179,{96,97,99}},{180,{98,99,101}},
{181,{98,101,100}},{182,{106,116,102}},{183,{106,103,116}},{184,{105,106,102}},
{185,{17,109,103}},{186,{104,111,110}},{187,{105,107,106}},{188,{106,107,108}},
{189,{106,108,103}},{190,{108,107,110}},{191,{108,110,111}},{192,{115,119,118}},
{193,{117,118,119}},{194,{120,122,121}},{195,{146,120,147}},{196,{120,123,122}},
{197,{146,156,120}},{198,{120,121,147}},{199,{124,131,125}},{200,{124,125,158}},
{201,{124,158,163}},{202,{133,126,125}},{203,{126,157,125}},{204,{133,125,131}},
{205,{125,157,158}},{206,{126,132,127}},{207,{139,126,127}},{208,{126,133,132}},
{209,{126,139,157}},{210,{127,132,130}},{211,{139,127,151}},{212,{128,129,134}},
{213,{135,129,130}},{214,{129,135,134}},{215,{135,130,132}},{216,{131,138,133}},
{217,{132,133,137}},{218,{132,137,135}},{219,{133,138,137}},{220,{135,136,134}},
{221,{135,137,136}},{222,{150,140,139}},{223,{157,139,140}},{224,{139,151,150}},
{225,{140,148,141}},{226,{159,140,141}},{227,{140,150,148}},{228,{159,157,140}},
{229,{141,155,142}},{230,{162,141,142}},{231,{141,148,155}},{232,{162,159,141}},
{233,{143,142,154}},{234,{143,165,142}},{235,{142,155,154}},{236,{142,165,162}},
{237,{143,153,144}},{238,{143,144,166}},{239,{143,154,153}},{240,{143,166,165}},
{241,{144,146,145}},{242,{144,145,164}},{243,{144,153,146}},{244,{144,164,166}},
{245,{145,146,147}},{246,{146,153,156}},{247,{148,150,149}},{248,{150,152,149}},
{249,{152,150,151}},{250,{157,159,158}},{251,{159,161,158}},{252,{160,158,161}},
{253,{158,160,163}},{254,{161,159,162}},{255,{160,161,167}},{256,{161,162,168}},
{257,{161,168,167}},{258,{162,165,168}},{259,{165,166,169}},{260,{165,169,168}}};

NUMERO DE ELEMENTOS

ijk=elemnodes;

numele=Length[ijk];

DEFINICION ESTRUCTURA DATOS DE ELEMENTOS - ###

X=Table[ijk[[i,2]],{i,1,numele}];

VISUALIZACION DE LA MALLA DE ELEMENTOS FINITOS - ###

Clear[aspect]

aspect=1;

X[NodeCoordinates,ElemNodes,aspect,
    "Circle Mesh",True,True];

2.- DATOS DEL PROBLEMA

MATERIAL

ClearAll[Em,ν,th,x0,y0,aspect,Nsub]; 
Em=1000; ν=0; th=1; aspect=1; Nsub=4;
Emat=Em/(1-ν^2)*{{1,ν,0},{ν,1,0},{0,0,(1-ν)/2}};

ASIGNACION DE MATERIAL Y ESPESOR A ELEMENTOS - ###

X=Table[Emat,{numele}]; 
X=Table[th,  {numele}];

PrintPlaneStressElementMatFab[ElemMaterials,ElemFabrications,"",{}];

SELECCION TIPO DE ELEMENTO - ###

X=Table["Trig3",{numele}];

ASIGNACION DE CONDICIONES DE CONTORNO - DESPLAZAMIENTOS PREESTABLECIDOS

INICIALIZACION

NodeDOFValues=NodeDOFTags=Table[{0,0},{numnod}];

DEFINICION CONDICIONES DE CONTORNO EN DESPLAZAMIENTOS - ###

X[[58]]={1,1};  NodeDOFTags[[33]]={0,1};

ASIGNACION DE CONDICIONES DE CONTORNO - CARGAS NODALES - ###

x0=-0.348906;  y0=0.132318;
For [n=33,n<=82,n++, {xn,yn}=NodeCoordinates[[n]];
     LL=(xn-x0)^2+(yn-y0)^2; 
     X[[n]]=Chop[3*{-(xn-x0)/LL,-(yn-y0)/LL},0.000001]];

LISTADO DE CONDICIONES DE CONTORNO - ###

X[NodeDOFTags,NodeDOFValues,"",{}];

3.- SOLUCION DEL PROBLEMA E IMPRESION DE RESULTADOS

SOLUCION DEL PROBLEMA - ###

{NodeDisplacements,NodeForces,NodePlateCounts,NodePlateStresses,
    ElemBarNumbers,ElemBarForces}= X[
    NodeCoordinates,ElemTypes,ElemNodes,
    ElemMaterials,ElemFabrications,
    NodeDOFTags,NodeDOFValues,ProcessOptions];

IMPRESION DE RESULTADOS - ###

X[NodeDisplacements,NodeForces,NodePlateCounts,
      NodePlateStresses,"Computed Solution:",{}];

4. - VISUALIZACION DE LOS DESPLAZAMIENTOS NODALES

CALCULO DE LOS VALORES MAXIMOS Y MINIMOS DE LOS DESPLAZAMIENTOS - ###

ueps=10.^(-3); nbands=10;
X=Table[NodeDisplacements[[n,1]],{n,numnod}]; 
uy=Table[X[[n,2]],{n,numnod}];
{uxmax,uymax}=Abs[{Max[ux],Max[uy]}]+ueps; 
{uxmin,uymin}=Abs[{Min[ux],Min[uy]}]+ueps;
uxmax=Max[uxmax,uxmin];  uxmin=-uxmax;
uymax=Max[uymax,uymin];  uymin=-uymax;
{uxinc,uyinc}={uxmax-uxmin,uymax-uymin}/nbands;

VISUALIZACION DESPLAZAMIENTOS NODALES - X e Y - ###

Print["uxmin,uxmax,uxinc=",{uxmin,uxmax,uxinc}];
X[NodeCoordinates,ElemNodes,ux,{uxmin,uxmax,uxinc},
  {True,True,True,False,True,True},{2,2},aspect,"Displacement component ux"];

Print["uymin,uymax,uyinc=",{uymin,uymax,uyinc}];
ContourBandPlotNodeFuncOver2DMesh[NodeCoordinates,ElemNodes,X,{uymin,uymax,uyinc},
  {True,True,True,False,True,True},{2,2},aspect,"Displacement component uy"];

5. - VISUALIZACION DE LAS TENSIONES - NODALES - NORMALES Y TANGENCIALES

CALCULO DE LAS TENSIONES PRINCIPALES Y DE VON MISES - ###

sVM=sig1=sig2=tmax=Table[0,{numnod}]; 
For[n=1,n<=numnod,n++,
   {sigxx,sigyy,sigxy}=X[[n]]; s0=(sigxx+sigyy)/2; 
   R=N[Sqrt[(sigxx-sigyy)^2+sigxy^2]];
   sig1[[n]]=s0+R; sig2[[n]]=s0-R; tmax[[n]]=R;
   sVM[[n]]=N[Sqrt[3*(sigxx^2+sigyy^2+sigxy^2)/2]]]; 
Print["Max sig1,sig2,VM  =",{sg1max,sg2max,sVMmax}];

CALCULO DE LOS VALORES MAXIMOS Y MINIMOS DE LAS TENSIONES NORMALES Y TANGENCIALES - ###

aspect=1;
sigeps=10.^(-3); nbands=10;
sxx=Table[X[[n,1]],{n,numnod}]; 
X=Table[NodePlateStresses[[n,2]],{n,numnod}];
sxy=Table[NodePlateStresses[[n,3]],{n,numnod}];
{sxxmax,syymax,sxymax}=Abs[{Max[sxx],Max[syy],Max[sxy]}]+sigeps; 
{sxxmin,syymin,sxymin}=Abs[{Min[sxx],Min[syy],Min[sxy]}]+sigeps;
sxxmax=Max[sxxmax,sxxmin];  sxxmin=-sxxmax;
syymax=Max[syymax,syymin];  syymin=-syymax;
sxymax=Max[sxymax,sxymin];  sxymin=-sxymax;
{sxxinc,syyinc,sxyinc}={sxxmax-sxxmin,syymax-syymin,sxymax-sxymin}/nbands;

VISUALIZACION TENSIONES NODALES - NORMALES Y TANGENCIALES - ###

Print["sxxmin,sxxmax,sxxinc=",{X,sxxmax,sxxinc}];
ContourBandPlotNodeFuncOver2DMesh[NodeCoordinates,ElemNodes,sxx,{sxxmin,sxxmax,sxxinc},
  {True,True,True,False,True,True},{0.2,-0.5},aspect,"Stress sigma-xx"];

Print["syymin,syymax,syyinc=",{syymin,X,syyinc}];
ContourBandPlotNodeFuncOver2DMesh[NodeCoordinates,ElemNodes,syy,{syymin,syymax,syyinc},
  {True,True,True,False,True,True},{0.2,-0.5},aspect,"Stress sigma-yy"];

Print["sxymin,sxymax,sxyinc=",{sxymin,sxymax,sxyinc}];
ContourBandPlotNodeFuncOver2DMesh[NodeCoordinates,ElemNodes,X,{sxymin,sxymax,sxyinc},
  {True,True,True,False,True,True},{0.2,-0.5},aspect,"Stress sigma-xy"];

6. - VISUALIZACION DE LAS TENSIONES - NODALES - PRINCIPALES Y VON MISES

CALCULO DE LAS TENSIONES PRINCIPALES Y DE VON MISES - ###

sVM=sig1=sig2=Table[0,{numnod}]; 
For[n=1,n<=numnod,n++,
   {sigxx,sigyy,sigxy}=NodePlateStresses[[n]]; s0=(sigxx+sigyy)/2; 
   R=N[Sqrt[(sigxx-sigyy)^2+sigxy^2]];
   sig1[[n]]=s0+R; sig2[[n]]=s0-R; tmax[[n]]=R;
   sVM[[n]]=X];

CALCULO DE LOS VALORES MAXIMOS Y MINIMOS DE LAS TENSIONES PRINCIPALES Y DE VON MISES

{sg1max,sg2max,sVMmax}=Abs[{Max[sig1],Max[sig2],Max[sVM]}]+sigeps; 
{sg1min,sg2min,sVMmin}=Abs[{Min[sig1],Min[sig2],Min[sVM]}]+sigeps;
sg1max=Max[sg1max,sg1min];  sg1min=-sg1max;
sg2max=Max[sg2max,sg2min];  sg2min=-sg2max;
sVMmax=Max[sVMmax,sVMmin];  sVMmin=-sVMmax;
{sg1inc,sg2inc,sVMinc}={sg1max-sg1min,sg2max-sg2min,sVMmax-sVMmin}/nbands;

VISUALIZACION TENSIONES NODALES - PRINCIPALES Y DE VON MISES - ###

Print["sg1min,sg1max,sg1inc=",{sg1min,sg1max,X}];
ContourBandPlotNodeFuncOver2DMesh[NodeCoordinates,ElemNodes,sig1,{sg1min,sg1max,sg1inc},
  {True,True,True,False,True,True},{0.2,-0.5},aspect,"Max principal stress sig1"];

Print["sg2min,sg2max,sg2inc=",{sg2min,sg2max,sg2inc}];
X[NodeCoordinates,ElemNodes,sig2,{sg2min,sg2max,sg2inc},
  {True,True,True,False,True,True},{0.2,-0.5},aspect,"Min principal stress sig2"];

Print["sVMmin,sVMmax,sVMinc=",{sVMmin,sVMmax,sVMinc}];
ContourBandPlotNodeFuncOver2DMesh[NodeCoordinates,ElemNodes,X,{sVMmin,sVMmax,sVMinc},
  {True,True,True,False,True,True},{0.2,-0.5},aspect,"Von Mises stress"];