image thumbnail
shellpar1.m
%__________________________________________________________________________
%| 4NODE-20DOF CURVED PARAMETRIC SHELL FEM                  [A.] (C)(R)   |
%|########################################                                 |
%|                    Element family:Low proclivity curved shell           |
%|                    Shape function:Workable(geometric boundary condition)|
%|                    Stifness      :Topology + Accumulate method          |
%|                    Theoretic  app.Total potantial enegry second theorem |
%|                    Solve Equation:Cholesky-[L][D][u]                    |
%|                                                                         |
%|_______________________________Solve Equation:Cholesky-[L][D][u]_________|
%|                                                                         |
%| Maxima 5.9.0.9beta2 http://maxima.sourceforge.net                       |
%| Using Lisp Kyoto Common Lisp GCL 2.6.3 (aka GCL)                        |
%| Distributed under the GNU Public License. See the file COPYING.         |
%| Dedicated to the memory of William Schelter.                            |
%| This is a development version of Maxima. The function bug_report()      |
%| provides bug reporting information.                                     |
%|_________________________________________________________________________|



%            This finite element model`s describtion 4 Node and per node`s local 
%displacements  [ux,vy,wz,Qx,Qy]  respectively.  Element shape function  emanated      
%to two different region. First region;  plane  stress  finite  element motion ,
%(membran effect). Second region: Kirchoff  bending  plate  element  motion. Per 
%region depend to rigidy body motion workable  the  element`s geometric boundary
%conditions. This  model  if  components  20 >=fo/h >=6  and  (h/Rmin)<=1/20 than
%moment  and  force  supply  kinematic  equilibrium  equation  else   it`s   not
%conservation. Nevertheless this model if kx=ky=kxy=0  than  transformed bending
%plate moniton.(Example cantilever beam analysis). Element`s  local axis per node 
%total 5 d.o.f but global node 6. d.o.f..  Element global axis curvature kgx,kgy,
%kgxy tranform  local  axis  curvature  kx,ky,kxy. This area kgxy=kxy=0 neglected 
%because element is geometry symmetric.  If  kgxy  or  kxy different to zero than 
%element shape function applied torsional curvature coefficient.

%========================================================This model`s REFERENCES

% [1]  "Sonlu  Elemanlar  Metodu  Temelleri  ve  Yap  Mekaniinde  Uygulamalar"
%     (Fundamental Finite Element Method and Structural Application),Prof.Azer.A.
%     KASIMZADE, Birsen  yayn  evi(press) ,Samsun  19 Mays  University,  2004,
%     ISBN:975-511-379-7.
%
% [2]  Zienkiewich O.C and Taylor R.L,"The finite element Method Formulation and 
% Linear Problems",Mc-Graw-Hill LONDON,1989, 4th edition
%
% [3]  Zienkiewich O.C and Taylor R.L,"The finite element Method Formulation Solid 
% Mechanic",volume II,ISBN: 0-7506-5055-9,Barcelona,Spain,MPG books Ltd, 1999 Aug. 
%



%#############THEORICALY APPLICATION###########
%
%____________1.Describtion Element`s shape function
%
%Membrane effect u(x,y)=c1 + c2*x + c3*y + c4*xy
%                v(x,y)=c5 + c6*x + c7*y + c8*xy
%
%                                                        1
%   Pascal Triangle                            ________ x y _____Lineer
%                                                   x^2\x*y/ y^2
%                                               x^3 x^2*y x*y^2 y^3
%                                 neglect[x^4]  x^3*y [x^2y^2] x*y^3   [y^4]
%
%Bending effect (Smilarly kirchoff bending plate element motion)
%          w(x,y)=c9 + c10*x + c11*y + c12*x^2 + c13*xy + c14*y^2 + c15*x^3+
%                 c16*x^2*y  + c17*x*y^2 + c18*y^3 + c19*x^3*y + c20*x*y^3
%Ru(x,y)=c1+c2*x+c3*y
%Rv(x,y)=c5+c6*x+c7*y
%Rw(x,y)=c9+c10*x+c11*y
%
%____________2.Rigidy body motion depend element geometricaly boundary conditions
%
% Membran motion                                      Curvature
%
%       ex =du/dx - w*kx                              kx =df^2/dx^2
%       ex =dv/dy - w*ky                              ky =df^2/dy^2
%       exy=du/dy + dv/dx - w*kxy                     kxy=df^2/dxdy 
%
%       Rigdy body motion ex=0,ey=0,exy=0
%
%du/dx-Rw(x,y)*kx=0  , du/dx=[c9+c10*x+c11*y]*kx , uo=[c9*x+c10*x^2/2+c11*xy]*kx
%dv/dy-Rw(x,y)*ky=0  , dv/dy=[c9+c10*x+c11*y]*ky , vo=[c9*y+c10*xy+1/2*c11*y^2]*ky
%du/dy+dv/dx-Rw(x,y)*2kxy=0, du/dy+d/dx*vo-Rw(x,y)*2ky=0
%
%                      du/dy+d/dx*[c9*x+c10*x^2/2+c11*xy]*ky-[c9+c10*x+c11*y]*2ky=0
%                      uo=[c9*y+c10*xy+c11*y^2/2]*2kxy-[1/2*y^2*c10]*ky
%
%du/dy+dv/dx-Rw(x,y)*2kxy=0, dv/dx+d/dy*uo-Rw(x,y)*2ky=0
%
%                      vo=[c9*x+1/2*c10x^2+c11*xy]*2kxy-[1/2*c11*x^2]*kx
%
%uo'=[x*kx+y*2kxy]c9 + [0.5*x^2*kx+xy*2kxy-0.5*y^2*ky]c10 + [xy*kx+y^2*kxy]c11
%vo'=[y*ky+x*2kxy]c9 + [xy*ky+x^2*kxy]c10 + [0.5*y^2*ky+2*xy*kxy-0.5*x^2*kx]c11
%
%new deplacement functions
%u(x,y):=matrix([1 , x , y , x*y , 0 , 0 , 0 , 0 , x*kx+y*2*kxy , 0.5*x^2*kx+x*y*2*kxy-0.5*y^2*ky , x*y*kx+y^2*kxy , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0]);
%v(x,y):=matrix([0 , 0 , 0 , 0 , 1 , x , y , x*y , y*ky+x*2*kxy , x*y*ky+x^2*kxy , 0.5*y^2*ky+2*x*y*kxy-0.5*x^2*kx , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0]);
%w(x,y):=matrix([0 , 0 , 0 , 0 , 0 , 0 , 0 ,0, 1 , x , y , x^2 , x*y , y^2 , x^3 , x^2*y , x*y^2 , y^3 , x^3*y , x*y^3]);
%


%##################This procedure runing maxima#############
%____________________________________________[PROCEDURE(1)]

%u(x,y):=matrix([1 , x , y , x*y , 0 , 0 , 0 , 0 , x*kx+y*2*kxy , 0.5*x^2*kx+x*y*2*kxy-0.5*y^2*ky , x*y*kx+y^2*kxy , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0]);
%v(x,y):=matrix([0 , 0 , 0 , 0 , 1 , x , y , x*y , y*ky+x*2*kxy , x*y*ky+x^2*kxy , 0.5*y^2*ky+2*x*y*kxy-0.5*x^2*kx , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0]);
%w(x,y):=matrix([0 , 0 , 0 , 0 , 0 , 0 , 0 ,0, 1 , x , y , x^2 , x*y , y^2 , x^3 , x^2*y , x*y^2 , y^3 , x^3*y , x*y^3]);

%fortran(diff(u(x,y),x));
%fortran(diff(u(x,y),y));

%fortran(diff(v(x,y),x));
%fortran(diff(v(x,y),y));

%fortran(diff(w(x,y),x));
%fortran(diff(w(x,y),y));

%fortran(diff(w(x,y),x,2));
%fortran(diff(w(x,y),y,2));
%fortran(diff(w(x,y),x,1,y,1));

%ux(x,y):=MATRIX([0,1,0,y,0,0,0,0,kx,2*kxy*y+kx*x,kx*y,0,0,0,0,0,0,0,0,0]);
%uy(x,y):=MATRIX([0,0,1,x,0,0,0,0,2*kxy,2*kxy*x-1.0*ky*y,2*kxy*y+kx*x,0,0,0,0,0,0,0,0,0]);
%vx(x,y):=MATRIX([0,0,0,0,0,1,0,y,2*kxy,ky*y+2*kxy*x,2*kxy*y-1.0*kx*x,0,0,0,0,0,0,0,0,0]);
%vy(x,y):=MATRIX([0,0,0,0,0,0,1,x,ky,ky*x,ky*y+2*kxy*x,0,0,0,0,0,0,0,0,0]);
%wx(x,y):=MATRIX([0,0,0,0,0,0,0,0,0,1,0,2*x,y,0,3*x^2,2*x*y,y^2,0,3*x^2*y,y^3]);
%wy(x,y):=MATRIX([0,0,0,0,0,0,0,0,0,0,1,0,x,2*y,0,x^2,2*x*y,3*y^2,x^3,3*x*y^2]);
%wxx(x,y):=MATRIX([0,0,0,0,0,0,0,0,0,0,0,2,0,0,6*x,2*y,0,0,6*x*y,0]);
%wyy(x,y):=MATRIX([0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2*x,6*y,0,6*x*y]);
%wxy(x,y):=MATRIX([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,2*x,2*y,0,3*x^2,3*y^2]);


%Bound(x,y):=matrix(
%[u(-a/2,-b/2)],
%[v(-a/2,-b/2)],
%[w(-a/2,-b/2)],
%[wy(-a/2,-b/2)],
%[-wx(-a/2,-b/2)],
%[u(a/2,-b/2)],
%[v(a/2,-b/2)],
%[w(a/2,-b/2)],
%[wy(a/2,-b/2)],
%[-wx(a/2,-b/2)],
%[u(a/2,b/2)],
%[v(a/2,b/2)],
%[w(a/2,b/2)],
%[wy(a/2,b/2)],
%[-wx(a/2,b/2)],
%[u(-a/2,b/2)],
%[v(-a/2,b/2)],
%[w(-a/2,b/2)],
%[wy(-a/2,b/2)],
%[-wx(-a/2,b/2)]);

%fortmx(B,Bound(x,y));

%____________________________________________[PROCEDURE(2)]

%A(x,y):=MATRIX([1,-a/2.0,-b/2.0,a*b/4.0,0,0,0,0,-b*kxy-a*kx/2.0,-0.125*b**2*ky+a*b*kxy/2.0+0.125*a**2*kx,b**2*kxy/4.0+a*b*kx/4.0,0,0,0,0,0,0,0,0,0],
%[0,0,0,0,1,-a/2.0,-b/2.0,a*b/4.0,-b*ky/2.0-a*kxy,a*b*ky/4.0+a**2*kxy/4.0,0.125*b**2*ky+a*b*kxy/2.0-0.125*a**2*kx,0,0,0,0,0,0,0,0,0],
%[0,0,0,0,0,0,0,0,1,-a/2.0,-b/2.0,a**2/4.0,a*b/4.0,b**2/4.0,-a**3/8.0,-a**2*b/8.0,-a*b**2/8.0,-b**3/8.0,a**3*b/16.0,a*b**3/16.0],
%[0,0,0,0,0,0,0,0,0,0,1,0,-a/2.0,-b,0,a**2/4.0,a*b/2.0,3.0*b**2/4.0,-a**3/8.0,(-3.0)*a*b**2/8.0],
%[0,0,0,0,0,0,0,0,0,-1,0,a,b/2.0,0,(-3.0)*a**2/4.0,-a*b/2.0,-b**2/4.0,0,3.0*a**2*b/8.0,b**3/8.0],
%[1,a/2.0,-b/2.0,-a*b/4.0,0,0,0,0,a*kx/2.0-b*kxy,-0.125*b**2*ky-a*b*kxy/2.0+0.125*a**2*kx,b**2*kxy/4.0-a*b*kx/4.0,0,0,0,0,0,0,0,0,0],
%[0,0,0,0,1,a/2.0,-b/2.0,-a*b/4.0,a*kxy-b*ky/2.0,a**2*kxy/4.0-a*b*ky/4.0,0.125*b**2*ky-a*b*kxy/2.0-0.125*a**2*kx,0,0,0,0,0,0,0,0,0],
%[0,0,0,0,0,0,0,0,1,a/2.0,-b/2.0,a**2/4.0,-a*b/4.0,b**2/4.0,a**3/8.0,-a**2*b/8.0,a*b**2/8.0,-b**3/8.0,-a**3*b/16.0,-a*b**3/16.0],
%[0,0,0,0,0,0,0,0,0,0,1,0,a/2.0,-b,0,a**2/4.0,-a*b/2.0,3.0*b**2/4.0,a**3/8.0,3.0*a*b**2/8.0],
%[0,0,0,0,0,0,0,0,0,-1,0,-a,b/2.0,0,(-3.0)*a**2/4.0,a*b/2.0,-b**2/4.0,0,3.0*a**2*b/8.0,b**3/8.0],
%[1,a/2.0,b/2.0,a*b/4.0,0,0,0,0,b*kxy+a*kx/2.0,-0.125*b**2*ky+a*b*kxy/2.0+0.125*a**2*kx,b**2*kxy/4.0+a*b*kx/4.0,0,0,0,0,0,0,0,0,0],
%[0,0,0,0,1,a/2.0,b/2.0,a*b/4.0,b*ky/2.0+a*kxy,a*b*ky/4.0+a**2*kxy/4.0,0.125*b**2*ky+a*b*kxy/2.0-0.125*a**2*kx,0,0,0,0,0,0,0,0,0],
%[0,0,0,0,0,0,0,0,1,a/2.0,b/2.0,a**2/4.0,a*b/4.0,b**2/4.0,a**3/8.0,a**2*b/8.0,a*b**2/8.0,b**3/8.0,a**3*b/16.0,a*b**3/16.0],
%[0,0,0,0,0,0,0,0,0,0,1,0,a/2.0,b,0,a**2/4.0,a*b/2.0,3.0*b**2/4.0,a**3/8.0,3.0*a*b**2/8.0],
%[0,0,0,0,0,0,0,0,0,-1,0,-a,-b/2.0,0,(-3.0)*a**2/4.0,-a*b/2.0,-b**2/4.0,0,(-3.0)*a**2*b/8.0,-b**3/8.0],
%[1,-a/2.0,b/2.0,-a*b/4.0,0,0,0,0,b*kxy-a*kx/2.0,-0.125*b**2*ky-a*b*kxy/2.0+0.125*a**2*kx,b**2*kxy/4.0-a*b*kx/4.0,0,0,0,0,0,0,0,0,0],
%[0,0,0,0,1,-a/2.0,b/2.0,-a*b/4.0,b*ky/2.0-a*kxy,a**2*kxy/4.0-a*b*ky/4.0,0.125*b**2*ky-a*b*kxy/2.0-0.125*a**2*kx,0,0,0,0,0,0,0,0,0],
%[0,0,0,0,0,0,0,0,1,-a/2.0,b/2.0,a**2/4.0,-a*b/4.0,b**2/4.0,-a**3/8.0,a**2*b/8.0,-a*b**2/8.0,b**3/8.0,-a**3*b/16.0,-a*b**3/16.0],
%[0,0,0,0,0,0,0,0,0,0,1,0,-a/2.0,b,0,a**2/4.0,-a*b/2.0,3.0*b**2/4.0,-a**3/8.0,(-3.0)*a*b**2/8.0],
%[0,0,0,0,0,0,0,0,0,-1,0,a,-b/2.0,0,(-3.0)*a**2/4.0,a*b/2.0,-b**2/4.0,0,(-3.0)*a**2*b/8.0,-b**3/8.0]);

%%____________________________________________[PROCEDURE(3)]
%Der(x,y):=matrix(
%[ux(x,y)-w(x,y)*kx],
%[vy(x,y)-w(x,y)*ky],
%[uy(x,y)+vx(x,y)-w(x,y)*2*kxy],
%[-wxx(x,y)],
%[-wyy(x,y)],
%[-2*wxy(x,y)]);

%fortmx(Drv,Der(x,y));

%Drv(x,y):=MATRIX([0,1,0,y,0,0,0,0,0,2*kxy*y,0,-kx*x**2,-kx*x*y,-kx*y**2,-kx*x**3,-kx*x**2*y,-kx*x*y**2,-kx*y**3,-kx*x**3*y,-kx*x*y**3],
%[0,0,0,0,0,0,1,x,0,0,2*kxy*x,-ky*x**2,-ky*x*y,-ky*y**2,-ky*x**3,-ky*x**2*y,-ky*x*y**2,-ky*y**3,-ky*x**3*y,-ky*x*y**3],
%[0,0,1,x,0,1,0,y,2*kxy,2*kxy*x,2*kxy*y,-2*kxy*x**2,-2*kxy*x*y,-2*kxy*y**2,-2*kxy*x**3,-2*kxy*x**2*y,-2*kxy*x*y**2,-2*kxy*y**3,-2*kxy*x**3*y,-2*kxy*x*y**3],
%[0,0,0,0,0,0,0,0,0,0,0,-2,0,0,-6*x,-2*y,0,0,-6*x*y,0],
%[0,0,0,0,0,0,0,0,0,0,0,0,0,-2,0,0,-2*x,-6*y,0,-6*x*y],
%[0,0,0,0,0,0,0,0,0,0,0,0,-2,0,0,-4*x,-4*y,0,-6*x**2,-6*y**2]);

%C(x,y):=matrix([KSI1,0,0,0,0,0],
%                    [0,KSI1,0,0,0,0],
%                    [0,0,KSI1,0,0,0],
%                    [0,0,0,KSI2,0,0],
%                    [0,0,0,0,KSI2,0],
%                    [0,0,0,0,0,KSI2]).matrix([1  ,v    ,0     ,0  ,0  ,0   ],
%                                             [v  ,1    ,0     ,0  ,0  ,0   ],
%                                             [0  ,0  ,(1-v)/2 ,0  ,0  ,0   ],
%                                             [0  ,0    ,0     ,1  ,v  ,0   ],
%                                             [0  ,0    ,0     ,v  ,1  ,0   ],
%                                             [0  ,0    ,0     ,0  ,0,(1-v)/2]);

%Kd(x,y):=defint(defint(Transpose(Drv(x,y)).C(x,y).Drv(x,y),x,-a/2,a/2),y,-b/2,b/2);
%fortmx(Kd,Kd(x,y));


%__________________________________________________________________________
%| 4NODE-20DOF CURVED PARAMETRIC SHELL FEM                  [A.] (C)(R)   |
%|########################################                                 |
%|                    Element family:Low proclivity curved shell           |
%|                    Shape function:Workable(geometric boundary condition)|
%|                    Stifness      :Topology + Accumulate method          |
%|                    Theoretic  app.Total potantial enegry second theorem |
%|                    Solve Equation:Cholesky-[L][D][u]                    |
%|                                                                         |
%|_______________________________Solve Equation:Cholesky-[L][D][u]_________|
%|                                                                         |
%| Maxima 5.9.0.9beta2 http://maxima.sourceforge.net                       |
%| Using Lisp Kyoto Common Lisp GCL 2.6.3 (aka GCL)                        |
%| Distributed under the GNU Public License. See the file COPYING.         |
%| Dedicated to the memory of William Schelter.                            |
%| This is a development version of Maxima. The function bug_report()      |
%| provides bug reporting information.                                     |
%|_________________________________________________________________________|

clc
clear 
                                     %##################INPUT DATA###############
                                     
%####################### MATERIALS PROPERTIES
E=2E6;        %shell material elasticity constant;
v=0.3;        %shell material poission ratio;
%#######################


%####################### AUTOMATIC MESH DATA
meshx   = 2;           %"x" axis direction mesh number
meshy   = 2;           %"y" axis direction mesh number
totala       = 2.00;   %"x" axis direction total length
totalb       = 2.00;   %"y" axis direction total width
th           = 0.10;   %thickness shell element;
                 %Notice: Shell`s surface function f(x,y):=-1/10y^2-1/10x^2+5
                 %kx=d^2/dx^2*f(x,y)=-2/10
                 %ky=d^2/dy^2*f(x,y)=-2/10
                 %kxy=d^2/dxdy*f(x,y)=0
kgx   = -2/10;   %x axis direction`s curvature;
kgy   = -2/10;   %y axis direction`s curvature;
kgxy  = 0;       %xy axis direction`s curvature;
%########################


gridspacex = totala/meshx;  % along to "x" axis direction mesh space
gridspacey = totalb/meshy;  % along to "y" axis direction mesh space

%##################### MESH SURFACE FUNCTIONS
%fshell=inline('-1/10*(x)^2-1/10*(y)^2+5');
%#####################


%Mesh error control
if meshx <1 || meshy <1;
    display('Open dimension system mesh and this mesh value > 1')
%    [meshx meshy]
    error('mesh values')
else if meshx >10 || meshy>10;
    display('system analysis mesh is big')
    end
end



%_____________________________________GLOBAL COORDINATES
dim=1;
for sut=0:meshy 
     for sat=0:meshx %Element middle node reference 
x=sat*gridspacex-meshx*gridspacex/2;
y=sut*gridspacey-meshy*gridspacey/2;
     Cor(dim,1)=x;   %"x" global coordinate value 
     Cor(dim,2)=y;   %"y" global coordinate value 
     Cor(dim,3)=-1/10*(x)^2-1/10*(y)^2+5;%"z" global coordinates value
    %Cor(dim,3)=fshell(x,y);%"z" global coordinates value
     dim=dim+1;    
     end
end%___________________________________________|
Number=size(Cor);clear x y;
Node=Number(1);                     %Elements Number


%____________________________________POSITION MATRIX        
no=1;       %Pos(Shell Element No,:)=[Shell Element Node Number]        
for i=1:meshy+1;
    for j=1:meshx;
        if  i < meshy+1 && j<meshx+1;
            Pos(no,1)=(meshx+1)*(i-1)+j;
            Pos(no,2)=(meshx+1)*(i-1)+j+1;
            Pos(no,3)=(meshx+1)*(i)+j+1;
            Pos(no,4)=(meshx+1)*(i)+j;
        end
        no=no+1;    
    end
end%________________________________________|
Number=size(Pos);
No=Number(1);   %Plane Elements Number



%Shell`s Node Topology
for i=1:Node;
    Re(i,:)=[1 1 1 1 1 1];
end
%Re(Node number,:)=[ux vy wz theta  beta]
%############################SYSTEM SUPPORTS
 Re(1,:)=[0 0 0 0 0 0];
 Re(3,:)=[0 0 0 0 0 0];
 Re(7,:)=[0 0 0 0 0 0];
 Re(9,:)=[0 0 0 0 0 0];
 %#############################
Topology=Re;

%_________________________________ACCUMULATE
Number=size(Re);
Nom=Number(2);                   %Element node d.o.f Number
clear Number
sayman=0;
for i=1:Node;
    for j=1:Nom;
        if Re(i,j)==1 ;
            sayman = sayman +1;
            Re(i,j) = sayman;
        end
    end
end%_________________________________|
Item=sayman;



%_________________________________MODAL DISPLACEMENTS

for i=1:No
R(i,:)=[Re(Pos(i,1),:) Re(Pos(i,2),:) Re(Pos(i,3),:) Re(Pos(i,4),:)];
end
%for i=1:No;
%    for j=1:Nom;
%        R(i,j+Nom*0) = Re(Pos(i,1),j);
%        R(i,j+Nom*1) = Re(Pos(i,2),j);
%        R(i,j+Nom*2) = Re(Pos(i,3),j);
%        R(i,j+Nom*3) = Re(Pos(i,4),j);
%    end
%end%_________________________________________|

%######################SYSTEM LOADS
%P(Re(Node number, Freedoom number))=[u v w theta beta]
 P(Item)=0;
 P(Re(2,3))=-5;
 P(Re(4,3))=-5;
 P(Re(6,3))=-5;
 P(Re(8,3))=-5;
%#######################
%__________________________________________________SHELL_SYSTEM_ANALYSE 


%_____________________________LOCAL COORDINATES
%Element global node cartesian coordiantes moving local nodes
for Element=1:No;
    px(Element,:)=[Cor(Pos(Element,1),1)...
                   Cor(Pos(Element,2),1)...
                   Cor(Pos(Element,3),1)...
                   Cor(Pos(Element,4),1)];
               
    py(Element,:)=[Cor(Pos(Element,1),2)...
                   Cor(Pos(Element,2),2)...
                   Cor(Pos(Element,3),2)...
                   Cor(Pos(Element,4),2)];
    
    pz(Element,:)=[Cor(Pos(Element,1),3)...
                   Cor(Pos(Element,2),3)...
                   Cor(Pos(Element,3),3)...
                   Cor(Pos(Element,4),3)];
end%____________________________|



%________________________________ELEMENT DIRECTION COSINESES
for Element=1:No;
pxo5=(px(Element,1)+px(Element,2))/2;
pyo5=(py(Element,1)+py(Element,2))/2;
pzo5=(pz(Element,1)+pz(Element,2))/2;

pxo6=(px(Element,2)+px(Element,3))/2;
pyo6=(py(Element,2)+py(Element,3))/2;
pzo6=(pz(Element,2)+pz(Element,3))/2;

pxo7=(px(Element,3)+px(Element,4))/2;
pyo7=(py(Element,3)+py(Element,4))/2;
pzo7=(pz(Element,3)+pz(Element,4))/2;

pxo8=(px(Element,1)+px(Element,4))/2;
pyo8=(py(Element,1)+py(Element,4))/2;
pzo8=(pz(Element,1)+pz(Element,4))/2;
    
Lu1=sqrt((pxo6-pxo8)^2+(pyo6-pyo8)^2+(pzo6-pzo8)^2);
directvectorcos1(Element,:)=[(pxo6-pxo8)/Lu1 ...
                             (pyo6-pyo8)/Lu1 ...
                             (pzo6-pzo8)/Lu1];


Lu2=sqrt((pxo7-pxo5)^2+(pyo7-pyo5)^2+(pzo7-pzo5)^2);
directvectorcos2(Element,:)=[(pxo7-pxo5)/Lu2 ...
                             (pyo7-pyo5)/Lu2 ...
                             (pzo7-pzo5)/Lu2];
                            
%__________Shell middle surface thickness direction vector [V3](e3)
%__________Vectorel Multiply "x" direction and "y"  position vector{e3}=e1*e2
                          %__[l1(i)+m1(j)+n1(k)]*[l2(i)+m2(j)+n2(k)]=
                          %__[l1*l2(i*i)+l1*m2(i*j)+l1*n2(i*k)]+
                          %__[m1*l2(j*i)+m1*m2(j*j)+m1*n2(j*k)]+
                          %__[n1*l2(k*i)+n1*m2(k*j)+n1*n2(k*k)]
                          %__[l1*m2(k)+l1*n2(-j)+m1*l2(-k)+m1*n2(i)+n1*l2(j)+n1*m2(-i)
                          %__i[m1*n2-n1*m2]+j[n1*l2-l1*n2]+k[l1*m2-m1*l2]
                          
  l1=directvectorcos1(Element,1);  l2=directvectorcos2(Element,1);                          
  m1=directvectorcos1(Element,2);  m2=directvectorcos2(Element,2);                          
  n1=directvectorcos1(Element,3);  n2=directvectorcos2(Element,3);                                                    
  
                    Lu3=sqrt((m1*n2 - m2*n1)^2+ ...
                             (n1*l2 - n2*l1)^2+ ...
                             (l1*m2 - m1*l2)^2);

directvectorcos3(Element,:)=[(m1*n2-n1*m2)/Lu3 ...
                             (n1*l2-l1*n2)/Lu3 ...
                             (l1*m2-m1*l2)/Lu3];

end%________________________|
clear Lu1 Lu2 Lu3 pzo5 pzo6 pzo7 pzo8 pyo5 pyo6 pyo7 pyo8
clear pxo5 pxo6 pxo7 pxo8



%___________________________SPECIAL AXIS DIRECTION COSINESES
    %This [lx,ly,lz] direction cosines by shell special axis
for Element=1:No;
pxn=[px(Element,1) px(Element,2) px(Element,3) px(Element,4)];
pyn=[py(Element,1) py(Element,2) py(Element,3) py(Element,4)];
pzn=[pz(Element,1) pz(Element,2) pz(Element,3) pz(Element,4)];

for j=1:4

lx=directvectorcos1(Element,1);  ly=directvectorcos2(Element,1);
mx=directvectorcos1(Element,2);  my=directvectorcos2(Element,2);

        %Per unit shell`s elements node rotation [Jacobian Trans.]
        %Notice this rotation angles is values get radii
%Shell surface function
%                        f(x,y)g = -1/10*(x)^2-1/10*(y)^2+5
%                       [df/dx]g = -2/10*(x)^1*1
%                       [df/dy]g = -2/10*(y)^1*1
%Moving shell global nodes cartesian node`s slopes , element special axis direction
%
% shellspecialaxis(xg) = lx*xs + ly*ys + lz*zs    [l,m,n] special-->global axis dir. cos.
% shellspecialaxis(yg) = mx*xs + my*ys + mz*zs
% shellspecialaxis(zg) = nx*xs + ny*ys + nz*zs
%                     
% [df/dxs]   [dxg/dxs    dyg/dxs]  [df/dxg]
% [      ] = [                  ]* [      ]
% [df/dys]   [dxg/dys    dyg/dys]  [df/dyg]
%            __Jacobian transform__
%
% [df/dxs]   [   lx         mx  ]  [-2/10*(x)^1*1]
% [      ] = [                  ]* [             ]
% [df/dys]   [   ly         my  ]  [-2/10*(y)^1*1]


%################## SHELL PARTIAL DERIVATIVES
tanalfax=(lx*-2*pxn(j)+mx*-2*pyn(j))/10;
tanalfay=(ly*-2*pxn(j)+my*-2*pyn(j))/10;
%################## 


alfax=atan(tanalfax);
alfay=atan(tanalfay);


%  Ctr2(:,:,Element)=[cos(alfax)     0         0;
%                          0      cos(alfay)   0;
%                     sin(alfax)  sin(alfay)   1];


directcurvecosa(:,j,Element)=[cos(alfax)  
                                0        
                             sin(alfax)];

directcurvecosb(:,j,Element)=[     0                           
                              cos(alfay) 
                              sin(alfay)];
    
end
end%___________________________|
clear tanalfax tanalfay sayman pxn pyn pzn px py pz


%_______________________ELEMENT TRANSFORMATION MATRIX
zero  =[0 0 0 0 0 0;
        0 0 0 0 0 0;
        0 0 0 0 0 0;
        0 0 0 0 0 0;
        0 0 0 0 0 0;
        0 0 0 0 0 0];
    
zero1 =[0 0 0 0 0 ;
        0 0 0 0 0 ;
        0 0 0 0 0 ;
        0 0 0 0 0 ;
        0 0 0 0 0 ;
        0 0 0 0 0 ];

%Shell element transform special axis to system global axis
    for Element=1:No;

%Element axises for global system direction cosineses
        l1=directvectorcos1(Element,1);
        m1=directvectorcos1(Element,2);
        n1=directvectorcos1(Element,3);                          

        l2=directvectorcos2(Element,1);                          
        m2=directvectorcos2(Element,2);                          
        n2=directvectorcos2(Element,3);                          

        l3=directvectorcos3(Element,1);                          
        m3=directvectorcos3(Element,2);                          
        n3=directvectorcos3(Element,3);                          

%Element main local axis to global axis convert matrix
        Tc =[ l1   l2   l3    0    0    0  ;
              m1   m2   m3    0    0    0  ;
              n1   n2   n3    0    0    0  ;
              0    0     0    l1   l2   l3 ;
              0    0     0    m1   m2   m3 ;
              0    0     0    n1   n2   n3];
             
%Element per node has curved transform direction cosineses.          
la1=directcurvecosa(1,1,Element); lb1=directcurvecosb(1,1,Element);         
ma1=directcurvecosa(2,1,Element); mb1=directcurvecosb(2,1,Element);
na1=directcurvecosa(3,1,Element); nb1=directcurvecosb(3,1,Element);

la2=directcurvecosa(1,2,Element); lb2=directcurvecosb(1,2,Element);         
ma2=directcurvecosa(2,2,Element); mb2=directcurvecosb(2,2,Element);
na2=directcurvecosa(3,2,Element); nb2=directcurvecosb(3,2,Element);

la3=directcurvecosa(1,3,Element); lb3=directcurvecosb(1,3,Element);
ma3=directcurvecosa(2,3,Element); mb3=directcurvecosb(2,3,Element);
na3=directcurvecosa(3,3,Element); nb3=directcurvecosb(3,3,Element);

la4=directcurvecosa(1,4,Element); lb4=directcurvecosb(1,4,Element);
ma4=directcurvecosa(2,4,Element); mb4=directcurvecosb(2,4,Element);
na4=directcurvecosa(3,4,Element); nb4=directcurvecosb(3,4,Element);


          
%         [Tson]:Local to Global Tranformation Matrix   
%_________Per Unit Node transformation matrix
Tci=[ la1   lb1    0    0     0    ; %(1) Transformation depend node slopes
      ma1   mb1    0    0     0    ;
      na1   nb1    1    0     0    ;
       0     0     0   la1   lb1   ;
       0     0     0   ma1   mb1   ;
       0     0     0   na1   nb1  ];
        
Tcj=[ la2   lb2    0    0     0    ;%(2) Transformation depend node slopes
      ma2   mb2    0    0     0    ;
      na2   nb2    1    0     0    ;
       0     0     0   la2   lb2   ;
       0     0     0   ma2   mb2   ;
       0     0     0   na2   nb2  ];

Tck=[ la3   lb3   0     0     0    ;%(3) Transformation depend node slopes
      ma3   mb3   0     0     0    ;
      na3   nb3   1     0     0    ;
       0     0    0    la3   lb3   ;
       0     0    0    ma3   mb3   ;
       0     0    0    na3   nb3  ];

Tcl=[ la4   lb4   0    0      0    ;%(4) Transformation depend node slopes
      ma4   mb4   0    0      0    ;
      na4   nb4   1    0      0    ;
       0     0    0   la4    lb4   ;
       0     0    0   ma4    mb4   ;
       0     0    0   na4    nb4  ];
    
%Element local axis convert system global axis    
  Ts =[Tc   ,  zero   , zero  ,  zero  ;
      zero  ,   Tc    , zero  ,  zero   ;
      zero  ,  zero   ,  Tc   ,  zero   ;
      zero  ,  zero   , zero  ,   Tc   ];

%Curved node convertion matrix        
  Tson2 =[ Tci   , zero1 , zero1 , zero1 ;
          zero1  ,  Tcj  , zero1 , zero1 ;
          zero1  , zero1 ,  Tck  , zero1 ;
          zero1  , zero1 , zero1 ,  Tcl ];
                                      
Tson(:,:,Element)=Ts*Tson2;
    end%___________________________|
 clear Tci Tcj Tck Tcl Ts Tson2 Tc l1 l2 l3 m1 m2 m3
 clear la1 la2 la3 la4 lb1 lb2 lb3 lb4 zero zero1
 clear na1 na2 na3 na4 nb1 nb2 nb3 nb4 n1 n2 n3
 clear mb1 mb2 mb3 mb4 ma1 ma2 ma3 ma4
    
    
%_______________________________BOUNDARY CONDITIONS COEFFICIENT MATRIX
KSI1= E*th/(1-v^2);%Elasticity constants
KSI2= E*th^3/(12*(1-v^2));
%Open dimension as shell element local axis stiffness matrix
Kd(20,20)=0;

for s=1:No;
lx=directvectorcos1(Element,1);
mx=directvectorcos1(Element,2);
nx=directvectorcos1(Element,3);

ly=directvectorcos2(Element,1);
my=directvectorcos2(Element,2);
ny=directvectorcos2(Element,3);


%Element global axis curvatures transform to local axis 
kx =lx*kgx  +  mx*kgy   + nx*kgxy;
ky =ly*kgx  +  my*kgy   + ny*kgxy;
kxy=0;%lz*kgx  +  mz*kgy   + nz*kgxy;(neglected)[system symmetric]
%[kx  ky  kxy]

a=gridspacex;
b=gridspacey;
%________________________________________________________[PROCEDURE(3) OUTPUT]    
Kd(2,2,s)  = a*b*KSI1;
Kd(2,7,s)  = a*b*KSI1*v;
Kd(2,12,s) = -b*(a^3*KSI1*ky*v+a^3*KSI1*kx)/12.0;
Kd(2,14,s) = -a*(b^3*KSI1*ky*v+b^3*KSI1*kx)/12.0;
Kd(3,3,s)  = a*b*KSI1*(1-v)/2.0;
Kd(3,6,s)  = a*b*KSI1*(1-v)/2.0;
Kd(3,9,s)  = a*b*KSI1*kxy*(1-v);
Kd(3,12,s) = -a^3*b*KSI1*kxy*(1-v)/12.0;
Kd(3,14,s) = -a*b^3*KSI1*kxy*(1-v)/12.0;
Kd(4,4,s)  = (-a^3*b*KSI1*v-(-2*a*b^3-a^3*b)*KSI1)/24.0;
Kd(4,10,s) = (-a^3*b*KSI1*kxy*v-(-2*a*b^3-a^3*b)*KSI1*kxy)/12.0;
Kd(4,15,s) = (a^5*b*KSI1*kxy*v-a^5*b*KSI1*kxy)/80.0;
Kd(4,16,s) = -(a^3*b^3*KSI1*ky*v+a^3*b^3*KSI1*kx)/144.0;
Kd(4,17,s) = (a^3*b^3*KSI1*kxy*v-a^3*b^3*KSI1*kxy)/144.0;
Kd(4,18,s) = -(a*b^5*KSI1*ky*v+a*b^5*KSI1*kx)/80.0;
Kd(6,3,s)  = a*b*KSI1*(1-v)/2.0;
Kd(6,6,s)  = a*b*KSI1*(1-v)/2.0;
Kd(6,9,s)  = a*b*KSI1*kxy*(1-v);
Kd(6,12,s) = -a^3*b*KSI1*kxy*(1-v)/12.0;
Kd(6,14,s) = -a*b^3*KSI1*kxy*(1-v)/12.0;
Kd(7,2,s)  = a*b*KSI1*v;
Kd(7,7,s)  = a*b*KSI1;
Kd(7,12,s) = -b*(a^3*KSI1*kx*v+a^3*KSI1*ky)/12.0;
Kd(7,14,s) = -a*(b^3*KSI1*kx*v+b^3*KSI1*ky)/12.0;
Kd(8,8,s)  = -(a*b^3*KSI1*v+(-a*b^3-2*a^3*b)*KSI1)/24.0;
Kd(8,11,s) = -(a*b^3*KSI1*kxy*v+(-a*b^3-2*a^3*b)*KSI1*kxy)/12.0;
Kd(8,15,s) = -(a^5*b*KSI1*kx*v+a^5*b*KSI1*ky)/80.0;
Kd(8,16,s) = (a^3*b^3*KSI1*kxy*v-a^3*b^3*KSI1*kxy)/144.0;
Kd(8,17,s) = -(a^3*b^3*KSI1*kx*v+a^3*b^3*KSI1*ky)/144.0;
Kd(8,18,s) = (a*b^5*KSI1*kxy*v-a*b^5*KSI1*kxy)/80.0;
Kd(9,3,s)  = a*b*KSI1*kxy*(1-v);
Kd(9,6,s)  = a*b*KSI1*kxy*(1-v);
Kd(9,9,s)  = 2*a*b*KSI1*kxy^2*(1-v);
Kd(9,12,s) = -a^3*b*KSI1*kxy^2*(1-v)/6.0;
Kd(9,14,s) = -a*b^3*KSI1*kxy^2*(1-v)/6.0;
Kd(10,4,s) = (-a^3*b*KSI1*kxy*v-(-2*a*b^3-a^3*b)*KSI1*kxy)/12.0;
Kd(10,10,s)= (-a^3*b*KSI1*kxy^2*v-(-2*a*b^3-a^3*b)*KSI1*kxy^2)/6.0;
Kd(10,15,s)= (a^5*b*KSI1*kxy^2*v-a^5*b*KSI1*kxy^2)/40.0;
Kd(10,16,s)= -(a^3*b^3*KSI1*kxy*ky*v+a^3*b^3*KSI1*kx*kxy)/72.0;
Kd(10,17,s)= (a^3*b^3*KSI1*kxy^2*v-a^3*b^3*KSI1*kxy^2)/72.0;
Kd(10,18,s)= -(a*b^5*KSI1*kxy*ky*v+a*b^5*KSI1*kx*kxy)/40.0;
Kd(11,8,s) = -(a*b^3*KSI1*kxy*v+(-a*b^3-2*a^3*b)*KSI1*kxy)/12.0;
Kd(11,11,s)= -(a*b^3*KSI1*kxy^2*v+(-a*b^3-2*a^3*b)*KSI1*kxy^2)/6.0;
Kd(11,15,s)= -(a^5*b*KSI1*kx*kxy*v+a^5*b*KSI1*kxy*ky)/40.0;
Kd(11,16,s)= (a^3*b^3*KSI1*kxy^2*v-a^3*b^3*KSI1*kxy^2)/72.0;
Kd(11,17,s)= -(a^3*b^3*KSI1*kx*kxy*v+a^3*b^3*KSI1*kxy*ky)/72.0;
Kd(11,18,s)= (a*b^5*KSI1*kxy^2*v-a*b^5*KSI1*kxy^2)/40.0;
Kd(12,2,s) = -b*(a^3*KSI1*ky*v+a^3*KSI1*kx)/12.0;
Kd(12,3,s) = -a^3*b*KSI1*kxy*(1-v)/12.0;
Kd(12,6,s) = -a^3*b*KSI1*kxy*(1-v)/12.0;
Kd(12,7,s) = -b*(a^3*KSI1*kx*v+a^3*KSI1*ky)/12.0;
Kd(12,9,s) = -a^3*b*KSI1*kxy^2*(1-v)/6.0;
Kd(12,12,s)= b*((2*a^5*KSI1*kx*ky-2*a^5*KSI1*kxy^2)*v+a^5*KSI1*ky^2+2*a^5*KSI1*kxy^2+a^5*KSI1*kx^2+320*a*KSI2)/80.0;
Kd(12,14,s)= ((2*a^3*b^3*KSI1*kx*ky-2*a^3*b^3*KSI1*kxy^2+576*a*b*KSI2)*v+a^3*b^3*KSI1*ky^2+2*a^3*b^3*KSI1*kxy^2+a^3*b^3*KSI1*kx^2)/144.0;
Kd(13,13,s)= ((2*a^3*b^3*KSI1*kx*ky-2*a^3*b^3*KSI1*kxy^2-288*a*b*KSI2)*v+a^3*b^3*KSI1*ky^2+2*a^3*b^3*KSI1*kxy^2+a^3*b^3*KSI1*kx^2+288*a*b*KSI2)/144.0;
Kd(13,19,s)= ((2*a^5*b^3*KSI1*kx*ky-2*a^5*b^3*KSI1*kxy^2-480*a^3*b*KSI2)*v+a^5*b^3*KSI1*ky^2+2*a^5*b^3*KSI1*kxy^2+a^5*b^3*KSI1*kx^2+480*a^3*b*KSI2)/960.0;
Kd(13,20,s)= ((2*a^3*b^5*KSI1*kx*ky-2*a^3*b^5*KSI1*kxy^2-480*a*b^3*KSI2)*v+a^3*b^5*KSI1*ky^2+2*a^3*b^5*KSI1*kxy^2+a^3*b^5*KSI1*kx^2+480*a*b^3*KSI2)/960.0;
Kd(14,2,s) = -a*(b^3*KSI1*ky*v+b^3*KSI1*kx)/12.0;
Kd(14,3,s) = -a*b^3*KSI1*kxy*(1-v)/12.0;
Kd(14,6,s) = -a*b^3*KSI1*kxy*(1-v)/12.0;
Kd(14,7,s) = -a*(b^3*KSI1*kx*v+b^3*KSI1*ky)/12.0;
Kd(14,9,s) = -a*b^3*KSI1*kxy^2*(1-v)/6.0;
Kd(14,12,s)= ((2*a^3*b^3*KSI1*kx*ky-2*a^3*b^3*KSI1*kxy^2+576*a*b*KSI2)*v+a^3*b^3*KSI1*ky^2+2*a^3*b^3*KSI1*kxy^2+a^3*b^3*KSI1*kx^2)/144.0;
Kd(14,14,s)= a*((2*b^5*KSI1*kx*ky-2*b^5*KSI1*kxy^2)*v+b^5*KSI1*ky^2+2*b^5*KSI1*kxy^2+b^5*KSI1*kx^2+320*b*KSI2)/80.0;
Kd(15,4,s) = (a^5*b*KSI1*kxy*v-a^5*b*KSI1*kxy)/80.0;
Kd(15,8,s) = -(a^5*b*KSI1*kx*v+a^5*b*KSI1*ky)/80.0;
Kd(15,10,s)= (a^5*b*KSI1*kxy^2*v-a^5*b*KSI1*kxy^2)/40.0;
Kd(15,11,s)= -(a^5*b*KSI1*kx*kxy*v+a^5*b*KSI1*kxy*ky)/40.0;
Kd(15,15,s)= b*((2*a^7*KSI1*kx*ky-2*a^7*KSI1*kxy^2)*v+a^7*KSI1*ky^2+2*a^7*KSI1*kxy^2+a^7*KSI1*kx^2+1344*a^3*KSI2)/448.0;
Kd(15,17,s)= ((2*a^5*b^3*KSI1*kx*ky-2*a^5*b^3*KSI1*kxy^2+960*a^3*b*KSI2)*v+a^5*b^3*KSI1*ky^2+2*a^5*b^3*KSI1*kxy^2+a^5*b^3*KSI1*kx^2)/960.0;
Kd(16,4,s) = -(a^3*b^3*KSI1*ky*v+a^3*b^3*KSI1*kx)/144.0;
Kd(16,8,s) = (a^3*b^3*KSI1*kxy*v-a^3*b^3*KSI1*kxy)/144.0;
Kd(16,10,s)= -(a^3*b^3*KSI1*kxy*ky*v+a^3*b^3*KSI1*kx*kxy)/72.0;
Kd(16,11,s)= (a^3*b^3*KSI1*kxy^2*v-a^3*b^3*KSI1*kxy^2)/72.0;
Kd(16,16,s)= ((2*a^5*b^3*KSI1*kx*ky-2*a^5*b^3*KSI1*kxy^2-640*a^3*b*KSI2)*v+a^5*b^3*KSI1*ky^2+2*a^5*b^3*KSI1*kxy^2+a^5*b^3*KSI1*kx^2+(320*a*b^3+640*a^3*b)*KSI2)/960.0;
Kd(16,18,s)= ((2*a^3*b^5*KSI1*kx*ky-2*a^3*b^5*KSI1*kxy^2+960*a*b^3*KSI2)*v+a^3*b^5*KSI1*ky^2+2*a^3*b^5*KSI1*kxy^2+a^3*b^5*KSI1*kx^2)/960.0;
Kd(17,4,s) = (a^3*b^3*KSI1*kxy*v-a^3*b^3*KSI1*kxy)/144.0;
Kd(17,8,s) = -(a^3*b^3*KSI1*kx*v+a^3*b^3*KSI1*ky)/144.0;
Kd(17,10,s)= (a^3*b^3*KSI1*kxy^2*v-a^3*b^3*KSI1*kxy^2)/72.0;
Kd(17,11,s)= -(a^3*b^3*KSI1*kx*kxy*v+a^3*b^3*KSI1*kxy*ky)/72.0;
Kd(17,15,s)= ((2*a^5*b^3*KSI1*kx*ky-2*a^5*b^3*KSI1*kxy^2+960*a^3*b*KSI2)*v+a^5*b^3*KSI1*ky^2+2*a^5*b^3*KSI1*kxy^2+a^5*b^3*KSI1*kx^2)/960.0;
Kd(17,17,s)= ((2*a^3*b^5*KSI1*kx*ky-2*a^3*b^5*KSI1*kxy^2-640*a*b^3*KSI2)*v+a^3*b^5*KSI1*ky^2+2*a^3*b^5*KSI1*kxy^2+a^3*b^5*KSI1*kx^2+(640*a*b^3+320*a^3*b)*KSI2)/960.0;
Kd(18,4,s) = -(a*b^5*KSI1*ky*v+a*b^5*KSI1*kx)/80.0;
Kd(18,8,s) = (a*b^5*KSI1*kxy*v-a*b^5*KSI1*kxy)/80.0;
Kd(18,10,s)= -(a*b^5*KSI1*kxy*ky*v+a*b^5*KSI1*kx*kxy)/40.0;
Kd(18,11,s)= (a*b^5*KSI1*kxy^2*v-a*b^5*KSI1*kxy^2)/40.0;
Kd(18,16,s)= ((2*a^3*b^5*KSI1*kx*ky-2*a^3*b^5*KSI1*kxy^2+960*a*b^3*KSI2)*v+a^3*b^5*KSI1*ky^2+2*a^3*b^5*KSI1*kxy^2+a^3*b^5*KSI1*kx^2)/960.0;
Kd(18,18,s)= a*((2*b^7*KSI1*kx*ky-2*b^7*KSI1*kxy^2)*v+b^7*KSI1*ky^2+2*b^7*KSI1*kxy^2+b^7*KSI1*kx^2+1344*b^3*KSI2)/448.0;
Kd(19,13,s)= ((2*a^5*b^3*KSI1*kx*ky-2*a^5*b^3*KSI1*kxy^2-480*a^3*b*KSI2)*v+a^5*b^3*KSI1*ky^2+2*a^5*b^3*KSI1*kxy^2+a^5*b^3*KSI1*kx^2+480*a^3*b*KSI2)/960.0;
Kd(19,19,s)= ((10*a^7*b^3*KSI1*kx*ky-10*a^7*b^3*KSI1*kxy^2-6048*a^5*b*KSI2)*v+5*a^7*b^3*KSI1*ky^2+10*a^7*b^3*KSI1*kxy^2+5*a^7*b^3*KSI1*kx^2+(6720*a^3*b^3+6048*a^5*b)*KSI2)/26880.0;
Kd(19,20,s)= ((2*a^5*b^5*KSI1*kx*ky-2*a^5*b^5*KSI1*kxy^2+800*a^3*b^3*KSI2)*v+a^5*b^5*KSI1*ky^2+2*a^5*b^5*KSI1*kxy^2+a^5*b^5*KSI1*kx^2+800*a^3*b^3*KSI2)/6400.0;
Kd(20,13,s)= ((2*a^3*b^5*KSI1*kx*ky-2*a^3*b^5*KSI1*kxy^2-480*a*b^3*KSI2)*v+a^3*b^5*KSI1*ky^2+2*a^3*b^5*KSI1*kxy^2+a^3*b^5*KSI1*kx^2+480*a*b^3*KSI2)/960.0;
Kd(20,19,s)= ((2*a^5*b^5*KSI1*kx*ky-2*a^5*b^5*KSI1*kxy^2+800*a^3*b^3*KSI2)*v+a^5*b^5*KSI1*ky^2+2*a^5*b^5*KSI1*kxy^2+a^5*b^5*KSI1*kx^2+800*a^3*b^3*KSI2)/6400.0;
Kd(20,20,s)= ((10*a^3*b^7*KSI1*kx*ky-10*a^3*b^7*KSI1*kxy^2-6048*a*b^5*KSI2)*v+5*a^3*b^7*KSI1*ky^2+10*a^3*b^7*KSI1*kxy^2+5*a^3*b^7*KSI1*kx^2+(6048*a*b^5+6720*a^3*b^3)*KSI2)/26880.0;


%____________________________________________________[PROCEDURE(2)]__[OUTPUT]
%Element connection matrix
A(:,:,s)=[  1 -a/2.0 -b/2.0 a*b/4.0 0  0      0       0     -b*kxy-a*kx/2.0   -0.125*b^2*ky+a*b*kxy/2.0+0.125*a^2*kx    b^2*kxy/4.0+a*b*kx/4.0     0 0 0 0 0 0 0 0 0; 
            0   0      0     0      1 -a/2.0 -b/2.0 a*b/4.0 -b*ky/2.0-a*kxy          a*b*ky/4.0+a^2*kxy/4.0             0.125*b^2*ky+a*b*kxy/2.0-0.125*a^2*kx 0 0 0 0 0 0 0 0 0;
            0   0      0     0      0  0      0       0          1                      -a/2.0                         -b/2.0 a^2/4.0 a*b/4.0 b^2/4.0 -a^3/8.0 -a^2*b/8.0 -a*b^2/8.0 -b^3/8.0 a^3*b/16.0 a*b^3/16.0;
            0   0      0     0      0  0      0       0          0                        0                             1 0 -a/2.0 -b 0 a^2/4.0 a*b/2.0 3.0*b^2/4.0 -a^3/8.0 (-3.0)*a*b^2/8.0;
            0   0      0     0      0  0      0       0          0                       -1                             0 a b/2.0 0 (-3.0)*a^2/4.0 -a*b/2.0 -b^2/4.0 0 3.0*a^2*b/8.0 b^3/8.0;
            1 a/2.0 -b/2.0 -a*b/4.0 0  0      0       0      a*kx/2.0-b*kxy   -0.125*b^2*ky-a*b*kxy/2.0+0.125*a^2*kx    b^2*kxy/4.0-a*b*kx/4.0 0 0 0 0 0 0 0 0 0;
            0   0      0     0      1 a/2.0 -b/2.0  -a*b/4.0 a*kxy-b*ky/2.0      a^2*kxy/4.0-a*b*ky/4.0                 0.125*b^2*ky-a*b*kxy/2.0-0.125*a^2*kx 0 0 0 0 0 0 0 0 0;
            0   0      0     0      0  0      0       0          1                    a/2.0                             -b/2.0 a^2/4.0 -a*b/4.0 b^2/4.0 a^3/8.0 -a^2*b/8.0 a*b^2/8.0 -b^3/8.0 -a^3*b/16.0 -a*b^3/16.0;
            0   0      0     0      0  0      0       0          0                     0                                1 0 a/2.0 -b 0 a^2/4.0 -a*b/2.0 3.0*b^2/4.0 a^3/8.0 3.0*a*b^2/8.0;
            0   0      0     0      0  0      0       0          0                    -1                                0 -a b/2.0 0 (-3.0)*a^2/4.0 a*b/2.0 -b^2/4.0 0 3.0*a^2*b/8.0 b^3/8.0;
            1 a/2.0  b/2.0 a*b/4.0  0  0      0       0      b*kxy+a*kx/2.0   -0.125*b^2*ky+a*b*kxy/2.0+0.125*a^2*kx    b^2*kxy/4.0+a*b*kx/4.0 0 0 0 0 0 0 0 0 0;
            0   0      0     0      1 a/2.0 b/2.0    a*b/4.0 b*ky/2.0+a*kxy      a*b*ky/4.0+a^2*kxy/4.0                 0.125*b^2*ky+a*b*kxy/2.0-0.125*a^2*kx 0 0 0 0 0 0 0 0 0;
            0   0      0     0      0  0      0       0          1                    a/2.0                             b/2.0 a^2/4.0 a*b/4.0 b^2/4.0 a^3/8.0 a^2*b/8.0 a*b^2/8.0 b^3/8.0 a^3*b/16.0 a*b^3/16.0;
            0   0      0     0      0  0      0       0          0                     0                                1 0 a/2.0 b 0 a^2/4.0 a*b/2.0 3.0*b^2/4.0 a^3/8.0 3.0*a*b^2/8.0;
            0   0      0     0      0  0      0       0          0                    -1                                0 -a -b/2.0 0 (-3.0)*a^2/4.0 -a*b/2.0 -b^2/4.0 0 (-3.0)*a^2*b/8.0 -b^3/8.0;
            1 -a/2.0 b/2.0 -a*b/4.0 0  0      0       0       b*kxy-a*kx/2.0   -0.125*b^2*ky-a*b*kxy/2.0+0.125*a^2*kx b^2*kxy/4.0-a*b*kx/4.0 0 0 0 0 0 0 0 0 0;
            0   0      0     0      1 -a/2.0 b/2.0  -a*b/4.0  b*ky/2.0-a*kxy  a^2*kxy/4.0-a*b*ky/4.0 0.125*b^2*ky-a*b*kxy/2.0-0.125*a^2*kx 0 0 0 0 0 0 0 0 0;
            0   0      0     0      0  0      0       0          1           -a/2.0 b/2.0 a^2/4.0 -a*b/4.0 b^2/4.0 -a^3/8.0 a^2*b/8.0 -a*b^2/8.0 b^3/8.0 -a^3*b/16.0 -a*b^3/16.0;
            0   0      0     0      0  0      0       0          0            0 1 0 -a/2.0 b 0 a^2/4.0 -a*b/2.0 3.0*b^2/4.0 -a^3/8.0 (-3.0)*a*b^2/8.0;
            0   0      0     0      0  0      0       0          0            -1 0 a -b/2.0 0 (-3.0)*a^2/4.0 a*b/2.0 -b^2/4.0 0 (-3.0)*a^2*b/8.0 -b^3/8.0];

end%________________________________|
clear a b kx ky kxy kgx kgy kgxy lx ly mx my nx ny


%_______________________SYSTEM RIGID BODY MOTION CONTROL
for Element=1:No;
equation=size(A);
if equation(1)~=rank(A(:,:,Element))
    display('This system connection matrix is badly scaled')
    error('Control system shape function and geometricaly boundary conditions')
else
    B=A(:,:,Element)^-1;
      K(:,:,Element) =B'*Kd(:,:,Element)*B;
end%__________________________________________________|
clear equation Ku
end




%Shell stiffness matrix transform local axis to global axis
for Element=1:No;
  Kg(:,:,Element)=Tson(:,:,Element)*K(:,:,Element)*Tson(:,:,Element)';
end
clear Element


%___________________________________SUPERPOSITION
%System stiffness matrix superposition
Ksis(Item,Item)=0;
for n=1:No;
        for sat=1:24;
            for sut=1:24;
               if (R(n,sat)~=0)
                  if (R(n,sut)~=0);
                    Ksis(R(n,sut),R(n,sat))=Ksis(R(n,sut),R(n,sat)) + Kg(sat,sut,n);
                  end    
               end
            end
        end
end%_______________________|
clear sat sut n



%Ksis:System global stiffness matrix
%______________________________SYSTEM DISPLACEMENT
equation=size(Ksis);
if equation(1)~=rank(Ksis)
    display('This system stiffness matrix is badly scaled')
%    R
    error('Control system support boundary conditions')
else
    Ku = inv(Ksis);
    D = Ku *P';
end%__________________________________________________|
clear equation Ku


%_________________________________MODAL DISPLACEMENT
 for  s = 1 : No;
        for m = 1 :24;
             u = R(s, m);
             if u ~=0; Hu(s,m,:) = D(u) ;
             else      Hu(s,m,:)  = 0   ;
             end%
        end%   
end%__________________________________________________|
%Hu:per element node`s displacements    
clear s m u 
    


%Elements global and local node reactions
for v=1 :No;
  Pg(:,v) = Kg(:,:,v)*Hu(v,:)';
  Pl(:,v) = Tson(:,:,v)'*Pg(:,v);
end
clear Node Nom No v


%display('GLOBAL SYSTEM NODE DISPLACEMENTS (metre)');
%for s=1:size(D,1);
%fprintf('      freedom =% .f  % .7f  \n',s,D(s));
%end
%fprintf(' \n \n \n')



display('ELEMENT DISPLACEMENTS (metre)');
for s=1:size(Hu',1);
fprintf('         [% .7f]  [% .7f]  [% .7f]  [% .7f]  \n',Hu(:,s)');
if mod(s,6)==0; fprintf(' \n');end;
end
fprintf(' \n \n \n')

display('LOCAL AXIS ELEMENTS NODE REACTIONS (SI)Kn');
for s=1:size(Pl,1);
fprintf('         [% .7f]  [% .7f]  [% .7f]  [% .7f] \n',Pl(s,:));
if mod(s,5)==0; fprintf(' \n');end;
end
fprintf(' \n \n \n')


display('GLOBAL AXIS ELEMENTS NODE REACTIONS (SI)Kn');
for s=1:size(Pg,1);
fprintf('         [% .7f]  [% .7f]  [% .7f]  [% .7f]  \n',Pg(s,:));
%fprintf('         [% .7f]%.f    [% .7f]%.f   [% .7f]%.f   [% .7f]%.f  \n',Pg(s,1),R(1,s)',Pg(s,2),R(2,s)',Pg(s,3),R(3,s)',Pg(s,4),R(4,s)');
if mod(s,6)==0; fprintf(' \n');end;
end



clear s ans i j no alfax alfay dim
%=========================ANALYSIS RESULTS(Global reactions)

%    [1]       [2]         [3]         [4]
%[ 8.2120]	[ 6.4526]	[-0.0000]	[ 1.9166]   fx
%[ 8.2120]	[ 0.0000]	[ 6.4526]	[ 1.9166]   fy
%[ 4.9024]	[-2.5000]	[-2.5000]	[-0.0000]   fz
%[ 0.0533]	[-0.0000]	[-0.3543]	[ 0.0178]   Mxx
%[-0.0533]	[ 0.3543]	[-0.0000]	[-0.0178]   Myy
%[ 0.0000]1	[ 0.1084]2	[-0.1084]4	[-0.0000]5  Mzz

%[-6.4526]	[-8.2120]	[-1.9166]	[-0.0000]  
%[-0.0000]	[ 8.2120]	[ 1.9166]	[ 6.4526]
%[-2.5000]	[ 4.9024]	[ 0.0000]	[-2.5000]
%[ 0.0000]	[ 0.0533]	[ 0.0178]	[-0.3543]
%[-0.3543]	[ 0.0533]	[ 0.0178]	[-0.0000]
%[-0.1084]2	[ 0.0000]3	[-0.0000]5	[ 0.1084]6

%[-1.9166]	[-0.0000]	[-6.4526]	[-8.2120]
%[-1.9166]	[-6.4526]	[ 0.0000]	[-8.2120]
%[-0.0000]	[-2.5000]	[-2.5000]	[ 4.9024]
%[-0.0178]	[ 0.3543]	[-0.0000]	[-0.0533]
%[ 0.0178]	[ 0.0000]	[-0.3543]	[ 0.0533]
%[ 0.0000]5	[-0.1084]6	[ 0.1084]8	[-0.0000]9

%[ 0.0000]	[ 1.9166]	[ 8.2120]	[ 6.4526]
%[-6.4526]	[-1.9166]	[-8.2120]	[-0.0000]
%[-2.5000]	[-0.0000]	[ 4.9024]	[-2.5000]
%[ 0.3543]	[-0.0178]	[-0.0533]	[ 0.0000]
%[ 0.0000]	[-0.0178]	[-0.0533]	[ 0.3543]
%[ 0.1084]4	[ 0.0000]5	[-0.0000]7	[-0.1084]8

%____________Node (1)
%   [1]
%[ 8.2120]	
%[ 8.2120]	
%[ 4.9024]	  = SUPPORT
%[ 0.0533]	
%[-0.0533]	
%[ 0.0000]1

%____________Node (2)                 [K][D]+{f}=[P]

%   [1]           [2]     Out Force
%[-6.4526]    [ 6.4526]   [0.0000]
%[-0.0000]	  [ 0.0000]   [0.0000]
%[-2.5000]	+ [-2.5000] + [5.0000] = zero
%[ 0.0000]	  [-0.0000]   [0.0000]
%[-0.3543]	  [ 0.3543]   [0.0000]
%[-0.1084]2	  [ 0.1084]2  [0.0000]

%____________Node (3)

%   [3]
%[-8.2120]
%[ 8.2120]
%[ 4.9024] =SUPPORT 
%[ 0.0533] 
%[ 0.0533]
%[ 0.0000]3
%

%____________Node (4)
%   [3]                 out load
%[-0.0000]   [ 0.0000]
%[ 6.4526]   [-6.4526]
%[-2.5000] + [-2.5000] +5.0000 = zero
%[-0.3543]   [ 0.3543]
%[-0.0000]   [ 0.0000]
%[-0.1084]4  [ 0.1084]

Contact us at files@mathworks.com