Skip to main content

problem in mode shapes obtained by Element Free Galerkin Method

Submitted by Soheilo on

Hello dear all

I'm Soheil Marandy and I work on meshfree methods. I have analysis the free vibration of a thin plate using element free Galerkin method but I have seen that using different field nodes in the element free galerkin method provide different mode shapes.

I would be appreciated If I could have your points on this isssue.

Warm regards,

Soheil 

i am trying to solve problem of finding natural frequency of 1 d bar .

i am using orthogonal transform technique for applying boundary condition ,but my results are not correct can anyone guide me in this problem .folowing is the code please let me know if there is any mistake in formulation

 

% ONE DIMENSIONAL EFG PROGRAM for finding natural frequencies of a bar

% problem

% SET UP NODAL COORDINATES ALONG BAR, DETERMINE NUMBER OF CELLS

x = [0.0:0.1:1.0];%11 nodes

nnodes = length(x);         

ncells = nnodes-1;

 

% SET PARAMETERS FOR WEIGHT FUNCTION, MATERIAL PROPERITES

dmax = 2.0; %ratio of dmi to ci

E=2.1e+11; area=0.001;

rho=7800;

L=1;

noncons=sqrt(rho*(L^2)/E);

 

% DETERMINE DMI FOR EACH NODE

dm = dmax*(x(2)-x(1))*ones(1,nnodes);

 

%SET UP GAUSS POINTS, WEIGHTS, AND JACOBIAN FOR EACH CELL

gg = zeros(1,ncells);

jac = (x(2)-x(1))/2;

weight = 2;

gg = -.05:.1:0.95; %11 nodes

gg(1) = 0.0;

 

% INITIALIZE MATRICES

k = zeros(nnodes);

f = zeros(nnodes,1);

GG = zeros(nnodes,1);

H=zeros(nnodes,2);

m = zeros(nnodes);

% LOOP OVER GAUSS POINTS

for j = 1:length(gg)

   xg = gg(j);

 

% DETERMINE DISTANCE BETWEEN NODES AND GAUSS POINT

dif = xg*ones(1,nnodes)-x;

 

% SET UP WEIGHTS W AND DW FOR EACH NODE

clear w dw

for i=1:nnodes

drdx = sign(dif(i))/dm(i);

r = abs(dif(i))/dm(i);

if r<=0.5

  w(i) = (2/3) - 4*r*r + 4*r^3;

  dw(i) = (-8*r + 12*r^2)*drdx;

elseif r<=1.0 & r >0.5

  w(i) = (4/3)-4*r+4*r*r -(4/3)*r^3;

  dw(i) = (-4 + 8*r-4*r^2)*drdx;

elseif r>1.0

w(i) = 0.0;

dw(i) = 0.0;

end

end

 

%SET UP SHAPE FUNCTIONS AND DERIVATIVES

won = ones(1,nnodes);

nul=zeros(1,nnodes-1);

p = [won;x];

B = p.*[w;w];

pp = zeros(2);

A = zeros(2);

dA = zeros(2);

for i=1:nnodes

   pp = p(1:2,i)*p(1:2,i)';

   A = A+w(1,i)*pp;

   dA = dA+dw(1,i)*pp;

end

Ainv = inv(A);

pg = [1 xg];

phi = pg*Ainv*B;

db = p.*[dw;dw];

da = -Ainv*(dA*Ainv);

dphi = [0 1]*Ainv*B+pg*(da*B+Ainv*db);

 

%ASSEMBLE DISCRETE EQUATIONS

if j == 1

 % H=[phi;dphi];

     GG = -phi';

  H=phi;

else if j>1

   k = k+(weight*E*area*jac)*(dphi'*dphi);

   m = m+(weight*rho*area*jac)*(phi'*phi);

  

end

end

end

k

m

[R,D,V]= svd(H)

R*D*V'

Vpart=V(:,2:nnodes)

kmat=Vpart'*k*Vpart

mmat=Vpart'*m*Vpart

[v,d]=eigs(kmat,mmat)

omiga=(sqrt(d))

sort(diag(omiga))

sort(diag(omiga))*noncons 

Fri, 09/14/2012 - 09:42 Permalink

i am trying to solve problem of finding natural frequency of 1 d bar .

i am using orthogonal transform technique for applying boundary condition ,but my results are not correct can anyone guide me in this problem .folowing is the code please let me know if there is any mistake in formulation

 

% ONE DIMENSIONAL EFG PROGRAM for finding natural frequencies of a bar

% problem

% SET UP NODAL COORDINATES ALONG BAR, DETERMINE NUMBER OF CELLS

x = [0.0:0.1:1.0];%11 nodes

nnodes = length(x);         

ncells = nnodes-1;

 

% SET PARAMETERS FOR WEIGHT FUNCTION, MATERIAL PROPERITES

dmax = 2.0; %ratio of dmi to ci

E=2.1e+11; area=0.001;

rho=7800;

L=1;

noncons=sqrt(rho*(L^2)/E);

 

% DETERMINE DMI FOR EACH NODE

dm = dmax*(x(2)-x(1))*ones(1,nnodes);

 

%SET UP GAUSS POINTS, WEIGHTS, AND JACOBIAN FOR EACH CELL

gg = zeros(1,ncells);

jac = (x(2)-x(1))/2;

weight = 2;

gg = -.05:.1:0.95; %11 nodes

gg(1) = 0.0;

 

% INITIALIZE MATRICES

k = zeros(nnodes);

f = zeros(nnodes,1);

GG = zeros(nnodes,1);

H=zeros(nnodes,2);

m = zeros(nnodes);

% LOOP OVER GAUSS POINTS

for j = 1:length(gg)

   xg = gg(j);

 

% DETERMINE DISTANCE BETWEEN NODES AND GAUSS POINT

dif = xg*ones(1,nnodes)-x;

 

% SET UP WEIGHTS W AND DW FOR EACH NODE

clear w dw

for i=1:nnodes

drdx = sign(dif(i))/dm(i);

r = abs(dif(i))/dm(i);

if r<=0.5

  w(i) = (2/3) - 4*r*r + 4*r^3;

  dw(i) = (-8*r + 12*r^2)*drdx;

elseif r<=1.0 & r >0.5

  w(i) = (4/3)-4*r+4*r*r -(4/3)*r^3;

  dw(i) = (-4 + 8*r-4*r^2)*drdx;

elseif r>1.0

w(i) = 0.0;

dw(i) = 0.0;

end

end

 

%SET UP SHAPE FUNCTIONS AND DERIVATIVES

won = ones(1,nnodes);

nul=zeros(1,nnodes-1);

p = [won;x];

B = p.*[w;w];

pp = zeros(2);

A = zeros(2);

dA = zeros(2);

for i=1:nnodes

   pp = p(1:2,i)*p(1:2,i)';

   A = A+w(1,i)*pp;

   dA = dA+dw(1,i)*pp;

end

Ainv = inv(A);

pg = [1 xg];

phi = pg*Ainv*B;

db = p.*[dw;dw];

da = -Ainv*(dA*Ainv);

dphi = [0 1]*Ainv*B+pg*(da*B+Ainv*db);

 

%ASSEMBLE DISCRETE EQUATIONS

if j == 1

 % H=[phi;dphi];

     GG = -phi';

  H=phi;

else if j>1

   k = k+(weight*E*area*jac)*(dphi'*dphi);

   m = m+(weight*rho*area*jac)*(phi'*phi);

  

end

end

end

k

m

[R,D,V]= svd(H)

R*D*V'

Vpart=V(:,2:nnodes)

kmat=Vpart'*k*Vpart

mmat=Vpart'*m*Vpart

[v,d]=eigs(kmat,mmat)

omiga=(sqrt(d))

sort(diag(omiga))

sort(diag(omiga))*noncons 

Fri, 09/14/2012 - 05:27 Permalink