diff --git a/Programa_TEFAME/Analisis_Lib/ModalEspectral.m b/Programa_TEFAME/Analisis_Lib/ModalEspectral.m index 5b1b535..2b94afd 100644 --- a/Programa_TEFAME/Analisis_Lib/ModalEspectral.m +++ b/Programa_TEFAME/Analisis_Lib/ModalEspectral.m @@ -87,7 +87,8 @@ Mtotal % Masa total del modelo analisisFinalizado % Indica que el analisis ha sido realizado numModos % Numero de modos del analisis - numDG % Numero de grados de libertad por modo despues del analisis + numDG % Numero de ejes de analisis despues de condensar + numDGReal % Numero de ejes de analisis antes de condensar cRayleigh % Matriz de amortiguamiento de Rayleigh cPenzien % Matriz de amortiguamiento de Wilson-Penzien mostrarDeformada % Muestra la posicion no deformada en los graficos @@ -207,7 +208,6 @@ function analizar(analisisObj, nModos, betacR, betacP, maxcond) % Obtiene los grados de libertad ngdl = length(analisisObj.Mt); % Numero de grados de libertad - ngdlExt = ngdl; ndg = analisisObj.modeloObj.obtenerNumerosGDL(); % Grados de libertad por nodo % ---------------- CONDENSACION ESTATICA DE GUYAN --------------- @@ -225,19 +225,22 @@ function analizar(analisisObj, nModos, betacR, betacP, maxcond) % Si condensa grados analisisObj.gdlCond = length(vz); + realizaCond = false; if analisisObj.gdlCond > 0 + realizaCond = true; + % Chequea cuantos grados quedan nndg = ndg; - % if ndg > 2 - % for i = 2:ndg - % % Si todos los grados se dividen por 3, entonces se borra - % % el tercer grado de libertad (giro por ejemplo) - % if allDivMod(vz, i) - % nndg = nndg - 1; - % end - % end - % end + if ndg > 2 + for i = 2:ndg + % Si todos los grados se dividen por 3, entonces se borra + % el tercer grado de libertad (giro por ejemplo) + if allDivMod(vz, i) + nndg = nndg - 1; + end + end + end ndg = nndg; lpasivos = length(vz); @@ -318,19 +321,25 @@ function analizar(analisisObj, nModos, betacR, betacP, maxcond) % Se recuperan los grados de libertad condensados y se % ordenan de acuerdo a la configuración original - modalPhin = T * modalPhin; - rot_inv = rot^(-1); - modalPhin = rot_inv' * modalPhin; + if realizaCond + modalPhinFull = T * modalPhin; + rot_inv = rot^(-1); + modalPhinFull = rot_inv' * modalPhinFull; + else + modalPhinFull = modalPhin; + end + + modalPhinFull(:, 1) % Calcula las frecuencias del sistema modalWn = sqrt(syseig); modalTn = (modalWn.^-1) .* 2 * pi; % Calcula los periodos % Calcula las matrices - modalMmt = modalPhin' * analisisObj.Mt * modalPhin; + modalMmt = modalPhin' * Meq * modalPhin; modalPhin = modalPhin * diag(diag(modalMmt).^-0.5); - modalMm = diag(diag(modalPhin'*analisisObj.Mt*modalPhin)); - modalKm = diag(diag(modalPhin'*analisisObj.Kt*modalPhin)); + modalMm = diag(diag(modalPhin'*Meq*modalPhin)); + modalKm = diag(diag(modalPhin'*Keq*modalPhin)); % Reordena los periodos Torder = zeros(nModos, 1); @@ -349,9 +358,10 @@ function analizar(analisisObj, nModos, betacR, betacP, maxcond) Torder(maxi) = Tpos; Tpos = Tpos + 1; end - ngdl = length(analisisObj.Mt); % Numero de grados de libertad + % ngdl = length(Meq); % Numero de grados de libertad % Asigna valores + analisisObj.phinExt = modalPhinFull; analisisObj.Tn = zeros(nModos, 1); analisisObj.wn = zeros(nModos, 1); analisisObj.phin = zeros(ngdl, nModos); @@ -381,9 +391,9 @@ function analizar(analisisObj, nModos, betacR, betacP, maxcond) % Recorre cada grado de libertad (horizontal, vertical, giro) for j = 1:ndg - Mtotr(j) = sum(analisisObj.Mt*analisisObj.rm(:, j)); + Mtotr(j) = sum(Meq*analisisObj.rm(:, j)); for k = 1:nModos - analisisObj.Lm(k, j) = analisisObj.phin(:, k)' * analisisObj.Mt * analisisObj.rm(:, j); + analisisObj.Lm(k, j) = analisisObj.phin(:, k)' * Meq * analisisObj.rm(:, j); analisisObj.Mmeff(k, j) = analisisObj.Lm(k, j).^2 ./ modalMm(k, k); end @@ -394,27 +404,6 @@ function analizar(analisisObj, nModos, betacR, betacP, maxcond) end end - % Crea la matriz extendida de los modos, dejando en cero los - % condensados - if ngdlExt ~= ngdl - analisisObj.phinExt = zeros(ngdlExt, nModos); - k = 1; % Mantiene el indice entre (1, ngdl) - for j = 1:ngdlExt - if isArrayMember(vz, j) - for i = 1:nModos - analisisObj.phinExt(j, i) = 0; - end - else - for i = 1:nModos - analisisObj.phinExt(j, i) = analisisObj.phin(k, i); - end - k = k + 1; - end - end - else - analisisObj.phinExt = analisisObj.phin; - end - % -------- CALCULO DE AMORTIGUAMIENTO DE RAYLEIGH ------------- % Se declaran dos amortiguamientos criticos asociados a dos modos @@ -432,7 +421,8 @@ function analizar(analisisObj, nModos, betacR, betacP, maxcond) elseif direcR(2) == 'h' && modocR(2) == countcR(1) n = i; end - elseif analisisObj.Mmeff(i, 2) > max(analisisObj.Mmeff(i, 1), analisisObj.Mmeff(i, max(1, ndg))) + elseif analisisObj.Mmeff(i, 2) > ... + max(analisisObj.Mmeff(i, 1), analisisObj.Mmeff(i, max(1, ndg))) countcR(2) = countcR(2) + 1; if direcR(1) == 'v' && modocR(1) == countcR(2) m = i; @@ -448,8 +438,12 @@ function analizar(analisisObj, nModos, betacR, betacP, maxcond) a = (2 * w(m) * w(n)) / (w(n)^2 - w(m)^2) .* [w(n), -w(m); ... -1 / w(n), 1 / w(m)] * betacR'; analisisObj.cRayleigh = a(1) .* analisisObj.Mt + a(2) .* analisisObj.Kt; - cRayleigh_rot = rot' * analisisObj.cRayleigh * rot; - cRayleigh_eq = T' * cRayleigh_rot * T; + if realizaCond + cRayleigh_rot = rot' * analisisObj.cRayleigh * rot; + cRayleigh_eq = T' * cRayleigh_rot * T; + else + cRayleigh_rot = analisisObj.cRayleigh; + end % ------ CALCULO DE AMORTIGUAMIENTO DE WILSON-PENZIEN ---------- @@ -462,21 +456,24 @@ function analizar(analisisObj, nModos, betacR, betacP, maxcond) for i = 1:length(Mn) if analisisObj.Mmeff(i, 1) > max(analisisObj.Mmeff(i, 2:ndg)) d(i, i) = 2 * betacP(1) * w(i) / Mn(i, i); - elseif analisisObj.Mmeff(i, 2) > max(analisisObj.Mmeff(i, 1), analisisObj.Mmeff(i, max(1, ndg))) + elseif analisisObj.Mmeff(i, 2) > ... + max(analisisObj.Mmeff(i, 1), analisisObj.Mmeff(i, max(1, ndg))) d(i, i) = 2 * betacP(2) * w(i) / Mn(i, i); else d(i, i) = 2 * betacP(3) * w(i) / Mn(i, i); end - analisisObj.cPenzien = analisisObj.cPenzien + analisisObj.Mt * (d(i, i) * modalPhin(:, i) * modalPhin(:, i)') * analisisObj.Mt; + analisisObj.cPenzien = analisisObj.cPenzien + ... + Meq * (d(i, i) * modalPhin(:, i) * modalPhin(:, i)') * Meq; end - cPenzien_rot = rot' * analisisObj.cPenzien * rot; - cPenzien_eq = T' * cPenzien_rot * T; + % cPenzien_rot = rot' * analisisObj.cPenzien * rot; + % cPenzien_eq = T' * cPenzien_rot * T; %-------------------------------------------------------------- % Termina el analisis analisisObj.analisisFinalizado = true; analisisObj.numDG = ndg; + analisisObj.numDGReal = analisisObj.modeloObj.obtenerNumerosGDL(); fprintf('\tSe completo el analisis en %.3f segundos\n\n', cputime-tInicio); end % analizar function @@ -715,12 +712,13 @@ function ensamblarVectorFuerzas(analisisObj) % defelem Dibuja la deformada de cada elemento % Establece variables iniciales + fprintf('Generando animacion analisis modal espectral:\n'); p = inputParser; p.KeepUnmatched = true; addOptional(p, 'modo', 0); addOptional(p, 'factor', 2); addOptional(p, 'numcuadros', 0); - addOptional(p, 'gif', 0); + addOptional(p, 'gif', ''); addOptional(p, 'defelem', true); parse(p, varargin{:}) r = p.Results; @@ -732,13 +730,13 @@ function ensamblarVectorFuerzas(analisisObj) % Chequea condiciones deformada = false; - modo = floor(modo); + modo = ceil(modo); if exist('modo', 'var') && modo > 0 deformada = true; end % Grafica la estructura si no se ha ejecutado el analisis - if ~analisisObj.analisisFinalizado + if ~analisisObj.analisisFinalizado || modo <= 0 plt = figure(); movegui('center'); hold on; @@ -758,7 +756,6 @@ function ensamblarVectorFuerzas(analisisObj) guardaGif = tempname; end - modo = ceil(modo); if modo > analisisObj.numModos || modo <= 0 error('El modo a graficar %d excede la cantidad de modos del sistema (%d)', ... modo, analisisObj.numModos); @@ -780,7 +777,6 @@ function ensamblarVectorFuerzas(analisisObj) % set(gca, 'nextplot', 'replacechildren'); % Imprime mensajes en consola - fprintf('Generando animacion analisis modal espectral:\n'); if ~defElem fprintf('\tSe ha desactivado la deformada de los elementos\n'); end @@ -791,9 +787,11 @@ function ensamblarVectorFuerzas(analisisObj) % Grafica el sistema if numCuadros == 0 fprintf('\tSe grafica el caso con la deformacion maxima\n'); - plotAnimado(analisisObj, deformada, modo, factor, 1, limx, limy, limz, tn, 1, 1, defElem); + plotAnimado(analisisObj, deformada, modo, factor, 1, ... + limx, limy, limz, tn, 1, 1, defElem); else - plotAnimado(analisisObj, deformada, modo, factor, 0, limx, limy, limz, tn, 1, 1, defElem); + plotAnimado(analisisObj, deformada, modo, factor, 0, ... + limx, limy, limz, tn, 1, 1, defElem); hold off; % Obtiene el numero de cuadros @@ -817,7 +815,8 @@ function ensamblarVectorFuerzas(analisisObj) t = t + dt; try % figure(fig_num); % Atrapa el foco - plotAnimado(analisisObj, deformada, modo, factor, sin(t), limx, limy, limz, tn, i, numCuadros, defElem); + plotAnimado(analisisObj, deformada, modo, factor, sin(t), ... + limx, limy, limz, tn, i, numCuadros, defElem); drawnow; Fr(i) = getframe(plt); im = frame2im(Fr(i)); @@ -907,7 +906,8 @@ function plotAnimado(analisisObj, deformada, modo, factor, phif, limx, limy, lim if deformada def = cell(numNodo, 1); for j = 1:numNodo - def{j} = factor * phif * analisisObj.obtenerDeformadaNodo(nodoElemento{j}, modo, analisisObj.numDG); + def{j} = factor * phif * analisisObj.obtenerDeformadaNodo(nodoElemento{j}, ... + modo, analisisObj.numDGReal); end elementoObjetos{i}.plot(def, 'k-', 1.25, defElem); if i == 1 @@ -983,6 +983,7 @@ function plotAnimado(analisisObj, deformada, modo, factor, phif, limx, limy, lim % % obtenerLimitesDeformada(analisisObj,modo,factor) + fprintf('\tCalculando los limites del grafico\n'); factor = 2.5 * factor; limx = [inf, -inf]; limy = [inf, -inf]; @@ -1005,8 +1006,12 @@ function plotAnimado(analisisObj, deformada, modo, factor, phif, limx, limy, lim numNodo = length(nodoElemento); for j = 1:numNodo coord = nodoElemento{j}.obtenerCoordenadas(); - def = analisisObj.obtenerDeformadaNodo(nodoElemento{j}, modo, gdl); - coordi = coord + def .* factor; + if analisisObj.analisisFinalizado && modo > 0 + def = analisisObj.obtenerDeformadaNodo(nodoElemento{j}, modo, gdl); + coordi = coord + def .* factor; + else + coordi = coord; + end limx(1) = min(limx(1), coordi(1)); limy(1) = min(limy(1), coordi(2)); limx(2) = max(limx(2), coordi(1)); @@ -1015,7 +1020,11 @@ function plotAnimado(analisisObj, deformada, modo, factor, phif, limx, limy, lim limz(1) = min(limz(1), coordi(3)); limz(2) = max(limz(2), coordi(3)); end - coordf = coord - def .* factor; + if analisisObj.analisisFinalizado && modo > 0 + coordf = coord - def .* factor; + else + coordf = coord; + end limx(1) = min(limx(1), coordf(1)); limy(1) = min(limy(1), coordf(2)); limx(2) = max(limx(2), coordf(1)); @@ -1038,12 +1047,10 @@ function plotAnimado(analisisObj, deformada, modo, factor, phif, limx, limy, lim def = zeros(gdl, 1); gdl = min(gdl, length(ngdl)); for i = 1:gdl - if ngdl(i) ~= 0 - if modo ~= 0 - def(i) = analisisObj.phinExt(ngdl(i), modo); - else - def(i) = 0; - end + if ngdl(i) > 0 + def(i) = analisisObj.phinExt(ngdl(i), modo); + else + def(i) = 0; end end @@ -1103,7 +1110,8 @@ function disp(analisisObj) fprintf('Propiedades analisis modal espectral:\n'); % Muestra los grados de libertad - fprintf('\tNumero de grados de libertad: %d\n', analisisObj.numeroGDL-analisisObj.gdlCond); + fprintf('\tNumero de grados de libertad: %d\n', ... + analisisObj.numeroGDL-analisisObj.gdlCond); fprintf('\tNumero de grados condensados: %d\n', analisisObj.gdlCond); fprintf('\tNumero de direcciones por grado: %d\n', analisisObj.numDG); fprintf('\tNumero de modos en el analisis: %d\n', analisisObj.numModos); diff --git a/Programa_TEFAME/Modelo_Lib/Cargas_Lib/Carga.m b/Programa_TEFAME/Modelo_Lib/Cargas_Lib/Carga.m index ed79380..6dd94de 100644 --- a/Programa_TEFAME/Modelo_Lib/Cargas_Lib/Carga.m +++ b/Programa_TEFAME/Modelo_Lib/Cargas_Lib/Carga.m @@ -71,7 +71,7 @@ end % Carga constructor %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % Metodos para aplicar la Carga sobre la componente que corresponda durante el analisis + % Metodos para aplicar la carga sobre la componente que corresponda durante el analisis function aplicarCarga(cargaObj, varargin) %#ok % aplicarCarga: es un metodo de la clase Carga que se usa para aplicar diff --git a/Programa_TEFAME/Modelo_Lib/Cargas_Lib/CargaMembranaDistribuida.m b/Programa_TEFAME/Modelo_Lib/Cargas_Lib/CargaMembranaDistribuida.m index bc5f982..b41d941 100644 --- a/Programa_TEFAME/Modelo_Lib/Cargas_Lib/CargaMembranaDistribuida.m +++ b/Programa_TEFAME/Modelo_Lib/Cargas_Lib/CargaMembranaDistribuida.m @@ -71,7 +71,8 @@ methods - function cargaMembranaDistribuidaObj = CargaMembranaDistribuida(etiquetaCarga, elemObjeto, nodo1, nodo2, carga1, distancia1, carga2, distancia2) + function cargaMembranaDistribuidaObj = CargaMembranaDistribuida(etiquetaCarga, elemObjeto, ... + nodo1, nodo2, carga1, distancia1, carga2, distancia2) % Elemento: es el constructor de la clase CargaMembranaDistribuida % % cargaMembranaDistribuidaObj=CargaMembranaDistribuida(etiquetaCarga,elemObjeto,nodo1,nodo2,carga1,distancia1,carga2,distancia2) @@ -149,8 +150,8 @@ % Metodos para aplicar la Carga Membrana Distribuida durante el analisis function aplicarCarga(cargaMembranaDistribuidaObj, factorDeCarga) - % aplicarCarga: es un metodo de la clase cargaMembranaDistribuidaObj que se usa para aplicar - % la carga sobre los dos nodos correspondientes del elemento. + % aplicarCarga: es un metodo de la clase cargaMembranaDistribuidaObj + % que se usa para aplicar la carga sobre los dos nodos correspondientes del elemento. % % aplicarCarga(cargaMembranaDistribuidaObj, factorDeCarga) diff --git a/Programa_TEFAME/Modelo_Lib/Cargas_Lib/CargaVigaColumnaDistribuida.m b/Programa_TEFAME/Modelo_Lib/Cargas_Lib/CargaVigaColumnaDistribuida.m index 6498205..ebd17ae 100644 --- a/Programa_TEFAME/Modelo_Lib/Cargas_Lib/CargaVigaColumnaDistribuida.m +++ b/Programa_TEFAME/Modelo_Lib/Cargas_Lib/CargaVigaColumnaDistribuida.m @@ -116,8 +116,8 @@ % Metodos para aplicar la Carga Viga-Columna Distribuida durante el analisis function aplicarCarga(cargaVigaColumnaDistribuidaObj, factorDeCarga) - % aplicarCarga: es un metodo de la clase cargaVigaColumnaDistribuidaObj que se usa para aplicar - % la carga sobre los dos nodos del elemento. + % aplicarCarga: es un metodo de la clase cargaVigaColumnaDistribuidaObj + % que se usa para aplicar la carga sobre los dos nodos del elemento. % % aplicarCarga(cargaVigaDistribuidaObj,factorDeCarga) @@ -202,7 +202,8 @@ function disp(cargaVigaColumnaDistribuidaObj) a = cargaVigaColumnaDistribuidaObj.dist1; b = cargaVigaColumnaDistribuidaObj.dist2; - fprintf('\tCarga distribuida entre los Nodos: %s y %s del Elemento: %s\n', nodo1etiqueta, nodo2etiqueta, etiqueta); + fprintf('\tCarga distribuida entre los Nodos: %s y %s del Elemento: %s\n', ... + nodo1etiqueta, nodo2etiqueta, etiqueta); fprintf('\t\tComponente NORMAL:\t%.3f en %.3f hasta %.3f en %.3f\n', P1, a, P2, b); fprintf('\t\tComponente AXIAL:\t%.3f en %.3f hasta %.3f en %.3f\n', H1, a, H2, b); diff --git a/Programa_TEFAME/Modelo_Lib/Cargas_Lib/CargaVigaColumnaPuntual.m b/Programa_TEFAME/Modelo_Lib/Cargas_Lib/CargaVigaColumnaPuntual.m index c4dcd75..a5c7a9f 100644 --- a/Programa_TEFAME/Modelo_Lib/Cargas_Lib/CargaVigaColumnaPuntual.m +++ b/Programa_TEFAME/Modelo_Lib/Cargas_Lib/CargaVigaColumnaPuntual.m @@ -62,7 +62,8 @@ methods - function cargaVigaColumnaPuntualObj = CargaVigaColumnaPuntual(etiquetaCarga, elemObjeto, carga, distancia, theta) + function cargaVigaColumnaPuntualObj = CargaVigaColumnaPuntual(etiquetaCarga, ... + elemObjeto, carga, distancia, theta) % Elemento: es el constructor de la clase CargaVigaColumnaPuntual % % cargaVigaColumnaPuntualObj=CargaVigaColumnaPuntual(etiquetaCarga,elemObjeto,carga,distancia,theta) @@ -164,7 +165,8 @@ function disp(cargaVigaColumnaPuntualObj) P = cargaVigaColumnaPuntualObj.carga * cos(cargaVigaColumnaPuntualObj.theta); H = cargaVigaColumnaPuntualObj.carga * sin(cargaVigaColumnaPuntualObj.theta); - fprintf('\tCarga aplicada en Elemento: %s a %.3f del Nodo: %s\n', etiqueta, cargaVigaColumnaPuntualObj.dist, nodo1etiqueta); + fprintf('\tCarga aplicada en Elemento: %s a %.3f del Nodo: %s\n', ... + etiqueta, cargaVigaColumnaPuntualObj.dist, nodo1etiqueta); fprintf('\t\tComponente NORMAL:\t%.3f\n', P); fprintf('\t\tComponente AXIAL:\t%.3f\n', H); diff --git a/Programa_TEFAME/Modelo_Lib/Cargas_Lib/CargaVigaDistribuida.m b/Programa_TEFAME/Modelo_Lib/Cargas_Lib/CargaVigaDistribuida.m index cfdbc42..1bf6299 100644 --- a/Programa_TEFAME/Modelo_Lib/Cargas_Lib/CargaVigaDistribuida.m +++ b/Programa_TEFAME/Modelo_Lib/Cargas_Lib/CargaVigaDistribuida.m @@ -62,7 +62,8 @@ methods - function cargaVigaDistribuidaObj = CargaVigaDistribuida(etiquetaCarga, elemObjeto, carga1, distancia1, carga2, distancia2) + function cargaVigaDistribuidaObj = CargaVigaDistribuida(etiquetaCarga, ... + elemObjeto, carga1, distancia1, carga2, distancia2) % Elemento: es el constructor de la clase CargaVigaDistribuida % % cargaVigaDistribuidaObj=CargaVigaDistribuida(etiquetaCarga,elemObjeto,carga1,distancia1,carga2,distancia2) diff --git a/Programa_TEFAME/Modelo_Lib/Elementos_Lib/Elemento.m b/Programa_TEFAME/Modelo_Lib/Elementos_Lib/Elemento.m index cccae65..2bf03b2 100644 --- a/Programa_TEFAME/Modelo_Lib/Elementos_Lib/Elemento.m +++ b/Programa_TEFAME/Modelo_Lib/Elementos_Lib/Elemento.m @@ -278,11 +278,13 @@ function graficarLinea(elementoObj, coord1, coord2, tipoLinea, grosorLinea) %#ok % graficarLinea(elementoObj,coord1,coord2,tipoLinea,grosorLinea) if length(coord1) == 2 - plot([coord1(1), coord2(1)], [coord1(2), coord2(2)], tipoLinea, 'LineWidth', grosorLinea); + plot([coord1(1), coord2(1)], [coord1(2), coord2(2)], tipoLinea, ... + 'LineWidth', grosorLinea); else - plot3([coord1(1), coord2(1)], [coord1(2), coord2(2)], [coord1(3), coord2(3)], tipoLinea, 'LineWidth', grosorLinea); + plot3([coord1(1), coord2(1)], [coord1(2), coord2(2)], [coord1(3), coord2(3)], ... + tipoLinea, 'LineWidth', grosorLinea); end - + end % graficarLinea function %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Programa_TEFAME/Modelo_Lib/Restricciones_Lib/RestriccionNodo.m b/Programa_TEFAME/Modelo_Lib/Restricciones_Lib/RestriccionNodo.m index 0f02028..a467f9a 100644 --- a/Programa_TEFAME/Modelo_Lib/Restricciones_Lib/RestriccionNodo.m +++ b/Programa_TEFAME/Modelo_Lib/Restricciones_Lib/RestriccionNodo.m @@ -43,7 +43,7 @@ % % Methods: % restriccionNodoObj = RestriccionNodo(etiquetaRestriccion,nodoObjeto,gdlRestringidosNodo) -% restriccionNodoObj = RestriccionNodo(etiquetaRestriccion,nodoObjeto,gdlRestringidosNodo, valoresRestrinccionNodo) +% restriccionNodoObj = RestriccionNodo(etiquetaRestriccion,nodoObjeto,gdlRestringidosNodo,valoresRestrinccionNodo) % aplicarRestriccion(restriccionNodoObj) % disp(restriccionNodoObj) % Methods Suplerclass (ComponenteModelo): @@ -108,7 +108,8 @@ function aplicarRestriccion(restriccionNodoObj) gdlID = restriccionNodoObj.nodoObj.obtenerGDLID(); % Se coloca zero en los GDL que se indicaron en la restriccion - gdlID(restriccionNodoObj.gdlRestringidos, 1) = zeros(length(restriccionNodoObj.gdlRestringidos), 1); + gdlID(restriccionNodoObj.gdlRestringidos, 1) = ... + zeros(length(restriccionNodoObj.gdlRestringidos), 1); % Se asigna el nuevo valor de GDLID al Nodo restriccionNodoObj.nodoObj.definirGDLID(gdlID); diff --git a/test/modal/Modelo_DinamicaAvanzada.m b/test/modal/Modelo_DinamicaAvanzada.m index 204f0cb..6537742 100644 --- a/test/modal/Modelo_DinamicaAvanzada.m +++ b/test/modal/Modelo_DinamicaAvanzada.m @@ -67,7 +67,9 @@ analisisObj.activarPlotDeformadaInicial(); analisisObj.activarCargaAnimacion(); +analisisObj.plot(); +return; analisisObj.analizar(50, [0.02, 0.05], [0.05, 0.02, 0]); analisisObj.disp(); -analisisObj.plot('modo', 2, 'factor', 25, 'numcuadros', 25, ... - 'gif', 'test/modal/out/Modelo_DinamicaAvanzada_%d.gif', 'defelem', false); \ No newline at end of file +analisisObj.plot('modo', 8, 'factor', 25, 'numcuadros', 25, ... + 'gif', 'test/modal/out/Modelo_DinamicaAvanzada_%d.gif', 'defelem', true); \ No newline at end of file diff --git a/test/modal/Modelo_DinamicaAvanzadaElementos.m b/test/modal/Modelo_DinamicaAvanzadaElementos.m index e650e48..beab331 100644 --- a/test/modal/Modelo_DinamicaAvanzadaElementos.m +++ b/test/modal/Modelo_DinamicaAvanzadaElementos.m @@ -2,7 +2,7 @@ %% VIGAS % Piso 1 -elementos{1} = VigaColumnaMasa2D('V11-12', nodos{11}, nodos{12}, Iv, Ev, Av, Rhoh); +elementos{1} = VigaColumnaMasa2D('V11-12', nodos{11}, nodos{12}, Iv, Ev, Av, Rhoh); %#ok<*SUSENS> elementos{2} = VigaColumnaMasa2D('V12-13', nodos{12}, nodos{13}, Iv, Ev, Av, Rhoh); elementos{3} = VigaColumnaMasa2D('V13-14', nodos{13}, nodos{14}, Iv, Ev, Av, Rhoh); elementos{4} = VigaColumnaMasa2D('V14-15', nodos{14}, nodos{15}, Iv, Ev, Av, Rhoh);