Código

Validar uma fórmula de flecha de viga contra uma referência citada

Implemente a flecha no meio do vão de Euler–Bernoulli para viga simplesmente apoiada com carga uniforme, confira com identidades de escala e recuse tratar um coeficiente sem citação como saída de engenharia.

Uma fórmula de viga num script só é tão boa quanto a referência por trás do coeficiente. Este tutorial implementa um resultado elementar — flecha no meio do vão de uma viga prismática de Euler–Bernoulli simplesmente apoiada sob carga uniforme —, cita uma classe de fontes de livro-texto e confere a implementação com identidades que não exigem copiar tabelas de uma norma de edificação.

O objetivo é um hábito de verificação: fórmula, citação, sistema de unidades, conferência independente. Não é o projeto de um membro, não é uma verificação de norma e não substitui o OpenSees nem uma análise licenciada.

O resultado citado

Para um vão simplesmente apoiado L, EI constante, carga uniforme w por unidade de comprimento, pequenas flechas, cinemática de Euler–Bernoulli (seções planas permanecem planas, sem deformação por cisalhamento), a magnitude da flecha transversal no meio do vão é:

δ = 5 w L⁴ / (384 E I)

Caminho de conferência: fórmula citada, unidades coerentes, depois identidades de escala
Diagram source
flowchart LR
  cite[Fórmula citada] --> units[Unidades SI coerentes]
  units --> run[Correr o script]
  run --> scale[Identidades de escala]
  scale --> keep[Manter o coeficiente]

Essa expressão é padrão em resistência dos materiais elementar. Cite a edição da sua prateleira, por exemplo Timoshenko e Gere, Mechanics of Materials, no capítulo de flecha de vigas. Não cole páginas escaneadas do livro nem comentários com copyright. Não substitua esta citação por um trecho de tabela AISC, Eurocódigo ou NSR.

Um problema distinto — carga pontual P no meio do vão na mesma viga — tem δ = P L³ / (48 E I). Misturar 5/384 com uma carga pontual (ou 1/48 com uma carga uniforme) é um erro silencioso comum. O script abaixo toma w e recusa um argumento P para que os dois casos não se colapsem por acidente.

Pré-requisitos

  • Python 3 (só stdlib)
  • Unidades SI claras: w em N/m, L em m, E em Pa, I em m⁴, δ em m
  • O tutorial de unidades se você estiver tentado a misturar mm e m

Implementação

from __future__ import annotations


def midspan_uniform_ss(w: float, L: float, E: float, I: float) -> float:
    """Euler–Bernoulli midspan |δ| for simple supports and uniform w.

    Referee: Timoshenko & Gere, Mechanics of Materials (elementary beam
    deflection). Not a building-code clause.
    """
    if min(w, L, E, I) <= 0.0:
        raise ValueError("w, L, E, I must be positive")
    return 5.0 * w * L**4 / (384.0 * E * I)


def scaling_checks(w: float, L: float, E: float, I: float, atol_rel: float = 1e-12) -> None:
    d = midspan_uniform_ss(w, L, E, I)
    d_ei = midspan_uniform_ss(w, L, 2.0 * E, I)
    d_l = midspan_uniform_ss(w, 2.0 * L, E, I)
    d_w = midspan_uniform_ss(2.0 * w, L, E, I)

    def rel(a: float, b: float) -> float:
        return abs(a - b) / abs(b)

    if rel(d_ei, d / 2.0) > atol_rel:
        raise SystemExit("doubling EI must halve δ")
    if rel(d_w, 2.0 * d) > atol_rel:
        raise SystemExit("doubling w must double δ")
    if rel(d_l, 16.0 * d) > atol_rel:
        raise SystemExit("doubling L must multiply δ by 16 (L^4)")


if __name__ == "__main__":
    # Documented SI example — not a designed section.
    w = 10_000.0    # N/m
    L = 6.0         # m
    E = 2.0e11      # Pa
    I = 8.0e-5      # m⁴
    delta_m = midspan_uniform_ss(w, L, E, I)
    scaling_checks(w, L, E, I)
    print(f"δ = {delta_m:.6e} m  ({delta_m * 1e3:.3f} mm)")
    print("scaling identities passed")

A impressão desta tupla concreta está na ordem de 10 mm. Se você vir metros ou nanômetros, o conjunto de unidades está errado. Essa afirmação de ordem de magnitude é um bound de sanidade, não um passa/não passa contra um limite de flecha de norma.

Conferência numérica independente

O tutorial companheiro de OpenSees (opensees-first-elastic-model) é uma viga em balanço com carga na ponta. Essa forma fechada é P L³ / (3 E I), não 5 w L⁴ / (384 E I). Para conferir esta fórmula num solver você deve modelar apoios simples e uma carga uniforme, e depois comparar uy no meio do vão com midspan_uniform_ss. Não afirme que o tutorial da viga em balanço já verificou este caso.

Se você construir esse modelo de OpenSees, conserve geometria Linear, um elasticBeamColumn prismático (vários segmentos se aplicar cargas nodais equivalentes, ou uma carga de elemento se o seu build suportar -beamUniform), pins que restrinjam os GDL corretos e o mesmo conjunto SI. Um só elemento cúbico com só nós de extremidade não pode representar uma carga uniforme verdadeira a menos que a carga seja aplicada como carga de elemento que a formulação suporte.

Validação

  1. Citação. O coeficiente 5/384 está escrito ao lado de Timoshenko e Gere (ou outro texto de resistência dos materiais que você realmente possua). Uma fração sem citação de uma janela de chat não está validada.
  2. Identidades de escala. δ escala com w, com 1/EI e com L⁴. Seguem da mesma equação de Euler–Bernoulli; se falharem, a implementação está errada mesmo que um único exemplo numérico «pareça razoável».
  3. Armadilha de fórmula errada. Avaliar P L³ / (48 E I) com P = w L não recupera 5 w L⁴ / (384 E I). w L como uma só força no meio do vão é outro caminho de carga. Conserve um teste que afirme que as duas expressões diferem.
  4. Unidades. Repita a avaliação em N-mm e converta δ para mm; os resultados SI e N-mm devem coincidir (veja unit-conversion-pitfalls-civil-scripts).
  5. Sinal. A fórmula acima é uma magnitude. Um GDL de solver pode ser negativo. Compare valores absolutos só depois de ter conferido a direção da carga.

Erros comuns

  • Usar 5/384 para uma viga em balanço, ou P L³ / (3 E I) para apoios simples.
  • Tomar I de um catálogo em mm⁴ e L em metros.
  • Aplicar fatores de carga ou φ/Ω dentro da «conferência de fórmula». A verificação da álgebra vem primeiro; os fatores de confiabilidade são outra camada.
  • Deixar um assistente reescrever o coeficiente «para vigas I» ou «para concreto». O resultado de Euler–Bernoulli acima não é específico do tipo de seção; é cinemático e constitutivo sob as hipóteses declaradas.

Limitações

  • Sem deformação por cisalhamento (viga de Timoshenko), sem empenamento, sem torção, sem fissuração, sem ação composta.
  • Prismática, estaticamente determinada, w uniforme, elástica linear, inclinações pequenas.
  • Os apoios são pins ideais. Recalque, apoios elásticos e continuidade em vários vãos precisam de outras soluções (distribuição de momentos, inclinação-deflexão ou um solver).
  • Não é uma conferência de serviço contra um teto de flecha de norma. Esses tetos, combinações de carga e padrões de sobrecarga vivem na norma vigente — cite a norma por designação e cláusula sem citar texto com copyright.
  • A dinâmica (massa, período, espectros) fica fora desta página. Chopra, Dynamics of Structures (content id chopra-dynamics-of-structures), é o próximo passo teórico habitual; não substitui esta identidade estática.

Contexto profissional

Engenheiros assinam modelos, não compleções de chat. Um auxiliar de fórmulas pertence a um repositório com a citação no docstring, os testes de escala no CI e uma nota de que os membros de produção precisam do método de análise do projeto e da norma em vigor. Se você não consegue nomear a referência de 5/384, não envie a função.

Referências

  • Timoshenko, S. P., e Gere, J. M. Mechanics of Materials. Viga simplesmente apoiada, carga uniforme, flecha no meio do vão 5 w L⁴ / (384 E I). Use a edição que você tem; não reproduza trechos longos.
  • Hibbeler, R. C. Structural Analysis ou Mechanics of Materials — tabelas elementares equivalentes em muitas edições; continue citando em vez de copiar.
  • Documentação do OpenSeesPy, para um modelo numérico independente de um problema de contorno diferente a menos que você reconstrua apoios simples e carga uniforme de propósito.