Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/ppizarror/TEFAME
Browse files Browse the repository at this point in the history
  • Loading branch information
ppizarror committed Apr 10, 2019
2 parents c63de7b + fdee575 commit 4c50177
Show file tree
Hide file tree
Showing 12 changed files with 20,390 additions and 78 deletions.
953 changes: 953 additions & 0 deletions Diagramamodo1.eps

Large diffs are not rendered by default.

4,038 changes: 4,038 additions & 0 deletions Diagramas/DiagramaModelo.eps

Large diffs are not rendered by default.

953 changes: 953 additions & 0 deletions Diagramas/Diagramamodo1.eps

Large diffs are not rendered by default.

1,037 changes: 1,037 additions & 0 deletions Diagramas/Diagramamodo2.eps

Large diffs are not rendered by default.

1,059 changes: 1,059 additions & 0 deletions Diagramas/Diagramamodo3.eps

Large diffs are not rendered by default.

1,081 changes: 1,081 additions & 0 deletions Diagramas/Diagramamodo4.eps

Large diffs are not rendered by default.

1,109 changes: 1,109 additions & 0 deletions Diagramas/Diagramamodo5.eps

Large diffs are not rendered by default.

7,892 changes: 7,892 additions & 0 deletions Diagramas/Diagramamodo6.eps

Large diffs are not rendered by default.

1,106 changes: 1,106 additions & 0 deletions Diagramas/Diagramamodo7.eps

Large diffs are not rendered by default.

1,124 changes: 1,124 additions & 0 deletions Diagramas/Diagramamodo8.eps

Large diffs are not rendered by default.

104 changes: 28 additions & 76 deletions Programa_TEFAME/Analisis_Lib/ModalEspectral.m
Expand Up @@ -477,36 +477,9 @@ function analizar(analisisObj, nModos, betacR, betacP, maxcond)
end % analizar function

% ---------- MÉTODO DE NEWMARK PARA SISTEMAS LINEALES ------------
gamma = 1/2;
beta = 1/6;
KT = analisisObj.obtenerMatrizRigidez();
MT = analisisObj.obtenerMatrizMasa();
CT = analisisObj.cRayleigh();
function NW = Newmark(gamma,beta,p,dt,xo,vo)
n = length(p);
tmax = dt * (n-1);
t = linspace(0,tmax,n)';
ngl = length(KT);
x=zeros(ngl,length(p));
v=zeros(ngl,length(p));
z=zeros(ngl,length(p));
x(:,1) = xo;
v(:,1) = vo;
z(:,1) = (p(:,1) - CT * v(:,1) - KT * x(:,1)) * MT^(-1)
a1 = 1 /(beta * dt^2) * MT + gamma / (beta * dt) * CT;
a2 = 1 / (beta * dt) * MT + (gamma / beta-1) * CT;
a3 = (1 / (2 * beta) - 1) * MT + dt * (gamma / (2 * beta) - 1) *CT;
ks = KT + a1;
ps = z=zeros(ngl,length(p));
for i = 1:1:(n-1)
ps(:,i+1) = p(:,i+1) + a1 * x(:,i) + a2 * v(:,i) + a3 * z(:,i);
x(:,i+1) = ps(:,i+1) * ks^(-1);
v(:,i+1) = (gamma / (beta * dt)) * (x(:,i+1) - x(:,i)) + (1-gamma/beta) * v(:,i) + dt * (1 - gamma / (2 * beta)) * z(:,i);
z(:,i+1) = (1 / (beta * dt^2)) * (x(:,i+1) - x(:,i)) - (1 / (beta * dt)) * v(:,i) - (1 / (2 * beta) - 1) * z(:,i);
end
NW = [x , v , z];
end

%
% end
% ACA AUN NO ESTAN DEFINIDAS LAS COAS
% ----------------------------------------------------------------

function ensamblarMatrizRigidez(analisisObj)
Expand Down Expand Up @@ -727,68 +700,47 @@ function ensamblarVectorFuerzas(analisisObj)

end % obtenerDesplazamientos function

<<<<<<< HEAD
function eff = NewmarkLineal(analisisObj,Reg,dt,beta)

function NW = Newmark(analisisObj,p,dt,xo,vo)
% NewmarkLineal: es un metodo de la clase ModalEspectral
% que se usa para obtener los valores de aceleracion
% velociadad y desplazamiento de los grados de libertad
% a partir del metodo de Newmark

% Parametros obtenidos del modelo
gamma = 1/2;
beta = 1/6;
KT = analisisObj.obtenerMatrizRigidez();
MT = analisisObj.obtenerMatrizMasa();
CT = analisisObj.cRayleigh();

%Registro de aceleracion
p = Reg;

n = length(p);
tmax = dt*n;
tmax = dt * (n-1);
t = linspace(0,tmax,n)';
gamma = 0.5;
ngl = length(KT);

% Constantes

C1 = 1/(beta*dt);
C2 = gamma/(beta*dt);
C3 = 1/(beta*dt*dt);
C4 = (1/(2*beta)) - 1;
C5 = 1 - (gamma/beta);
C6 = 1 - (gamma/(2*beta));

% Calculo de K sombrero

Ks = KT + C3*MT + C2*CT;

% Condiciones iniciales

x = zeros(ngl,1);
v = zeros(ngl,1);
a = zeros(ngl,1);

% Respuesta en el tiempo

for i = 1:n - 1
Fint = -MT*p(i + 1) + MT*(C1*v + C4*a) - CT*(C5*v + C6*dt*a) - KT*x;
dq = Ks\Fint;
aa = C3*dq - C1*v - C4*a;
vv = C2*dq + C5*v + C6*dt*a;
dd = dq + x;
tt(i) = dt*i;
x = dd;
v = vv;
a = aa;
x=zeros(ngl,length(p));
v=zeros(ngl,length(p));
z=zeros(ngl,length(p));
x(:,1) = xo;
v(:,1) = vo;
z(:,1) = MT^(-1) * (p(:,1) - CT * v(:,1) - KT * x(:,1));
a1 = 1 /(beta * dt^2) * MT + gamma / (beta * dt) * CT;
a2 = 1 / (beta * dt) * MT + (gamma / beta-1) * CT;
a3 = (1 / (2 * beta) - 1) * MT + dt * (gamma / (2 * beta) - 1) *CT;
ks = KT + a1;
ps = zeros(ngl,length(p));
for i = 1:1:(n-1)
ps(:,i+1) = p(:,i+1) + a1 * x(:,i) + a2 * v(:,i) + a3 * z(:,i);
x(:,i+1) = ks^(-1) * ps(:,i+1);
v(:,i+1) = (gamma / (beta * dt)) * (x(:,i+1) - x(:,i)) + (1-gamma/beta) * v(:,i) + dt * (1 - gamma / (2 * beta)) * z(:,i);
z(:,i+1) = (1 / (beta * dt^2)) * (x(:,i+1) - x(:,i)) - (1 / (beta * dt)) * v(:,i) - (1 / (2 * beta) - 1) * z(:,i);
end

eff = [x, v, a];
NW = [x , v , z];

end % NewmarkLineal function

=======
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


% Metodos para graficar la estructura
>>>>>>> 2d9177ed6429b5c8fda0eeb8a84cb2f31922692f


function plt = plot(analisisObj, varargin)
% plot: Grafica un modelo
Expand Down
12 changes: 10 additions & 2 deletions test/modal/Modelo_DinamicaAvanzada.m
Expand Up @@ -70,5 +70,13 @@
%% Resuelve el sistema
analisisObj.analizar(50, [0.02, 0.05], [0.05, 0.02, 0]);
analisisObj.disp();
analisisObj.plot('modo', 8, 'factor', 10, 'numcuadros', 25, ...
'gif', 'test/modal/out/Modelo_DinamicaAvanzada_%d.gif', 'defelem', true);
pt = analisisObj.plot('modo', 1, 'factor', 10, 'numcuadros', 25, ...
'gif', 'test/modal/out/Modelo_DinamicaAvanzada_%d.gif', 'defelem', true);

% for i = 1:8
% pt = analisisObj.plot('modo', i, 'factor', 10, 'numcuadros', 0, ...
% 'gif', 'test/modal/out/Modelo_DinamicaAvanzada_%d.gif', 'defelem', true);
% saveas(pt,strcat('Diagramas/Diagramamodo',num2str(i)),'epsc')
% close all
% end

0 comments on commit 4c50177

Please sign in to comment.