forca = tensao * A deformacoes.append(desloc) tensoes_internas.append(tensao) forcas_internas.append(forca) AREA = 0.00015 AREA2 = 0.0003 COMPRIMENTO = sqrt(0.08**2 + 0.04**2) massa = (0.72 * AREA + 0.08 * AREA2 + 10 * (COMPRIMENTO * AREA)) * 848 print("Massa:", massa * 1000, " (g)") delete_indexes = [] for i in range(len(reacoes_apoio)): if i not in vetor_restricoes: delete_indexes.append(i) for i in range(len(vetor_deslocamento)): if abs(vetor_deslocamento[i]) > 0.02: print("Nó deslocado:", floor(i / 2) + 1) for i in range(len(tensoes_internas)): if abs(int(tensoes_internas[i])) > 18e6: print("Elemento acima da tensão:", i + 1) geraSaida("grupo4", np.array(reacoes_apoio, float), np.array(vetor_deslocamento, float), np.array(deformacoes, float), np.array(forcas_internas, float), np.array(tensoes_internas, float))
list_E[i], list_vigas_nodes[i]) vigas.append(viga) ponte = Ponte(vigas, quant_nos, vu, vP) ponte.get_mrs() ponte.mount_global_mr() ponte.cond_contorn() ponte.resolve() reacao = ponte.calc_reacao_apoio() d = np.array(ponte.calc_deformacao_global()) t = np.array(ponte.calc_tensao_global()) N_out = N + ponte.vu.reshape(N.shape) if p: ft.plota_ponte(N_out, Inc) f_interna = ponte.calc_f(t) tensao_ruptura_tracao = 18e6 tensao_ruptura_compressao = 18e6 c = ponte.testa_colapso(tensao_ruptura_tracao, tensao_ruptura_compressao, t, d, vu, ponte.vu) print(c) print(ponte.calc_peso(848)) ft.geraSaida("ponte_imortal", reacao.reshape([len(reacao), 1]), ponte.vu.reshape([len(ponte.vu), 1]), d.reshape([len(d), 1]), f_interna.reshape([len(f_interna), 1]), t.reshape([len(t), 1]))
v2 = uExpanded[degrees[i - 1][1][1]] uV = np.array([[u1], [v1], [u2], [v2]]) factor = np.array([-c, -s, c, s]) deformations.append(float((np.dot(factor, uV)) * (1 / lenghts[i - 1]))) #Tensions tensions = [] for i in range(len(info)): tensions.append(deformations[i] * Inc[i][2]) #Normal internal efforts normals = [] for i in range(len(info)): normals.append(tensions[i] * Inc[i][3]) geraSaida('result', reactions, uExpanded, deformations, normals, tensions) #Check if structure collapses def checkCollapse(): if (converged): for i in range(len(tensions)): if (abs(tensions[i]) > 18E6): print("Stress greater than 18 MPa found: " + str(tensions[i])) for i in range(len(deformations)): if (abs(deformations[i] > 0.05)): print("Deformation greater than 5% found: " + str(deformations[i])) for i in range(len(uExpanded)):
from funcoesTermosol import importa, plota, geraSaida from knot import knot from element import element from structure import structure import numpy as np [knot_numbers, knot_coordinates, element_numbers, incidence, load_numbers, forces, restriction_numbers, restriction] = importa('entry.xlsx') knot_list = [] element_list = [] for i in range(knot_numbers): # melhor codigo do mundo knot_list.append(knot(knot_coordinates[0][i], knot_coordinates[1][i], [forces[2 * i], forces[2*i + 1]])) for i in range(element_numbers): incidence0 = (int(incidence[i][0]) - 1)*2 incidence1 = (int(incidence[i][1]) - 1)*2 element_list.append(element(incidence[i][2], incidence[i][3], [knot_list[int(incidence[i][0]) - 1], knot_list[int(incidence[i][1]) - 1]], [[incidence0, incidence0 + 1], [incidence1, incidence1 + 1]])) object_structure = structure(element_list, knot_numbers, restriction, element_numbers) geraSaida(object_structure.reaction, object_structure.u_vector, object_structure.deformation, object_structure.internal_force, object_structure.tension)
param[i][3], param[i][2], nodes[i])) ponte = Ponte(element, force_matrix, U, n_nos, restric_matrix, n_restric) ponte.getKis() ponte.getKg() ponte.condicContorno() ponte.setU() #FORÇAS DE REAÇÃO #geraSaida("Nice", F,U,) ponte.getReact() F, U, Epsi, Fi, Ti = ponte.makeGraph() Epsi_ = np.matrix(Epsi) Fi_ = np.matrix(Fi) Ti_ = np.matrix(Ti) geraSaida("nice", F, U, Epsi_.getT(), Fi_.getT(), Ti_.getT()) quebrou = [] deformou = [] deslocou = [] for i in Ti: # print(i) if np.abs(i) > ruptura: quebrou.append(i) if (quebrou != []): print( "O membro ultrapassou a tensão de ruptura em tração/compressão. Membros: ", quebrou) for i in Epsi: if np.abs(i) > 0.5:
for each in graus: desl_g.append(U[each]) deformation.append(np.matmul(m[i], desl_g) / L[i]) tensoes.append(deformation[i] * E[i]) forcas_int.append(tensoes[i] * A[i]) # print(len(deformation)) reactions = np.vstack(np.array(reactions)) U = np.vstack(np.array(U)) deformation = np.vstack(np.array(deformation)) forcas_int = np.vstack(np.array(forcas_int)) tensoes = np.vstack(np.array(tensoes)) # saida geraSaida(reactions, U, deformation, forcas_int, tensoes) # funções para verificar se a ponte escolhida está dentro dos limítes propostos def peso(nm, Inc, L): area = [] for i in range(0, nm): area.append(Inc[i][3]) volume = 0 for i in range(len(L)): volume += area[i] * L[i] return 848 * volume * 1000