🚀 Auto-deploy: BrainWind atualizado em 13/07/2026 19:40:54
This commit is contained in:
@@ -147,6 +147,28 @@ export function EducationalManual({ type, params }: EducationalManualProps) {
|
||||
}
|
||||
}
|
||||
|
||||
// --- Pipe-racks (piperack) ---
|
||||
if (type === 'piperack') {
|
||||
const numFrames = Number(params.numFrames || 1);
|
||||
const phiTotal = Number(params.phiTotal || 0.5);
|
||||
|
||||
explanations.push(
|
||||
<div key="pr-phi" className="text-xs border-l-2 border-sky-400 pl-3 py-1 space-y-1">
|
||||
<span className="font-bold text-foreground block">Bloqueio Frontal (φ = {phiTotal.toFixed(2)})</span>
|
||||
<p>Seu pórtico bloqueia {Math.round(phiTotal * 100)}% da área que o vento tenta atravessar. Quanto maior o bloqueio, maior a força de arrasto no primeiro pórtico, mas maior será a proteção (sombra aerodinâmica) para os pórticos seguintes.</p>
|
||||
</div>
|
||||
);
|
||||
|
||||
if (numFrames > 1) {
|
||||
explanations.push(
|
||||
<div key="pr-frames" className="text-xs border-l-2 border-green-500 pl-3 py-1 space-y-1">
|
||||
<span className="font-bold text-green-500 block">Pórticos Múltiplos (n = {numFrames})</span>
|
||||
<p>O primeiro pórtico recebe carga total (F. Frontal). Os {numFrames - 1} pórticos traseiros recebem carga atenuada devido à esteira turbulenta (Fator de Proteção η). Juntos, formam a Força Global de arrasto na esteira.</p>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (explanations.length === 0) return null;
|
||||
|
||||
return (
|
||||
|
||||
@@ -8,6 +8,7 @@ import { domeManual } from './dome';
|
||||
import { barManual } from './bar';
|
||||
import { dynamicsManual } from './dynamics';
|
||||
import { isolatedRoofManual } from './isolated-roof';
|
||||
import { piperackManual } from './piperack';
|
||||
|
||||
export const manuals: Record<string, typeof bridgeManual> = {
|
||||
bridge: bridgeManual,
|
||||
@@ -20,4 +21,5 @@ export const manuals: Record<string, typeof bridgeManual> = {
|
||||
bar: barManual,
|
||||
dynamics: dynamicsManual,
|
||||
'isolated-roof': isolatedRoofManual,
|
||||
piperack: piperackManual,
|
||||
};
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
export const piperackManual = {
|
||||
title: 'Pipe-Racks e Reticulados Múltiplos',
|
||||
intro: 'Ação do vento em pórticos paralelos sucessivos (Pipe-racks, correias transportadoras e galerias), cobrindo o coeficiente de arrasto frontal e os fatores de proteção mútua para os pórticos traseiros (Sec. 7 - NBR 6123).',
|
||||
sections: [
|
||||
{
|
||||
title: 'Geometria de Referência e Índice de Solidez',
|
||||
content: (
|
||||
<>
|
||||
<p>
|
||||
O vento age primariamente na face perpendicular aos pórticos paralelos. A área efetiva de bloqueio do pórtico frontal determina a quantidade de vento que "atravessa" a estrutura e atinge os pórticos seguintes.
|
||||
</p>
|
||||
<ul className="list-disc pl-5 mt-2 space-y-1">
|
||||
<li><strong>Índice de Solidez (φ):</strong> É a razão entre a área sólida frontal (vigas, colunas e tubulações transversais) e a área total delimitada pelo contorno do pórtico.</li>
|
||||
<li>Para Pipe-racks, tubulações transversais que cruzam a face de barlavento aumentam drasticamente a solidez e o bloqueio aerodinâmico.</li>
|
||||
</ul>
|
||||
</>
|
||||
)
|
||||
},
|
||||
{
|
||||
title: 'Força no Pórtico Frontal',
|
||||
content: (
|
||||
<>
|
||||
<p>
|
||||
O primeiro pórtico que recebe o vento é chamado de <strong>Pórtico Frontal</strong>. Por não ter nenhuma proteção à frente, ele recebe o vento integral e é dimensionado com o Coeficiente de Arrasto Frontal (<strong>Ca</strong>).
|
||||
</p>
|
||||
<p className="mt-2 text-primary font-bold">F = q × Ca × (Área Efetiva)</p>
|
||||
<p className="mt-2">
|
||||
De acordo com a Figura 4 (baixa turbulência) da NBR 6123, o valor de <strong>Ca</strong> depende da esbeltez do pórtico e do seu índice de solidez φ.
|
||||
</p>
|
||||
</>
|
||||
)
|
||||
},
|
||||
{
|
||||
title: 'Fator de Proteção (η) nos Pórticos Traseiros',
|
||||
content: (
|
||||
<>
|
||||
<p>
|
||||
Os pórticos que ficam "escondidos" atrás do pórtico frontal recebem um vento atenuado, pois parte da energia do fluxo foi bloqueada e turbilhada pelas barras do primeiro pórtico.
|
||||
</p>
|
||||
<p className="mt-2">
|
||||
Essa redução é quantificada pelo <strong>Fator de Proteção (η)</strong>. O valor de η depende diretamente de duas coisas:
|
||||
</p>
|
||||
<ul className="list-disc pl-5 mt-2 space-y-1">
|
||||
<li><strong>Índice de Solidez (φ):</strong> Quanto mais sólido for o primeiro pórtico, menos vento vaza para trás, e portanto <em>menor</em> será o fator η (mais proteção).</li>
|
||||
<li><strong>Espaçamento Relativo (e/h):</strong> Quanto mais próximos estiverem os pórticos, maior será a área de esteira turbulenta que os envolve, gerando maior proteção.</li>
|
||||
</ul>
|
||||
<p className="mt-2 font-mono text-xs bg-muted p-2 rounded">
|
||||
Força nos Traseiros = F_Frontal × η
|
||||
</p>
|
||||
</>
|
||||
)
|
||||
},
|
||||
{
|
||||
title: 'Consideração de Ação de Conjunto (Tombamento)',
|
||||
content: (
|
||||
<>
|
||||
<p>
|
||||
Quando o número de pórticos (n) é grande e a estrutura é rigidamente travada no sentido longitudinal, o vento transversal atua como uma força de tombamento na estrutura 3D.
|
||||
</p>
|
||||
<p className="mt-2">
|
||||
A carga aerodinâmica que tenta empurrar e tombar o Pipe-Rack será combatida pelas fundações, gerando um esforço trativo considerável nas colunas de barlavento e um aumento de compressão nas colunas de sotavento, dependendo da alavanca total L = (n-1) × espaçamento.
|
||||
</p>
|
||||
</>
|
||||
)
|
||||
}
|
||||
]
|
||||
};
|
||||
@@ -12,6 +12,7 @@ import { exportGenericToPDF, type GenericPDFSection } from '../lib/export-generi
|
||||
import { Plus, Trash2, Layers, Info } from 'lucide-react';
|
||||
import { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider } from '@/components/ui/tooltip';
|
||||
import { Input } from '@/components/ui/input';
|
||||
import { EducationalManual } from '@/components/EducationalManual';
|
||||
|
||||
const PiperackModule: React.FC = () => {
|
||||
const { q } = useWindStore();
|
||||
@@ -206,6 +207,9 @@ const PiperackModule: React.FC = () => {
|
||||
|
||||
{/* Coluna Central: 3D */}
|
||||
<div className="flex-1 flex flex-col min-h-[500px] lg:min-h-0 bg-background rounded-xl border border-border shadow-sm overflow-hidden relative">
|
||||
<div className="absolute top-4 right-4 z-10">
|
||||
<EducationalManual type="piperack" params={{ numFrames, phiTotal: result.phiTotal }} />
|
||||
</div>
|
||||
<Piperack3D
|
||||
width={width}
|
||||
height={height}
|
||||
|
||||
Reference in New Issue
Block a user