示例#1
0
    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))
示例#2
0
                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)):
示例#4
0
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)

示例#5
0
文件: main.py 项目: zMendes/TermoSol
                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:
示例#6
0
    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