feat: unified 0 and 90 degree PDF envelope and category descriptors

This commit is contained in:
2026-07-08 19:52:34 +00:00
commit 9fece3f174
170 changed files with 27177 additions and 0 deletions
+97
View File
@@ -0,0 +1,97 @@
/**
* Tabela 31 — Parâmetros γ e ξ para a determinação de efeitos
* dinâmicos (NBR 6123:2023, sec. 9.3.1).
*
* Fonte: NBR 6123:2023, p. 62 (Tabela 31).
* Última auditoria: 2026-07-08 — auditado e condizente com a norma.
*/
export interface DynamicStructureParams {
/** Expoente γ do modo fundamental */
gamma: number;
/** Taxa de amortecimento crítico ξ (em %) */
xiPercent: number;
/** Fórmula para frequência aproximada (Hz) */
freqFormula: string;
}
export const TABLE_31: readonly DynamicStructureParams[] = [
{
gamma: 1.2,
xiPercent: 2.0,
freqFormula: 'f₁ ≈ 0,05 + 0,015/h (h em m)',
},
{
gamma: 1.0,
xiPercent: 2.0,
freqFormula: 'f₁ ≈ 0,05 + 0,015/h',
},
{
gamma: 2.7,
xiPercent: 1.5,
freqFormula: 'f₁ ≈ 0,02·h (h em m)',
},
{
gamma: 1.7,
xiPercent: 1.0,
freqFormula: 'f₁ ≈ 0,015·h',
},
{
gamma: 1.2,
xiPercent: 1.0,
freqFormula: 'f₁ ≈ 0,20/h 0,04',
},
{
gamma: 1.7,
xiPercent: 0.8,
freqFormula: 'f₁ ≈ dependente da estrutura',
},
{
gamma: 0,
xiPercent: 3.0,
freqFormula: 'f₁ ≈ dependente da estrutura',
},
] as const;
export type StructureDynamicType =
| 'portal-concrete'
| 'concrete-shearwall'
| 'concrete-tower-variable'
| 'concrete-tower-uniform'
| 'steel-welded'
| 'steel-tower-uniform'
| 'wood';
export function getDynamicParams(type: StructureDynamicType): DynamicStructureParams {
const idx: Record<StructureDynamicType, number> = {
'portal-concrete': 0,
'concrete-shearwall': 1,
'concrete-tower-variable': 2,
'concrete-tower-uniform': 3,
'steel-welded': 4,
'steel-tower-uniform': 5,
wood: 6,
};
return TABLE_31[idx[type]];
}
/**
* Estimativa simplificada da frequência fundamental f₁ (Hz) para edifícios.
* f₁ = γ · h / ... (Tabela 31 fornece fórmulas por tipo)
*/
export function estimateFundamentalFrequency(type: StructureDynamicType, height: number): number {
switch (type) {
case 'portal-concrete':
case 'concrete-shearwall':
return 0.05 + 0.015 / height;
case 'concrete-tower-variable':
return 0.02 * height;
case 'concrete-tower-uniform':
case 'steel-tower-uniform':
return 0.015 * height;
case 'steel-welded':
return Math.max(0.5, 0.2 / height - 0.04);
case 'wood':
return 0.5;
}
}