Programa de metodo elemntos finitos libro Young W Kwon
Publicado por wil (6 intervenciones) el 21/02/2020 13:22:47
Hola, digite el programa del libro Young W Kwon y nao compila , donde estara el error???
Aqui el programa principal:
Ahora las subrutinas:
SEGUNDA SUB-RUTINA
TERCERA SUBRUTINA
QUARTA SUB RUTINA
QUINTA SUBRUTINA
ME SALE ERROR EN LA QUINTA SUBRUTINA Y NOSE COMO ARREGRARLO PARA QUE COMPILE, COPIE EL CODIGO TAL Y COMO ESTA EN EL LIBRIO, ALGUNA AYUDA, GRACIAS .
Aqui el programa principal:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
% Exemplo 351.m% para resolver a EDO dad por:% au''+bu'+cu=1, 0<x<1
% u(0)= e u(1)=0% usando 5 elementos%% descripcao de variaveis% k= matriz elemento% f= vetor elemento% kk= matriz sistema% ff= vetor sistema% index= um vetor contendo um sistema associado dofs de cada elemento% bcdof= um vetor contendo dofs associado com condicoes de fronteira% bcval= um vetor contendo condicao de valores na fronteira associado com o dofs em bcdof%%--------------------------------------------------------------------------%% entrada de datos%-------------------------------------------------------------------------nel=5; % numero de elementosnnel=2; % numero de nodos por elementondof=1; % numero de dofs por nodonnode=6; %numero total de nodos del sistemasdof=nnode*ndof; %dofs do sistema total%%--------------------------------------------% datos de entrada de valores coordenados de cada nodo%-------------------------------------------gcoord(1)=0.0 ; gcoord(2)=0.2; gcoord(3)=0.4; gcoord(4)=0.6;gcoord(5)=0.8; gcoord(6)=1.0;%%-------------------------------------------% datos de entrada de conectividade nodal para cada elemento%-------------------------------------------nodes(1,1)=1; nodes(1,2)=2; nodes(2,1)=2; nodes(2,2)=3;nodes(3,1)=3; nodes(3,2)=4; nodes(4,1)=4; nodes(4,2)=5;nodes(5,1)=5; nodes(5,2)=6;%%------------------------------------------------------% coeficientes de entrada da EDO%-----------------------------------------------------acoef=1;bcoef=-3;ccoef= 2;%%-----------------------------------------%datos de entrada para a condicao de fronteira%-------------------------------------------bcdof(1)=1;bcval(1)=0;bcdof(2)=6;bcval(2)=0;%%------------------------------------------------% inicializacao de vetores e matrizes%-----------------------------------------------ff= zeros(sdof,1); % inicializacao do sistema do vetor forcakk=zeros(sdof,sdof); % inicializacao do sistema matricialindex=zeros(nnel*ndof,1); % inicializacao do vetor index%%------------------------------------------------% calculo de elemntos das matrizes e vetores e seu emsamble%---------------------------------------------------for iel=1:nel % loop para o numero total de elementos%nl=nodes(iel,1); nr=nodes(iel,2);xl=gcoord(nl); xr=gcoord(nr);eleng=xr-xl;index=feeldof1(iel,nnel,ndof);%k= feode2l(acoef,bcoef,ccoef,eleng);f= fef1l(xl,xr);[kk,ff]=feasmbl2(kk,ff,k,f,index);%end%%----------------------------------------%aplicando condicoes de fronteira%-----------------------------------------[kk,ff]=feaplyc2(kk,ff,bcdof,bcval);%kk, ff, k, f, index%--------------------------------------% resolve a equacao matricial%------------------------------------fsol=kk\ff;%%------------------------------------------------c1= 0.5/exp(1);c2=-0.5*(1+1/exp(1));for i=1:nnode x=gcoord(i); esol(i)=c1*exp(2*x)+c2*exp(x)+1/2;end%%------------------------------------------% imprime ambas solucoes exata e por mef%----------------------------------------num=1:1:sdof;results=[num' fsol esol']
%-----------------------------------------------Ahora las subrutinas:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function [kk,ff]=feaplyc2(kk,ff,bcdof,bcval)
%--------------------------------------------------------% aqui ha dof=2 e 10%bcdof(1)=2 e bcdof(2)=10;%bcval(1)=1.0 e bcval(2)=2.5%---------------------------------------------n=length(bcdof);
sdof=size(kk);
%for i=1:n
c=bcdof(i);
for j=1:sdof
kk(c,j)=0;
end
%kk(c,c)=1;
ff(c)=bcval(i);
end
end
SEGUNDA SUB-RUTINA
1
2
3
4
5
6
7
8
function [index]=feeldof1(iel,nnel,ndof)
edof=nnel*ndof;
start=(iel-1)*(nnel-1)*ndof;
%for i=1:edof
index(i)=start+i;
end
end
TERCERA SUBRUTINA
1
2
3
4
5
6
function [f]=fef1l(xl,xr)
%----------------------------------% elemnto vetor para f(x)=1% usando elemento lineareleng=xr-xl;
f=[eleng/2;eleng/2];
QUARTA SUB RUTINA
1
2
3
4
5
6
function [k]=feode2l(acoef,bcoef,ccoef,eleng)
%---------------------------------------a1=-(acoef/eleng); a2=bcoef/2; a3=ccoef*eleng/6;
k=[a1-a2+2*a3, -a1+a2+a3;...
-a1-a2+a3 , a1+a2+2*a3];
%----------------------------QUINTA SUBRUTINA
1
2
3
4
5
6
7
8
9
10
11
function [kk,ff]=feasmbl2(kk,ff,k,f,index)
%--------------------------edof=length(index);
for i=1:edof
ii=index(i);
ff(ii)=f(ii)+f(i);
for j=1:edof
jj=index(j);
kk(ii,jj)=kk(ii,jj)+k(i,j);
end
end
ME SALE ERROR EN LA QUINTA SUBRUTINA Y NOSE COMO ARREGRARLO PARA QUE COMPILE, COPIE EL CODIGO TAL Y COMO ESTA EN EL LIBRIO, ALGUNA AYUDA, GRACIAS .
Valora esta pregunta


0

