0% encontró este documento útil (0 votos)
2 vistas11 páginas

Estructuras (Métodos Númericos)

El documento presenta métodos numéricos para la creación de estructuras de truss, incluyendo Bow Barrel Truss, Arco y Cuerda, y Warren Truss. Cada método incluye funciones en MATLAB que generan matrices de vértices y conectividad, así como gráficos de las estructuras. Se especifican los parámetros necesarios para cada tipo de truss y se proporciona un código detallado para su implementación.

Cargado por

angellsr563
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
2 vistas11 páginas

Estructuras (Métodos Númericos)

El documento presenta métodos numéricos para la creación de estructuras de truss, incluyendo Bow Barrel Truss, Arco y Cuerda, y Warren Truss. Cada método incluye funciones en MATLAB que generan matrices de vértices y conectividad, así como gráficos de las estructuras. Se especifican los parámetros necesarios para cada tipo de truss y se proporciona un código detallado para su implementación.

Cargado por

angellsr563
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Universidad Autónoma

Chapingo Mecatrónica Agrícola

Métodos
numéricos
TEMA: ESTRUCTURAS
Integrantes
Aguilar Martínez Rubén

Cortes Legaspi Efraín

Dimas Beltrán José Antonio

Ramos López Juan Carlos

Solís Pineda Gabriela Yamileth

Grado y grupo: 4° “5”


Nombre del profesor: Esteban Pioquinto
5 de febrero de 2026.
Bow barrel truss

function [V, B] = truss_bowbarrel(n, L, h_bottom, h_top)

% Bow Barrel Truss

% n = numero de paneles (REQUIERE n PAR)

% L = longitud total

% h_bottom = altura maxima del arco inferior

% h_top = altura adicional del arco superior

% Devuelve:

% V = matriz de vertices

% B = matriz de barras (conectividad)

if mod(n,2) ~= 0

error('n debe ser PAR para una Bow Barrel.');

end

dx = L / n;

% 1. NODOS

V = [];

% 1.1 Arco inferior

for i = 0:n

x = i*dx;

yb = h_bottom * ( 1 - ( (2*x/L - 1)^2 ) );

V = [V; x, yb];

end

% nodos 1 .. n+1

offset = n + 1;

% 1.2 Arco superior

for i = 0:n

x = i*dx;
yt = (h_bottom + h_top) * ( 1 - ( (2*x/L - 1)^2 ) );

V = [V; x, yt];

end

% nodos offset+1 .. offset+n+1

% 2. BARRAS

B = [];

% 2.1 Cuerda inferior

for i = 1:n

B = [B; i, i+1];

end

% 2.2 Cuerda superior

for i = 1:n

B = [B; offset+i, offset+i+1];

end

% 2.3 Verticales

for i = 1:n+1

B = [B; i, offset+i];

end

% 2.4 Diagonales tipo Bow Barrel

mid = n/2;

% IZQUIERDA: diagonales ↗

for i = 1:mid

B = [B; i, offset+i+1];

end

% DERECHA: diagonales ↖

for i = mid+1:n

B = [B; i+1, offset+i];


end

% 3. Mostrar matrices

disp('=====================');

disp('Matriz de Vertices V');

disp('=====================');

disp(V);

disp('=====================');

disp('Matriz de Barras B');

disp('=====================');

disp(B);

% 4. GRAFICAR

figure; hold on; grid on;

for k = 1:size(B,1)

p1 = V(B(k,1),:);

p2 = V(B(k,2),:);

plot([p1(1) p2(1)], [p1(2) p2(2)], 'k', 'LineWidth', 2);

end

plot(V(:,1), V(:,2), 'ro', 'MarkerFaceColor','r');

axis equal;

xlabel('x'); ylabel('y');

title('Bow Barrel Truss');

end
Arco y cuerda

function [V, B] = truss_arco_cuerda(L, H)

% L = longitud total

% H = altura máxima del arco

% -------------------------------

% 1. NODOS

% -------------------------------

n_paneles = 8; % Número de paneles para suavidad del arco

dx = L/n_paneles;

% Cuerda inferior (recta)

nodos_inf = n_paneles + 1;

V_inf = zeros(nodos_inf, 2);

for i = 1:nodos_inf

V_inf(i, 1) = (i-1) * dx;

V_inf(i, 2) = 0;

end

% Arco superior (forma parabólica)

nodos_sup = n_paneles + 1;

V_sup = zeros(nodos_sup, 2);

for i = 1:nodos_sup
x = (i-1) * dx;

% Ecuación parabólica para el arco

V_sup(i, 1) = x;

V_sup(i, 2) = 4*H * (x/L) * (1 - x/L) + 0.1*H; % Parábola + pequeño


offset

end

% Combinar nodos

V = [V_inf; V_sup];

% -------------------------------

% 2. BARRAS

% -------------------------------

B = [];

% Barras del arco superior

for i = 1:nodos_sup-1

B = [B; nodos_inf + i, nodos_inf + i + 1];

end

% Barras de la cuerda inferior

for i = 1:nodos_inf-1

B = [B; i, i + 1];

end

% Montantes verticales (conectan arco con cuerda)

for i = 1:min(nodos_inf, nodos_sup)

B = [B; i, nodos_inf + i];

end

% Diagonales para rigidizar (patrón tipo Howe)

for i = 1:nodos_inf-1

if mod(i, 2) == 1 % Diagonales alternadas


B = [B; i, nodos_inf + i + 1];

else

B = [B; i + 1, nodos_inf + i];

end

end

% 3. GRAFICAR

figure;

hold on;

grid on;

axis equal;

% Dibujar barras

for k = 1:size(B,1)

p1 = V(B(k,1), :);

p2 = V(B(k,2), :);

plot([p1(1), p2(1)], [p1(2), p2(2)], 'k', 'LineWidth', 2);

end

% Dibujar nodos

plot(V(:,1), V(:,2), 'ro', 'MarkerFaceColor', 'r', 'MarkerSize', 5);

% Configuración del gráfico

xlim([-dx, L+dx]);

ylim([-0.5, H*1.2]);

xlabel('x [m]');

ylabel('y [m]');

title('Armadura de Arco y Cuerda');

% Mostrar información

fprintf('Armadura de Arco y Cuerda creada:\n');

fprintf('- Longitud: %.1f m\n', L);


fprintf('- Altura máxima: %.1f m\n', H);

fprintf('- Nodos: %d\n', size(V,1));

fprintf('- Barras: %d\n', size(B,1));

end

Warren truss

function [V, B] = truss_warren(n, L, h)

% ---------------------------------------------------------------------

% Warren Truss (Recta) - Genera la geometria de una armadura Warren

% con nodos solo en los vertices de los triangulos (celosia).

% n = numero de paneles / triangulos (DEBE ser par).

% L = longitud total de la armadura.

% h = altura (peralte) de la armadura.

% Devuelve:

% V = matriz de vertices [x, y] (coordenadas de los nodos).

% B = matriz de barras [Nodo_inicio, Nodo_fin] (conectividad).

% ---------------------------------------------------------------------
% Verificación de Parámetros

if mod(n, 2) ~= 0

error('El número de triángulos (n) debe ser par para simetría de la


armadura.');

end

% Ancho de la base de cada triángulo (paso horizontal de los nodos).

dx = L / n;

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

% 1. NODOS (Vectorizado para eficiencia)

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

% Numero de nodos inferiores y superiores

num_triangles_per_chord = n / 2;

num_bottom_nodes = num_triangles_per_chord + 1; % Nodos 1, 3, 5, ...

num_top_nodes = num_triangles_per_chord; % Nodos 2, 4, 6, ...

num_nodes = num_bottom_nodes + num_top_nodes;

% --- 1.1 Coordenadas X

% La cuerda inferior se desfasa 2*dx

x_bottom = 0 : 2*dx : L;

% La cuerda superior se desfasa dx y luego 2*dx

x_top = dx : 2*dx : L - dx;

% --- 1.2 Matriz de Vertices [x, y]

% Se concatenan las coordenadas de la cuerda inferior (y=0) y superior


(y=h)

V=[

x_bottom', zeros(num_bottom_nodes, 1); % Cuerda Inferior

x_top', h * ones(num_top_nodes, 1) % Cuerda Superior

];

% ======================
% 2. BARRAS (Matriz de Conectividad)

B = zeros((n/2 - 1) * 2 + n, 2); % Inicializar la matriz B para eficiencia

k = 1; % Contador de barras

% 2.1 Cuerda Inferior

% Conecta nodos inferiores consecutivos (desde el 1 hasta el penúltimo)

for i = 1:num_bottom_nodes - 1

B(k, :) = [i, i+1];

k = k + 1;

end

% 2.2 Cuerda Superior

% Conecta nodos superiores consecutivos

start_node_index = num_bottom_nodes + 1;

for i = start_node_index : num_nodes - 1

B(k, :) = [i, i+1];

k = k + 1;

end

% 2.3 Diagonales (n elementos)

% Alternan la conexión entre cuerdas

for i = 1:n

if mod(i, 2) ~= 0 % Diagonales / (Inferior a Superior)

bottom_node = (i+1)/2;

top_node = num_bottom_nodes + (i+1)/2;

B(k, :) = [bottom_node, top_node];

else % Diagonales \ (Superior a Inferior)

top_node = num_bottom_nodes + i/2;

bottom_node = i/2 + 1;

B(k, :) = [top_node, bottom_node];


end

k = k + 1;

end

% 3. GRAFICAR

figure;

hold on;

grid on;

% Dibujar Barras

for i = 1:size(B,1)

p1 = V(B(i,1),:);

p2 = V(B(i,2),:);

plot([p1(1) p2(1)], [p1(2) p2(2)], 'k', 'LineWidth', 2);

end

% Marcar Nodos (TODOS los nodos en V son relevantes ahora)

plot(V(:,1), V(:,2), 'o', 'MarkerSize', 8, ...

'MarkerFaceColor', 'r', 'MarkerEdgeColor', 'r', 'LineStyle', 'none');

axis equal;

xlabel('Coordenada X');

ylabel('Coordenada Y');

title('Armadura Warren');

hold off;

end

También podría gustarte