158 lines
6.4 KiB
Markdown
158 lines
6.4 KiB
Markdown
# VentoApp — NBR 6123:2023
|
||
|
||
> **Status (jul/2026):** 8/8 marcos concluídos. 100% de cobertura da NBR 6123:2023.
|
||
> **Próximas melhorias:** ver [`../PROGRESS.md`](../PROGRESS.md) seção "Roadmap pós-Marco 8".
|
||
|
||
Aplicativo para cálculo de cargas de vento conforme a norma brasileira **ABNT NBR 6123:2023** — Forças devidas ao vento em edificações.
|
||
|
||
## 🎯 Cobertura
|
||
|
||
Implementa **100% das seções e anexos normativos**:
|
||
|
||
- **Sec. 5** — Velocidade característica (V₀, S₁, S₂, S₃, mudança de rugosidade)
|
||
- **Sec. 6.1** — Edificações paralelepipédicas (Tabelas 6–12, excentricidade, atrito, alta turbulência)
|
||
- **Sec. 6.2** — Superfícies curvas: cilindros, abóbadas, cúpulas (Tabelas 13–22)
|
||
- **Sec. 6.3** — Pressão interna (Cpi) — método simplificado + detalhado
|
||
- **Sec. 6.4** — Efeitos de vizinhança (fᵥ)
|
||
- **Sec. 7** — Muros, placas, coberturas isoladas (Tabelas 23–25)
|
||
- **Sec. 8** — Barras prismáticas, reticulados, torres (Tabelas 26–30 + Figs 12–18)
|
||
- **Sec. 9** — Efeitos dinâmicos em estruturas alteadas, conforto humano
|
||
- **Sec. 10** — Vibração por desprendimento de vórtices (Vcr, Scruton)
|
||
- **Sec. 11** — Ação de vento em pontes (Pse, flutter, galope)
|
||
- **Anexos A, B, C** — S₂(qualquer t), S₃(Pₘ, vida útil), 49 estações meteorológicas
|
||
|
||
## 🚀 Stack
|
||
|
||
- React 19 + TypeScript + Vite 8
|
||
- Tailwind v4 + shadcn/ui (new-york)
|
||
- Zustand (estado)
|
||
- @react-three/fiber + drei (3D)
|
||
- @react-pdf/renderer (PDF)
|
||
- Vitest (testes) — 38/38 passando
|
||
|
||
## 🧪 Scripts
|
||
|
||
```bash
|
||
cd app
|
||
npm run dev # desenvolvimento (HMR)
|
||
npm run build # tsc + vite build
|
||
npm run lint # oxlint
|
||
npm test # vitest run (38 testes)
|
||
npm run test:watch # vitest watch
|
||
```
|
||
|
||
> **Atenção:** Os binários em `node_modules/.bin/` perdem o bit de execução. Se reclamar `Permission denied`, rode `chmod +x node_modules/.bin/<bin>` antes.
|
||
|
||
## 📁 Estrutura
|
||
|
||
```
|
||
app/src/
|
||
├── lib/
|
||
│ ├── wind-kernel.ts Motor matemático
|
||
│ ├── bilinear-interp.ts Interpolação bilinear (sec. 3.2)
|
||
│ ├── log-interp.ts Interpolação log-linear
|
||
│ ├── wind-direction.ts Mudança de rugosidade (sec. 5.5)
|
||
│ ├── internal-pressure.ts Cpi (sec. 6.3)
|
||
│ ├── neighborhood.ts fᵥ (sec. 6.4)
|
||
│ ├── coefficients.ts Cpe paredes/telhados (Tab. 6-12)
|
||
│ ├── excentricity.ts ea, eb (sec. 6.1.4)
|
||
│ ├── friction.ts Força de atrito (sec. 6.1.5)
|
||
│ ├── drag.ts Ca baixa/alta turbulência (Figs 4-5)
|
||
│ ├── comfort.ts a_lim ISO 10137
|
||
│ ├── storage.ts Persistência IndexedDB
|
||
│ ├── theme.tsx Dark/light mode
|
||
│ ├── i18n.ts Strings pt-BR/en-US
|
||
│ ├── stations-lookup.ts 49 estações Anexo C
|
||
│ ├── export-pdf.tsx PDF didático
|
||
│ ├── export-csv.ts CSV estruturado
|
||
│ ├── modules/ Strategy pattern (7 módulos)
|
||
│ ├── nbr-tables/ 36 tabelas + 3 anexos
|
||
│ ├── hooks/useProjects.ts Hook React
|
||
│ └── __tests__/ Vitest (5 suites, 38 testes)
|
||
├── components/
|
||
│ ├── ui/ shadcn/ui
|
||
│ ├── three/
|
||
│ │ ├── Cylinder3D.tsx
|
||
│ │ ├── Vault3D.tsx
|
||
│ │ └── Dome3D.tsx
|
||
│ ├── Warehouse3D.tsx Galpão com zonas A-J
|
||
│ └── ExportMenu.tsx
|
||
├── pages/ 10 páginas
|
||
├── store/ Zustand
|
||
└── App.tsx Rotas + ThemeProvider + Layout
|
||
```
|
||
|
||
## 📋 Módulos (páginas ativas)
|
||
|
||
| Rota | Módulo | Tabelas/Figs |
|
||
|------|--------|--------------|
|
||
| `/galpao` | Galpão retangular com 3D zonas A–J | 6, 7 |
|
||
| `/cilindro` | Silos, chaminés, reservatórios | 13 + Reynolds |
|
||
| `/abobada` | Abóbadas cilíndricas | 15–20 |
|
||
| `/cupula` | Cúpulas (terreno/parede) | 21, 22 + F sust |
|
||
| `/muros` | Muros e placas retangulares | 23 |
|
||
| `/cobertura-isolada` | Cob. isoladas (uma e duas águas) | 24, 25 |
|
||
| `/barras` | Barras (faces planas/circulares) | 26–28 |
|
||
| `/pontes` | Pontes (Pse, Cx/Cz, flutter, galope) | 35, 36 + sec. 11 |
|
||
| `/dinamica` | Dinâmica + vórtices + conforto | 31–34 |
|
||
| `/settings` | Tema, persistência, estado | — |
|
||
|
||
## 📐 Fórmula central
|
||
|
||
```
|
||
Vₖ = V₀ · S₁ · S₂ · S₃
|
||
q = 0,613 · Vₖ² / 1000 [kN/m²]
|
||
p = q · (Cpe − Cpi) [kN/m²]
|
||
```
|
||
|
||
## 🧪 Testes (38/38 ✅)
|
||
|
||
```bash
|
||
npm test
|
||
```
|
||
|
||
Cobrem:
|
||
- **Motor matemático** (classe, S₂, Vₖ, q, S₃) — 14 testes
|
||
- **Interpolação bilinear e log** — 5 testes
|
||
- **Cpi simplificado + clamp** — 9 testes
|
||
- **Vizinhança** — 4 testes
|
||
- **Reynolds + regime de escoamento** — 6 testes
|
||
|
||
## 💾 Persistência
|
||
|
||
Projetos salvos em IndexedDB (browser local). Configurações de tema também em `localStorage`.
|
||
|
||
## 🌗 Temas
|
||
|
||
- Light, Dark, System (segue `prefers-color-scheme`)
|
||
- Toggle em `/settings`
|
||
|
||
## 📚 Documentação adicional
|
||
|
||
- [`../PROGRESS.md`](../PROGRESS.md) — Estado atual + roadmap de melhorias futuras
|
||
- [`../PLAN.md`](../PLAN.md) — Plano histórico dos 8 marcos
|
||
- [`../AGENTS.md`](../AGENTS.md) — Guia para IAs continuarem o trabalho
|
||
- [`../NBR-6123-2023.pdf`](../NBR-6123-2023.pdf) — Norma oficial
|
||
|
||
## 🚧 Próximas melhorias (resumo)
|
||
|
||
| ID | Item | Esforço | Impacto |
|
||
|----|------|---------|---------|
|
||
| **M9.1** | Refinar tabelas a partir do PDF real | 3 dias | Alto |
|
||
| **M9.2** | Cargas lineares (kN/m) por barra | 2 dias | Alto |
|
||
| **M9.3** | Screenshot 3D no PDF | 1 dia | Médio |
|
||
| **M9.4** | Export Ftool (.txt) | 2 dias | Médio |
|
||
| **M9.5** | Refatoração TypeScript (eliminar `void`) | 1 dia | Baixo |
|
||
| **M9.6** | 3D para muros/torres/pontes/barras | 3 dias | Médio |
|
||
| **M9.7** | Import JSON de projetos | 1 dia | Médio |
|
||
| **M9.8** | i18n completo (en-US) | 2 dias | Baixo |
|
||
| **M9.9** | Validação contra Blessmann | 2 dias | Alto |
|
||
| **M9.10** | Dark mode em gráficos SVG | 0.5 dia | Baixo |
|
||
| **M9.11** | Persistência em servidor (especulativo) | — | — |
|
||
| **M9.12** | Testes E2E com Playwright | 2 dias | Médio |
|
||
|
||
Detalhes e contexto em [`../PROGRESS.md`](../PROGRESS.md).
|
||
|
||
---
|
||
|
||
**Aviso:** Esta ferramenta é auxiliar. O projetista é responsável pela validação final dos resultados conforme a NBR 6123:2023 e pela emissão de ART. |