import { useState } from 'react' const boomTabs = [ { id: 0, label: '๐ŸŒ ๊ฐœ์š”' }, { id: 1, label: '๐Ÿ“ ๋ฐฐ์น˜ ์ด๋ก ' }, { id: 2, label: 'โš™๏ธ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜' }, { id: 3, label: '๐ŸŒŠ ์œ ์ฒด์—ญํ•™ ๋ชจ๋ธ' }, { id: 4, label: '๐Ÿ—บ๏ธ ํ˜„์žฅ ์ ์šฉ' }, { id: 5, label: '๐Ÿ“š ์ฐธ๊ณ ๋ฌธํ—Œ' }, ] export function BoomDeploymentTheoryView() { const [activePanel, setActivePanel] = useState(0) const handleExportPDF = () => { window.print() } return (
{/* ํ—ค๋” */}
๐Ÿ›ก๏ธ
์˜ค์ผํŽœ์Šค ๋ฐฐ์น˜ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ก 
Oil Boom Deployment Optimization ยท ์œ ์ถœ์œ  ํ™•์‚ฐ์˜ˆ์ธก ์—ฐ๋™ ยท ๋ฐฉ์ œํšจ์œจ ์ตœ๋Œ€ํ™”
{/* ๋‚ด๋ถ€ ๋„ค๋น„๊ฒŒ์ด์…˜ */}
{boomTabs.map(tab => ( ))}
{/* โ•โ•โ• PANEL 0: ๊ฐœ์š” โ•โ•โ• */} {activePanel === 0 && } {activePanel === 1 && } {activePanel === 2 && } {activePanel === 3 && } {activePanel === 4 && } {activePanel === 5 && }
) } /* โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ PANEL 0: ๊ฐœ์š” โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */ function OverviewPanel() { return ( <> {/* ์ธํŠธ๋กœ ์นด๋“œ */}
๐Ÿ›ก๏ธ ์˜ค์ผํŽœ์Šค ๋ฐฐ์น˜ ์ตœ์ ํ™”๋ž€?
ํ•ด์–‘ ์œ ๋ฅ˜์˜ค์—ผ ๋ฐœ์ƒ ์‹œ ์œ ์ถœ์œ  ํ™•์‚ฐ ์˜ˆ์ธก ๊ฒฐ๊ณผ์™€ ์‹ค์‹œ๊ฐ„ ํ•ด์–‘ํ™˜๊ฒฝ(์กฐ๋ฅ˜ยทํ’ํ–ฅยทํŒŒ๊ณ )์„ ์—ฐ๋™ํ•˜์—ฌ, ์ œํ•œ๋œ ๋ฐฉ์ œ์ž์›(์˜ค์ผํŽœ์Šค ๊ธธ์ดยท๋ฐฉ์ œ์ • ์ˆ˜)์œผ๋กœ ์˜ค์—ผ ํ™•์‚ฐ ์ฐจ๋‹จ ํšจ์œจ์„ ์ตœ๋Œ€ํ™”ํ•˜๋Š” ์ตœ์  ๋ฐฐ์น˜ ์ง€์ ยทํ˜•ํƒœยท์ˆœ์„œ๋ฅผ ์ž๋™ ์‚ฐ์ถœํ•˜๋Š” ์ˆ˜์น˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฒด๊ณ„์ž…๋‹ˆ๋‹ค.
๐ŸŽฏ WING ์ตœ์ ํ™” ๋ชฉํ‘œ
{[ { num: 'โ‘ ', color: 'var(--orange)', bg: 'rgba(249,115,22,.05)', bd: 'rgba(249,115,22,.12)', text: '์ฐจ๋‹จ ๋ฉด์  ์ตœ๋Œ€ํ™” โ€” ์˜ˆ์ธก ์œ ์ถœ์œ  ํ™•์‚ฐ ๊ฒฝ๊ณ„์™€ ์˜ค์ผํŽœ์Šค ๊ต์ฐจ ๋ฉด์  ๊ทน๋Œ€ํ™”' }, { num: 'โ‘ก', color: 'var(--cyan)', bg: 'rgba(6,182,212,.05)', bd: 'rgba(6,182,212,.12)', text: '๋„๋‹ฌ์‹œ๊ฐ„ ์ตœ์†Œํ™” โ€” ์œ ์ถœ์œ  ํ•ด์•ˆยทESI ๋ฏผ๊ฐ๊ตฌ์—ญ ๋„๋‹ฌ ์ „ ์„ ์ œ์  ์ฐจ๋‹จ์„  ๊ตฌ์ถ•' }, { num: 'โ‘ข', color: 'var(--green)', bg: 'rgba(34,197,94,.05)', bd: 'rgba(34,197,94,.12)', text: '์ž์› ํšจ์œจ ์ตœ์ ํ™” โ€” ๊ฐ€์šฉ ์˜ค์ผํŽœ์Šค ๊ธธ์ดยท๋ฐฉ์ œ์ • ์ˆ˜ยท์ด๋™์‹œ๊ฐ„ ์ œ์•ฝ ์ถฉ์กฑ' }, { num: 'โ‘ฃ', color: 'var(--purple)', bg: 'rgba(168,85,247,.05)', bd: 'rgba(168,85,247,.12)', text: '์‹คํŒจ ์•ˆ์ „์„ฑ ํ™•๋ณด โ€” ์กฐ๋ฅ˜ ์ดˆ๊ณผ ์‹œ ์˜ค์ผํŽœ์Šค ์ดํƒˆ ๋ฐฉ์ง€ ๋ฐฉํ–ฅ๊ฐ ์ž๋™ ๋ณด์ •' }, ].map((item, i) => (
{item.num} {item.text}
))}
{/* ์ „์ฒด ํ๋ฆ„๋„ */}
โš™๏ธ WING ์˜ค์ผํŽœ์Šค ๋ฐฐ์น˜ ์ตœ์ ํ™” ์ „์ฒด ํ๋ฆ„
{[ { icon: '๐ŸŒŠ', label: 'ํ™•์‚ฐ์˜ˆ์ธก', sub: 'KOSPS/POSEIDON\nOpenDrift', color: 'var(--orange)', bg: 'rgba(249,115,22,.08)', bd: 'rgba(249,115,22,.2)' }, { icon: '๐Ÿ“ก', label: 'ํ™˜๊ฒฝ์ž…๋ ฅ', sub: '์กฐ๋ฅ˜ยทํ’ํ–ฅ\nํŒŒ๊ณ ยท์ˆ˜์‹ฌ', color: 'var(--cyan)', bg: 'rgba(6,182,212,.08)', bd: 'rgba(6,182,212,.2)' }, { icon: '๐Ÿ—บ๏ธ', label: '์ฐจ๋‹จ์„  ํ›„๋ณด', sub: '๊ฒฉ์žํƒ์ƒ‰\nํ›„๋ณด์ง€์  ์ƒ์„ฑ', color: 'var(--yellow)', bg: 'rgba(234,179,8,.08)', bd: 'rgba(234,179,8,.2)' }, { icon: 'โš™๏ธ', label: '์ตœ์ ํ™” ์—”์ง„', sub: '๋‹ค๋ชฉ์ \n์œ ์ „์•Œ๊ณ ๋ฆฌ์ฆ˜', color: 'var(--purple)', bg: 'rgba(168,85,247,.08)', bd: 'rgba(168,85,247,.3)', bold: true }, { icon: 'โœ…', label: '๋ฐฐ์น˜์•ˆ ์ถœ๋ ฅ', sub: '์ขŒํ‘œยทํ˜•ํƒœ\n๋ฐฉํ–ฅยท์ˆœ์„œ', color: 'var(--green)', bg: 'rgba(34,197,94,.08)', bd: 'rgba(34,197,94,.2)' }, { icon: '๐Ÿ—บ๏ธ', label: '์ง€๋„ ํ‘œ์‹œ', sub: 'ESI ์ค‘์ฒฉ\n๋ฐฉ์ œ์ž์› ์—ฐ๊ณ„', color: 'var(--blue)', bg: 'rgba(59,130,246,.08)', bd: 'rgba(59,130,246,.2)' }, ].map((step, i) => (
{step.icon}
{step.label}
{step.sub}
{i < 5 &&
โ–ถ
}
))}
{/* ์˜ค์ผํŽœ์Šค ์ข…๋ฅ˜ */}
{[ { icon: 'โ›ฝ', title: '๊ณ ํ˜• ์˜ค์ผํŽœ์Šค', color: 'var(--orange)', desc: '๋‹จ๋‹จํ•œ ๋ถ€์ฒด์™€ ์ˆ˜์ค‘์ปคํŠผ์œผ๋กœ ๊ตฌ์„ฑ. ์ •์  ๋ฐฐ์น˜. ํ•ญ๊ตฌยท์ข์€ ์ˆ˜๋กœ์— ์ ํ•ฉ.', specs: ['๋‚ด์กฐ๋ฅ˜ ํ•œ๊ณ„: 0.5~1.0 knot', '๋†’์ด: 30~60cm ยท ์ˆ˜์ค‘ 30~60cm', '์ „๊ฐœ์†๋„: 30~60m/hr'] }, { icon: '๐ŸŒŠ', title: '๊ณต๊ธฐ์ถฉ์ „์‹ ์˜ค์ผํŽœ์Šค', color: 'var(--blue)', desc: '๊ณต๊ธฐ๋กœ ๋ถ€๋ ฅ ํ™•๋ณด. ์ด๋™ยท๋ณด๊ด€ ํŽธ๋ฆฌ. ํ•ด์ƒ ๊ด‘์—ญ ์ฐจ๋‹จ์— ์ฃผ๋กœ ์‚ฌ์šฉ.', specs: ['๋‚ด์กฐ๋ฅ˜ ํ•œ๊ณ„: 0.7~1.5 knot', '๋†’์ด: 45~90cm ยท ์ˆ˜์ค‘ 45~90cm', '์ „๊ฐœ์†๋„: 100~300m/hr'] }, { icon: '๐Ÿ”„', title: '์žํ•ญ์‹ ์˜ค์ผํŽœ์Šค', color: 'var(--green)', desc: '๋ฐฉ์ œ์ • ์˜ˆ์ธ ๋˜๋Š” ์ž์ฒด ์ถ”์ง„. Uํ˜•ยทVํ˜• ๋™์  ๋ฐฐ์น˜. ๊ฐ•์กฐ๋ฅ˜ ํ•ด์—ญ ์ ํ•ฉ.', specs: ['์šด์šฉ์ˆ˜์‹ฌ: 5m ์ด์ƒ', 'Uํ˜•ยทVํ˜•ยทJํ˜• ๋™์  ํ˜•ํƒœ', '๋‚ด์กฐ๋ฅ˜: ์กฐ๋ฅ˜๊ฐ๋„ ๋ณด์ •์œผ๋กœ ๊ทน๋ณต'] }, ].map((boom, i) => (
{boom.icon} {boom.title}
{boom.desc}
{boom.specs.map((spec, j) => (
{spec}
))}
))}
{/* ํ•ต์‹ฌ ์ œ์•ฝ์กฐ๊ฑด */}
โš ๏ธ ์ตœ์ ํ™” ํ•ต์‹ฌ ์ œ์•ฝ์กฐ๊ฑด
{[ { icon: '๐ŸŒŠ', title: '์กฐ๋ฅ˜ ์ œ์•ฝ', color: 'var(--red)', bg: 'rgba(239,68,68,.05)', bd: 'rgba(239,68,68,.15)', lines: ['์กฐ๋ฅ˜์†๋„ > ์ž„๊ณ„์œ ์† ์‹œ', '์˜ค์ผํŽœ์Šค ํ•˜๋‹จ ํ†ต๊ณผ ๋ฐœ์ƒ', 'U<0.7 knot ์œ ์ง€ ํ•„์ˆ˜', '์ž„๊ณ„๊ฐ๋„ ์ž๋™ ๊ณ„์‚ฐ ์ ์šฉ'] }, { icon: '๐Ÿ“', title: '์ž์› ์ œ์•ฝ', color: 'var(--yellow)', bg: 'rgba(234,179,8,.05)', bd: 'rgba(234,179,8,.15)', lines: ['๊ฐ€์šฉ ์˜ค์ผํŽœ์Šค ์ด ๊ธธ์ด', '๋ฐฉ์ œ์ • ์ฒ™์ˆ˜ยท์ด๋™์‹œ๊ฐ„', '์•ต์ปค๋ง ๊ฐ€๋Šฅ ์ˆ˜์‹ฌ ์กฐ๊ฑด', '์—ฐ๊ฒฐ๋ถ€ ํ—ˆ์šฉ ์žฅ๋ ฅ'] }, { icon: 'โฑ๏ธ', title: '์‹œ๊ฐ„ ์ œ์•ฝ', color: 'var(--blue)', bg: 'rgba(59,130,246,.05)', bd: 'rgba(59,130,246,.15)', lines: ['์œ ์ถœ์œ  ๋„๋‹ฌ ์˜ˆ์ธก์‹œ๊ฐ„', '์˜ค์ผํŽœ์Šค ์ „๊ฐœ ์†Œ์š”์‹œ๊ฐ„', '๋ฐฉ์ œ์ • ํ˜„์žฅ ๋„์ฐฉ์‹œ๊ฐ„', '์กฐ์„ ๋ณ€ํ™˜ ์ฃผ๊ธฐ ๊ณ ๋ ค'] }, ].map((c, i) => (
{c.icon} {c.title}
{c.lines.map((l, j) => {j > 0 &&
}{l}
)}
))}
) } /* โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ PANEL 1: ๋ฐฐ์น˜ ์ด๋ก  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */ function DeploymentTheoryPanel() { return ( <> {/* ์ฐจ๋‹จ ํšจ์œจ ์ด๋ก  */}
๐Ÿ“ ์˜ค์ผํŽœ์Šค ์ฐจ๋‹จ ํšจ์œจ ์ด๋ก  (Boom Containment Efficiency)
โ‘  ์ฐจ๋‹จ ํšจ์œจ ํ•จ์ˆ˜ E(ฮธ, U)
์˜ค์ผํŽœ์Šค์˜ ์ฐจ๋‹จ ํšจ์œจ์€ ์กฐ๋ฅ˜ ์œ ์†(U)๊ณผ ์˜ค์ผํŽœ์Šค ๋ฐฉํ–ฅ๊ฐ(ฮธ)์˜ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์กฐ๋ฅ˜๊ฐ€ ์˜ค์ผํŽœ์Šค์— ์ˆ˜์ง์œผ๋กœ ์ž…์‚ฌํ• ์ˆ˜๋ก ์ฐจ๋‹จ ํšจ์œจ์ด ๋‚ฎ์•„์ง€๋ฉฐ, ์ž„๊ณ„์œ ์† ์ดˆ๊ณผ ์‹œ ๊ธฐ๋ฆ„์ด ์˜ค์ผํŽœ์Šค ํ•˜๋ถ€๋กœ ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค.
E(ฮธ,U) = 1 โˆ’ Floss(Un)
Un = U ยท sin(ฮธ) (๋ฒ•์„ ๋ฐฉํ–ฅ ์œ ์†)
E = 1 (Un โ‰ค Uc)
E = max(0, 1 โˆ’ (Un/Uc)ยฒ) (Un > Uc)
Uc: ์ž„๊ณ„์œ ์†(์•ฝ 0.35m/s = 0.7 knot)
โ‘ก ์ตœ์  ๋ฐฉํ–ฅ๊ฐ ฮธ* ์‚ฐ์ •
์˜ค์ผํŽœ์Šค ๋ฐฉํ–ฅ๊ฐ์€ ์กฐ๋ฅ˜ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ์ตœ์ ํ™”๋ฉ๋‹ˆ๋‹ค. ์ฐจ๋‹จ ๋ฉด์ ๊ณผ ์˜ค์ผ ์ˆ˜์ง‘ ํšจ์œจ์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๊ณ ๋ คํ•˜์—ฌ, ์ผ๋ฐ˜์ ์œผ๋กœ ์กฐ๋ฅ˜์— ๋Œ€ํ•ด 30ยฐ~45ยฐ ์˜ˆ๊ฐ ๋ฐฐ์น˜๊ฐ€ ์ตœ์ ์ž…๋‹ˆ๋‹ค.
ฮธ* = arcsin(Uc / U) (์ž„๊ณ„์กฐ๊ฑด)
ฮธopt = argmax [Ablock(ฮธ) ยท E(ฮธ,U)]
์‹ค์šฉ๋ฒ”์œ„: 15ยฐ โ‰ค ฮธ โ‰ค 60ยฐ
๋‹จ, ฮธ < arcsin(Uc/U) ์ด๋ฉด ๊ธฐ๋ฆ„ ํ†ต๊ณผ ๋ฐœ์ƒ
{/* Vํ˜•ยทUํ˜•ยทJํ˜• ๋ฐฐ์น˜ ํŒจํ„ด */}
๐Ÿ”ท ์˜ค์ผํŽœ์Šค ๋ฐฐ์น˜ ํ˜•ํƒœ๋ณ„ ์ด๋ก 
{/* Vํ˜• */}
Vํ˜• (Chevron)
์ง‘์œ ์  ์กฐ๋ฅ˜
์กฐ๋ฅ˜ ๋ฐฉํ–ฅ ์ •๋ฉด์—์„œ ์–‘์ธก์œผ๋กœ ํŽผ์นœ Vํ˜•. ๊ธฐ๋ฆ„์„ ์ค‘์•™ ์ง‘์œ ์ ์œผ๋กœ ์œ ๋„. ํšŒ์ˆ˜์„  ๋ฐฐ์น˜ ์šฉ์ด.
AV = Lยฒยทsin(2ฮฑ)/2
ฮฑ: ๋ฐ˜๊ฐœ๊ฐ, L: ํŽธ์ธก ๊ธธ์ด
์ตœ์  ฮฑ = 30ยฐ~45ยฐ
{/* Uํ˜• */}
Uํ˜• (Horseshoe)
ํšŒ์ˆ˜์„  ์กฐ๋ฅ˜
๋ง๊ตฝํ˜•์œผ๋กœ ๊ธฐ๋ฆ„์„ ์™„์ „ ํฌ์œ„. ํ์‡„ํ˜• ๊ตฌ์กฐ๋กœ ํšŒ์ˆ˜ ํšจ์œจ ์ตœ๊ณ . ์ €์กฐ๋ฅ˜ ํ•ด์—ญ ์ ํ•ฉ.
AU = ฯ€ยทrยฒ/2 + 2rยทh
r: ๋ฐ˜๊ฒฝ, h: ์ง์„ ๋ถ€ ๊ธธ์ด
์ „์ œ: U < 0.5 knot
{/* Jํ˜• */}
Jํ˜• (Skimming)
ํšŒ์ˆ˜ ์กฐ๋ฅ˜
์ง์„ +๊ณก์„  ์กฐํ•ฉ. ๊ธฐ๋ฆ„์„ ํ•œ์ชฝ์œผ๋กœ ํŽธํ–ฅ ์œ ๋„ํ•˜์—ฌ ์ง‘์œ . ๊ฐ•์กฐ๋ฅ˜ยท์—ฐ์•ˆ ๋ฐฐ์น˜์— ์ตœ์ .
ฮธJ = arcsin(Uc/U) + ฮด
ฮด: ์•ˆ์ „์—ฌ์œ ๊ฐ(5ยฐ~10ยฐ)
ํ™œ์šฉ: U > 0.7 knot
{/* ๋‹ค๋‹จ ๋ฐฐ์น˜ ์ด๋ก  */}
๐Ÿ”ข ๋‹ค๋‹จ๊ณ„ ์ฐจ๋‹จ์„ (Multi-Boom) ๋ฐฐ์น˜ ์ด๋ก 
๋‹จ์ผ ์˜ค์ผํŽœ์Šค๋กœ ์ฐจ๋‹จ ๋ถˆ๊ฐ€ํ•œ ๊ฒฝ์šฐ ์ง๋ ฌ ๋‹ค๋‹จ ๋ฐฐ์น˜๋กœ ๋ˆ„์  ์ฐจ๋‹จ ํšจ์œจ์„ ํ–ฅ์ƒํ•ฉ๋‹ˆ๋‹ค. n๊ฐœ ์ง๋ ฌ ๋ฐฐ์น˜ ์‹œ ๋ˆ„์  ์ฐจ๋‹จ ํšจ์œจ:
Etotal = 1 โˆ’ โˆ(1โˆ’Ei)
Ei: i๋ฒˆ์งธ ์˜ค์ผํŽœ์Šค ๋‹จ๋… ์ฐจ๋‹จํšจ์œจ
{[ { color: 'var(--green)', bg: 'rgba(34,197,94,.05)', bd: 'rgba(34,197,94,.12)', label: '2๋‹จ ์ง๋ ฌ', text: ': E_total = Eโ‚+Eโ‚‚โˆ’Eโ‚ยทEโ‚‚ (์˜ˆ: 70%+70% โ†’ 91%)' }, { color: 'var(--cyan)', bg: 'rgba(6,182,212,.05)', bd: 'rgba(6,182,212,.12)', label: '๋‹จ๊ฐ„ ๊ฑฐ๋ฆฌ', text: ': ๋ถ€ํ‘œ ์ง‘์  ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด โ‰ฅ 200m ์ด๊ฒฉ ๊ถŒ์žฅ' }, { color: 'var(--purple)', bg: 'rgba(168,85,247,.05)', bd: 'rgba(168,85,247,.12)', label: '๋ฐฐ์น˜ ์šฐ์„ ์ˆœ์œ„', text: ': ESI ๊ณ ๋“ฑ๊ธ‰ ๊ตฌ์—ญ ๋ณดํ˜ธ โ†’ ์ทจ์ˆ˜์› โ†’ ์–ดํ•ญ ์ˆœ' }, { color: 'var(--orange)', bg: 'rgba(249,115,22,.05)', bd: 'rgba(249,115,22,.12)', label: '์กฐ์„ ๋ณ€ํ™”', text: ': ์ฐฝ์กฐยท๋‚™์กฐ ์ „ํ™˜ ์‹œ ์˜ค์ผํŽœ์Šค ๋ฐฉํ–ฅ ์žฌ์กฐ์ • ํ•„์š”' }, ].map((item, i) => (
{item.label}{item.text}
))}
) } /* โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ PANEL 2: ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */ function OptimizationPanel() { return ( <> {/* ๋‹ค๋ชฉ์  ์ตœ์ ํ™” ๊ฐœ์š” */}
โš™๏ธ ๋‹ค๋ชฉ์  ์ตœ์ ํ™” ๋ฌธ์ œ (Multi-Objective Optimization)
์˜ค์ผํŽœ์Šค ๋ฐฐ์น˜ ์ตœ์ ํ™”๋Š” ์ƒ์ถฉํ•˜๋Š” ๋ณต์ˆ˜ ๋ชฉ์ ํ•จ์ˆ˜๋ฅผ ๋™์‹œ์— ๋งŒ์กฑํ•ด์•ผ ํ•˜๋Š” ์ „ํ˜•์ ์ธ ๋‹ค๋ชฉ์  ์ตœ์ ํ™” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ฐจ๋‹จ ํšจ์œจ ์ตœ๋Œ€ํ™”์™€ ์ž์› ์‚ฌ์šฉ ์ตœ์†Œํ™”๋Š” ์„œ๋กœ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋ฉฐ, ํŒŒ๋ ˆํ†  ์ตœ์ (Pareto Optimal) ํ•ด์ง‘ํ•ฉ์—์„œ ์˜์‚ฌ๊ฒฐ์ •์ž๊ฐ€ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
{/* ๋ชฉ์ ํ•จ์ˆ˜ ์ •์˜ */}
๐Ÿ“Š ๋ชฉ์ ํ•จ์ˆ˜ ๋ฐ ์ œ์•ฝ์กฐ๊ฑด ์ •์˜
๐ŸŽฏ ๋ชฉ์ ํ•จ์ˆ˜ F(x)
์ตœ๋Œ€ํ™”:
fโ‚(x) = ฮฃ Ablocked,i ยท wESI,i (๊ฐ€์ค‘ ์ฐจ๋‹จ๋ฉด์ )
fโ‚‚(x) = Tdeadline โˆ’ Tdeploy (์—ฌ์œ ์‹œ๊ฐ„)
์ตœ์†Œํ™”:
fโ‚ƒ(x) = ฮฃ Lboom,j (์ด ์˜ค์ผํŽœ์Šค ์‚ฌ์šฉ๋Ÿ‰)
fโ‚„(x) = ฮฃ Dvessel,k (๋ฐฉ์ œ์ • ์ด ์ด๋™๊ฑฐ๋ฆฌ)
๐Ÿšซ ์ œ์•ฝ์กฐ๊ฑด G(x)
gโ‚: Uยทsin(ฮธi) โ‰ค Uc โˆ€i (์ž„๊ณ„์œ ์†)
gโ‚‚: ฮฃ Lj โ‰ค Lmax (์ž์› ํ•œ๊ณ„)
gโ‚ƒ: Tdeploy,i โ‰ค Tarrive,i (์‹œ๊ฐ„ ์ œ์•ฝ)
gโ‚„: d(pi, shore) โ‰ฅ dmin (์—ฐ์•ˆ ์ด๊ฒฉ)
gโ‚…: h(pi) โ‰ฅ hmin (์ˆ˜์‹ฌ ์กฐ๊ฑด)
{/* ESI ๊ฐ€์ค‘์น˜ */}
๐Ÿ–๏ธ ESI ๊ฐ€์ค‘์น˜ wESI ์„ค๊ณ„
{[ { grade: 'ESI 1~2', desc: '๋…ธ์ถœ์•”๋ฐ˜', w: 'w = 0.2', color: 'var(--green)', bg: 'rgba(34,197,94,.06)' }, { grade: 'ESI 3~4', desc: '๋ชจ๋ž˜ํ•ด๋ณ€', w: 'w = 0.4', color: 'var(--cyan)', bg: 'rgba(6,182,212,.06)' }, { grade: 'ESI 5~6', desc: '์ž๊ฐˆยท์กฐ์•ฝ', w: 'w = 0.6', color: 'var(--yellow)', bg: 'rgba(234,179,8,.06)' }, { grade: 'ESI 7~8', desc: '๊ฐฏ๋ฒŒยท์กฐ๊ฐ„๋Œ€', w: 'w = 0.85', color: 'var(--orange)', bg: 'rgba(249,115,22,.06)' }, { grade: 'ESI 9~10', desc: '๋งน๊ทธ๋กœ๋ธŒยท์Šต์ง€', w: 'w = 1.0', color: 'var(--red)', bg: 'rgba(239,68,68,.08)', bd: 'rgba(239,68,68,.2)' }, ].map((esi, i) => (
{esi.grade}
{esi.desc}
{esi.w}
))}
{/* NSGA-II ์•Œ๊ณ ๋ฆฌ์ฆ˜ */}
๐Ÿงฌ NSGA-II (Non-dominated Sorting Genetic Algorithm II)
WING์˜ ์˜ค์ผํŽœ์Šค ๋ฐฐ์น˜ ์ตœ์ ํ™”๋Š” ๋‹ค๋ชฉ์  ์œ ์ „์•Œ๊ณ ๋ฆฌ์ฆ˜ NSGA-II(Deb et al., 2002)๋ฅผ ํ•ต์‹ฌ ์—”์ง„์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŒŒ๋ ˆํ†  ์ „๋ฉด(Pareto Front)์„ ํƒ์ƒ‰ํ•˜์—ฌ ์ฐจ๋‹จ ํšจ์œจ๊ณผ ์ž์› ํšจ์œจ์˜ ์ตœ์  ํ•ด์ง‘ํ•ฉ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
{[ '์—ผ์ƒ‰์ฒด ๊ตฌ์กฐ : [๋ฐฐ์น˜์ง€์  ์ขŒํ‘œ, ๋ฐฉํ–ฅ๊ฐฮธ, ๊ธธ์ดL, ํ˜•ํƒœ, ๋ฐฐ์น˜์ˆœ์„œ]', '์ง‘๋‹จ ํฌ๊ธฐ : 100~200๊ฐœ์ฒด ยท ์„ธ๋Œ€์ˆ˜ 50~200', '๊ต๋ฐฐ ์—ฐ์‚ฐ : SBX(Simulated Binary Crossover) ยท ฮทc=20', '๋ณ€์ด ์—ฐ์‚ฐ : ๋‹คํ•ญ์‹ ๋ณ€์ด(Polynomial Mutation) ยท ฮทm=20', '์„ ํƒ ๋ฐฉ์‹ : ๋น„์ง€๋ฐฐ ์ •๋ ฌ + ํ˜ผ์žก๋„ ๊ฑฐ๋ฆฌ(Crowding Distance)', ].map((item, i) => (
{item.split(' : ')[0]} : {item.split(' : ')[1]}
))}
NSGA-II 5๋‹จ๊ณ„ ์ง„ํ™” ๋ฃจํ”„
{[ { step: 'โ‘ ', title: '์ดˆ๊ธฐ ์ง‘๋‹จ ์ƒ์„ฑ', desc: 'ํ™•์‚ฐ์˜ˆ์ธก ๊ฒฐ๊ณผ ๊ธฐ๋ฐ˜ ๋žœ๋ค + ํœด๋ฆฌ์Šคํ‹ฑ ๋ฐฐ์น˜์•ˆ ํ˜ผํ•ฉ ์ดˆ๊ธฐํ™”' }, { step: 'โ‘ก', title: '์ ํ•ฉ๋„ ํ‰๊ฐ€', desc: '์œ ์ถœ์œ  ํ™•์‚ฐ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋กœ ๊ฐ ๋ฐฐ์น˜์•ˆ์˜ ์ฐจ๋‹จ๋ฉด์ ยท๋„๋‹ฌ์‹œ๊ฐ„ ๊ณ„์‚ฐ' }, { step: 'โ‘ข', title: '๋น„์ง€๋ฐฐ ์ •๋ ฌ', desc: '๋ชฉ์ ํ•จ์ˆ˜ ๊ณต๊ฐ„์—์„œ ํŒŒ๋ ˆํ†  ์ „๋ฉด ๊ณ„์ธต(Fโ‚, Fโ‚‚, Fโ‚ƒโ€ฆ) ๋ถ„๋ฅ˜' }, { step: 'โ‘ฃ', title: '๊ต๋ฐฐยท๋ณ€์ด', desc: 'SBX + ๋‹คํ•ญ์‹ ๋ณ€์ด๋กœ ์ž์‹ ์„ธ๋Œ€ ์ƒ์„ฑ. ์ œ์•ฝ์กฐ๊ฑด ์œ„๋ฐ˜ ์ˆ˜๋ฆฌ(repair)' }, { step: 'โ‘ค', title: '์—˜๋ฆฌํŠธ ์„ ํƒ', desc: '๋ถ€๋ชจ+์ž์‹ 2N ์ง‘๋‹จ์—์„œ ๋น„์ง€๋ฐฐ ์ •๋ ฌ+ํ˜ผ์žก๋„ ๊ธฐ์ค€์œผ๋กœ N๊ฐœ ์„ ํƒ โ†’ ์ˆ˜๋ ด๊นŒ์ง€ ๋ฐ˜๋ณต' }, ].map((item, i) => (
{item.step}
{item.title} : {item.desc}
))}
{/* ๋ณด์กฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋น„๊ต */}
๐Ÿ”ฌ ๋ณด์กฐ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋น„๊ต ์ ์šฉ
{['์•Œ๊ณ ๋ฆฌ์ฆ˜', '์œ ํ˜•', '์žฅ์ ', '๋‹จ์ ', 'WING ํ™œ์šฉ'].map(h => ( ))} {[ { name: 'NSGA-II', color: 'var(--purple)', type: '๋‹ค๋ชฉ์  GA', pros: 'ํŒŒ๋ ˆํ†  ์ „๋ฉด ํƒ์ƒ‰\n๋‹ค์–‘์„ฑ ์œ ์ง€ ์šฐ์ˆ˜', cons: '๊ณ„์‚ฐ๋น„์šฉ ๋†’์Œ\n์ˆ˜๋ ด ๋А๋ฆผ', wing: '๋ฉ”์ธ ์—”์ง„', wingColor: 'var(--cyan)' }, { name: 'PSO', color: 'var(--orange)', type: '์ž…์ž๊ตฐ์ง‘', pros: '๋น ๋ฅธ ์ˆ˜๋ ด\n๊ตฌํ˜„ ๋‹จ์ˆœ', cons: '์กฐ๊ธฐ์ˆ˜๋ ด\n๋‹ค๋ชฉ์  ์ทจ์•ฝ', wing: '๋‹จ์ผ๋ชฉ์  ๋น ๋ฅธ ๋ฐฐ์น˜', wingColor: 'var(--t2)' }, { name: 'SA', color: 'var(--blue)', type: '๋ชจ์˜๋‹ด๊ธˆ์งˆ', pros: '์ „์—ญ ํƒˆ์ถœ ์šฐ์ˆ˜\n๊ตญ์†Œ์ตœ์  ํšŒํ”ผ', cons: '๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฏผ๊ฐ\n๋А๋ฆฐ ์ˆ˜๋ ด', wing: '๊ธด๊ธ‰ ๋‹จ์ˆœ ๋ฐฐ์น˜', wingColor: 'var(--t2)' }, { name: 'Greedy+ํœด๋ฆฌ์Šคํ‹ฑ', color: 'var(--green)', type: '๊ฒฐ์ •๋ก ์ ', pros: '์ฆ‰์‹œ ๊ฒฐ๊ณผ\nํ•ด์„ ์šฉ์ด', cons: '์ „์—ญ์ตœ์  ๋ฏธ๋ณด์žฅ', wing: '์‹ค์‹œ๊ฐ„ ์ดˆ๊ธฐ ์ œ์•ˆ', wingColor: 'var(--green)' }, ].map((row, i) => ( ))}
{h}
{row.name} {row.type} {row.pros} {row.cons} {row.wing}
) } /* โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ PANEL 3: ์œ ์ฒด์—ญํ•™ ๋ชจ๋ธ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */ function FluidDynamicsPanel() { return ( <> {/* ์œ ๋™ ์ˆ˜์น˜ ๋ชจ๋ธ */}
๐ŸŒŠ ์˜ค์ผํŽœ์Šค ์ฃผ๋ณ€ ์œ ๋™ ์ˆ˜์น˜ ๋ชจ๋ธ
โ‘  ์˜ค์ผํŽœ์Šค ํ•ญ๋ ฅ ๋ชจ๋ธ
์˜ค์ผํŽœ์Šค์— ์ž‘์šฉํ•˜๋Š” ํ•ญ๋ ฅ์€ ์กฐ๋ฅ˜์†๋„์˜ ์ œ๊ณฑ์— ๋น„๋ก€ํ•ฉ๋‹ˆ๋‹ค. ์˜ค์ผํŽœ์Šค ๊ตฌ์กฐ ๋ณ€ํ˜•(catenaryํ˜•ํƒœ)์„ ๊ณ ๋ คํ•œ ๋™์  ํ•ญ๋ ฅ ๊ณ„์‚ฐ.
FD = ยฝ ยท ฯ ยท CD ยท A ยท Unยฒ
T = FD ยท L / (2ยทsin(ฮฑ))
CD: ํ•ญ๋ ฅ๊ณ„์ˆ˜(โ‰ˆ1.2), A: ์ˆ˜์ค‘ ํˆฌ์˜๋ฉด์ 
T: ์—ฐ๊ฒฐ๋ถ€ ์žฅ๋ ฅ, ฮฑ: ์ฒด์ธ๊ฐ๋„
โ‘ก ๊ธฐ๋ฆ„ ํ†ต๊ณผ(Splash-over) ์กฐ๊ฑด
์กฐ๋ฅ˜ ์œ ์†์ด ์ž„๊ณ„๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด ๊ธฐ๋ฆ„์ด ํŒŒ๋„๋ฅผ ํƒ€๊ณ  ์˜ค์ผํŽœ์Šค๋ฅผ ๋„˜์–ด๊ฐ€๋Š” Splash-over๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
Fr = Un / โˆš(gยทฮ”ฯ/ฯยทh)
Splash-over: Fr > 0.5~0.6
Fr: ์ˆ˜์ • Froude์ˆ˜, h: ์˜ค์ผํŽœ์Šค ์ˆ˜์ค‘๊นŠ์ด
ฮ”ฯ/ฯ: ๊ธฐ๋ฆ„-ํ•ด์ˆ˜ ๋ฐ€๋„๋น„ (~0.15)
{/* Catenary ๋ณ€ํ˜• ๋ชจ๋ธ */}
๐Ÿ”— ์˜ค์ผํŽœ์Šค ํ˜„์ˆ˜์„ (Catenary) ๋ณ€ํ˜• ๋ชจ๋ธ
์กฐ๋ฅ˜์™€ ๋ฐ”๋žŒ์— ์˜ํ•ด ์˜ค์ผํŽœ์Šค๋Š” ํ˜„์ˆ˜์„ (Catenary) ํ˜•ํƒœ๋กœ ๋ณ€ํ˜•๋ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์ฐจ๋‹จ ๊ธธ์ด๊ฐ€ ์„ค๊ณ„ ๊ธธ์ด๋ณด๋‹ค ์งง์•„์ง€๋ฉฐ, ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๋ณ€ํ˜• ํ›„ ์œ ํšจ ์ฐจ๋‹จ ๊ธธ์ด Leff๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
y(x) = aยทcosh(x/a) โˆ’ a
Larc = 2aยทsinh(Lspan/(2a))
Leff = Lspan ยท cos(ฯ†max)
a: catenary ํŒŒ๋ผ๋ฏธํ„ฐ, ฯ†: ์ตœ๋Œ€ ํŽธํ–ฅ๊ฐ
๋ณ€ํ˜• ๋‹จ๊ณ„๋ณ„ ์œ ํšจ ์ฐจ๋‹จ ๊ธธ์ด ๋ณด์ •
{[ { cond: 'U < 0.3 knot', result: 'L_eff โ‰ˆ L (์ง์„  ์œ ์ง€)', bg: 'rgba(34,197,94,.05)', bd: 'rgba(34,197,94,.12)' }, { cond: '0.3~0.7 knot', result: 'L_eff = 0.8~0.95 L (๊ฒฝ๋ฏธ ๋ณ€ํ˜•)', bg: 'rgba(234,179,8,.05)', bd: 'rgba(234,179,8,.12)' }, { cond: '0.7~1.0 knot', result: 'L_eff = 0.5~0.8 L (Catenary ํ˜„์ €)', bg: 'rgba(249,115,22,.05)', bd: 'rgba(249,115,22,.12)' }, { cond: 'U > 1.0 knot', result: '๊ธฐ๋ฆ„ ํ†ต๊ณผ ์œ„ํ—˜ ยท ๋ฐฐ์น˜ ์žฌ๊ณ„์‚ฐ', bg: 'rgba(239,68,68,.05)', bd: 'rgba(239,68,68,.12)', danger: true }, ].map((item, i) => (
{item.cond} โ†’ {item.result}
))}
{/* ์œ ๋ง‰ ํฌ์ง‘ ๋ชจ๋ธ */}
๐Ÿ›ข๏ธ ์˜ค์ผํŽœ์Šค ๋‚ด ์œ ๋ง‰ ํฌ์ง‘ ๋™์—ญํ•™
ํฌ์ง‘ ๊ธฐ๋ฆ„ ์ฒด์  ๋ณ€ํ™”์œจ
dVoil/dt = Qin โˆ’ Qout โˆ’ Qloss
Qin = UoilยทhoilยทLeff
Qout = Qskim (ํšŒ์ˆ˜๊ธฐ ํก์ž…๋Ÿ‰)
Qloss = ์ฆ๋ฐœ+์†Œ์‚ฐ ์†์‹ค
์ตœ์  ํšŒ์ˆ˜ ํƒ€์ด๋ฐ
ํฌ์ง‘ ๊ธฐ๋ฆ„ ์ฒด์ ์ด ์˜ค์ผํŽœ์Šค ์ €์žฅ ์šฉ๋Ÿ‰์˜ 70~80%์— ๋„๋‹ฌํ•˜๋ฉด Skimmer ํšŒ์ˆ˜ ์ž‘์—…์„ ๊ฐœ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ์˜ค์ผ overflow ๋ฐœ์ƒ. WING์ด ์‹ค์‹œ๊ฐ„ ์ฒด์  ๋ชจ๋‹ˆํ„ฐ๋ง ํ›„ ํšŒ์ˆ˜ ์•Œ๋žŒ ๋ฐœ๋ น.
) } /* โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ PANEL 4: ํ˜„์žฅ ์ ์šฉ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */ function FieldApplicationPanel() { const steps = [ { num: 1, color: 'var(--orange)', bg: 'rgba(249,115,22,.05)', bd: 'rgba(249,115,22,.15)', numBg: 'rgba(249,115,22,.15)', numBd: 'rgba(249,115,22,.3)', title: 'ํ™•์‚ฐ์˜ˆ์ธก ๊ฒฐ๊ณผ ๋ถ„์„ โ€” ์œ„ํ˜‘ ๊ตฌ์—ญ ๋ฐ ๋„๋‹ฌ์‹œ๊ฐ„ ์‚ฐ์ถœ', desc: 'KOSPSยทPOSEIDONยทOpenDrift ์•™์ƒ๋ธ” ์˜ˆ์ธก ๊ฒฐ๊ณผ์—์„œ ์œ ์ถœ์œ  ํ™•์‚ฐ ๊ฒฝ๊ณ„์„ (Pollution Boundary)๊ณผ ๊ฐ ESI ๊ตฌ์—ญ๋ณ„ ๋„๋‹ฌ ์˜ˆ์ƒ์‹œ๊ฐ„(T_arrive)์„ ์‚ฐ์ถœํ•ฉ๋‹ˆ๋‹ค. ์‹ ๋ขฐ๋„ 70% ์ด์ƒ ์˜ˆ์ธก ๊ฒฝ๊ณ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ฐจ๋‹จ ์ „๋žต ์˜์—ญ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.' }, { num: 2, color: 'var(--cyan)', bg: 'rgba(6,182,212,.05)', bd: 'rgba(6,182,212,.15)', numBg: 'rgba(6,182,212,.15)', numBd: 'rgba(6,182,212,.3)', title: 'ํ•ด์–‘ํ™˜๊ฒฝ ์กฐ๊ฑด ํ™•์ธ โ€” ์กฐ๋ฅ˜ยทํŒŒ๊ณ ยท์ˆ˜์‹ฌยท๊ธฐ์ƒ ์ž…๋ ฅ', desc: 'CHARRY ์ฑ„๋ฆฌ๋ชจ๋ธ ์กฐ๋ฅ˜์˜ˆ์ธก๊ฐ’, KMA UM ํ’์†ยทํ’ํ–ฅ, ์ˆ˜์‹ฌ๊ฒฉ์ž, NGSST ์ˆ˜์˜จ์„ ์ž๋™ ์—ฐ๊ณ„ํ•˜์—ฌ ๊ฐ ํ›„๋ณด ๋ฐฐ์น˜์ง€์ ์˜ U_n(๋ฒ•์„ ๋ฐฉํ–ฅ ์œ ์†)์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์ž„๊ณ„์œ ์† 0.7 knot๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ์ง€์ ์€ ์ž๋™์œผ๋กœ Jํ˜•ยท๋‹ค๋‹จ ๋ฐฐ์น˜๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.' }, { num: 3, color: 'var(--yellow)', bg: 'rgba(234,179,8,.05)', bd: 'rgba(234,179,8,.15)', numBg: 'rgba(234,179,8,.15)', numBd: 'rgba(234,179,8,.3)', title: 'ํ›„๋ณด ์ฐจ๋‹จ์„  ๊ฒฉ์ž ํƒ์ƒ‰ โ€” ๋ฐฐ์น˜ ๊ฐ€๋Šฅ์ง€์  ์ƒ์„ฑ', desc: 'ํ™•์‚ฐ ์˜ˆ์ธก ๊ฒฝ๊ณ„๋ฅผ ๋”ฐ๋ผ 500m ๊ฐ„๊ฒฉ ๊ฒฉ์ž๋กœ ํ›„๋ณด ๋ฐฐ์น˜์ง€์ ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ง€์ ์—์„œ ์กฐ๋ฅ˜ ์กฐ๊ฑดยท์ˆ˜์‹ฌยทํ•ด์•ˆ์„  ์ด๊ฒฉยท๋ฐฉ์ œ์ • ์ ‘๊ทผ ๊ฐ€๋Šฅ์„ฑ์„ ๋™์‹œ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค. ESI ๊ณ ๋“ฑ๊ธ‰ ๊ตฌ์—ญ ์ „๋ฐฉ 2km ์ด๋‚ด ์ง€์ ์— ์šฐ์„  ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.' }, { num: 4, color: 'var(--purple)', bg: 'rgba(168,85,247,.05)', bd: 'rgba(168,85,247,.15)', numBg: 'rgba(168,85,247,.15)', numBd: 'rgba(168,85,247,.3)', title: 'NSGA-II ์ตœ์ ํ™” ์‹คํ–‰ โ€” ํŒŒ๋ ˆํ†  ์ตœ์  ๋ฐฐ์น˜์•ˆ ์‚ฐ์ถœ', desc: 'ํ›„๋ณด ๋ฐฐ์น˜์ง€์ ยท๋ฐฉํ–ฅ๊ฐยทํ˜•ํƒœ ์กฐํ•ฉ์„ ์—ผ์ƒ‰์ฒด๋กœ ์ธ์ฝ”๋”ฉํ•˜์—ฌ NSGA-II ๋‹ค๋ชฉ์  ์œ ์ „์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜๋ ด ํ›„ ํŒŒ๋ ˆํ†  ์ „๋ฉด์—์„œ 3~5๊ฐœ ์ถ”์ฒœ ๋ฐฐ์น˜์•ˆ์„ ์ œ์‹œํ•˜๋ฉฐ, ์˜์‚ฌ๊ฒฐ์ •์ž๊ฐ€ ์ฐจ๋‹จ ํšจ์œจ๊ณผ ์ž์› ์‚ฌ์šฉ๋Ÿ‰์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๋ณด๊ณ  ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.' }, { num: 5, color: 'var(--green)', bg: 'rgba(34,197,94,.05)', bd: 'rgba(34,197,94,.15)', numBg: 'rgba(34,197,94,.15)', numBd: 'rgba(34,197,94,.3)', title: '์‹ค์‹œ๊ฐ„ ์žฌ์ตœ์ ํ™” โ€” ์กฐ์„ ๋ณ€ํ™˜ยท์กฐ๋ฅ˜ ๋ณ€ํ™” ๋Œ€์‘', desc: '์ฐฝ์กฐโ†’๋‚™์กฐ ์ „ํ™˜ ์‹œ(์•ฝ 6์‹œ๊ฐ„ ์ฃผ๊ธฐ) ์กฐ๋ฅ˜ ๋ฐฉํ–ฅ ์—ญ์ „์— ๋”ฐ๋ฅธ ์˜ค์ผํŽœ์Šค ์žฌ๋ฐฐ์น˜ ์•Œ๋žŒ์„ ๋ฐœ๋ นํ•ฉ๋‹ˆ๋‹ค. ํ™•์‚ฐ ์˜ˆ์ธก์ด ๊ฐฑ์‹ ๋  ๋•Œ๋งˆ๋‹ค ๋ฐฐ์น˜ ์ตœ์ ํ™”๋ฅผ ์ž๋™ ์žฌ์‹คํ–‰ํ•˜์—ฌ ๋ฐฉ์ œ๋Œ€์‘ ์ฒด๊ณ„๋ฅผ ๋™์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.' }, ] return ( <> {/* ๋ฐฐ์น˜ 5๋‹จ๊ณ„ ์ ˆ์ฐจ */}
๐Ÿ—บ๏ธ WING ์˜ค์ผํŽœ์Šค ๋ฐฐ์น˜ ์˜์‚ฌ๊ฒฐ์ • 5๋‹จ๊ณ„
{steps.map(step => (
{step.num}
{step.title}
{step.desc}
))}
{/* ํ•ด์—ญ๋ณ„ ์ ์šฉ ํŠน์„ฑ */}
๐Ÿ“ ํ•ด์—ญ๋ณ„ ์ ์šฉ ํŠน์„ฑ ๋ฐ ์ „๋žต
{[ { icon: '๐ŸŒŠ', title: '์„œํ•ด (์กฐ์ฐจ ๋Œ€ํ˜•)', color: 'var(--blue)', bg: 'rgba(59,130,246,.05)', bd: 'rgba(59,130,246,.12)', desc: '์ตœ๋Œ€ ์กฐ์ฐจ 9m (์ธ์ฒœ), ์กฐ๋ฅ˜ ์ตœ๋Œ€ 3~5 knot. Jํ˜• ๋ฐฐ์น˜ ์ฃผ๋ ฅ. ์กฐ์„ ์ „ํ™˜ ์žฌ๋ฐฐ์น˜ ํ•„์ˆ˜. ์•ต์ปค๋ง ์ˆ˜์‹ฌ ๊ธ‰๋ณ€ํ™” ์ฃผ์˜.' }, { icon: '๐ŸŒฟ', title: '๋‚จํ•ด (๋‹ค๋„ํ•ด)', color: 'var(--green)', bg: 'rgba(34,197,94,.05)', bd: 'rgba(34,197,94,.12)', desc: '๋ณต์žกํ•œ ํ•ด์•ˆ์„ ยท์„ฌ. ์กฐ๋ฅ˜ 1~2 knot. Vํ˜•ยทUํ˜• ๋ณตํ•ฉ ๋ฐฐ์น˜. ์ข์€ ์ˆ˜๋กœ ํ†ต์ œ ์šฐ์„ . ESI ๊ณ ๋“ฑ๊ธ‰ ๊ฐฏ๋ฒŒ ๋ณดํ˜ธ.' }, { icon: '๐Ÿ”๏ธ', title: '๋™ํ•ด (์‹ฌํ•ดํ˜•)', color: 'var(--orange)', bg: 'rgba(249,115,22,.05)', bd: 'rgba(249,115,22,.12)', desc: '์กฐ์ฐจ ์†Œ(0.3m), ๋„ˆ์šธยทํŒŒ๊ณ  ๋†’์Œ. ์กฐ๋ฅ˜ 0.5~1 knot. Vํ˜• ์ง‘์ค‘. ๊ณ ํŒŒ๋ž‘ ์‹œ ๋ฐฐ์น˜ ์ œํ•œ. ์ˆ˜์˜จ์•ฝ์ธต ๊ณ ๋ ค.' }, ].map((area, i) => (
{area.icon} {area.title}
{area.desc}
))}
) } /* โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ PANEL 5: ์ฐธ๊ณ ๋ฌธํ—Œ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */ function ReferencesPanel() { const categories = [ { title: 'โš™๏ธ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜', color: 'var(--purple)', bg: 'rgba(168,85,247,.1)', bd: 'rgba(168,85,247,.25)', refs: [ { title: 'A Fast and Elitist Multiobjective Genetic Algorithm: NSGA-II', author: 'Deb, K., Pratap, A., Agarwal, S., & Meyarivan, T. | IEEE Trans. Evol. Comput. 6(2):182โ€“197, 2002', desc: 'NSGA-II ์›์ „ ยท ๋น„์ง€๋ฐฐ ์ •๋ ฌ + ํ˜ผ์žก๋„ ๊ฑฐ๋ฆฌ ยท ํŒŒ๋ ˆํ†  ์ „๋ฉด ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ยท WING ๋‹ค๋ชฉ์  ์ตœ์ ํ™” ์—”์ง„์˜ ํ•ต์‹ฌ ์ด๋ก  ๊ธฐ๋ฐ˜' }, { title: 'An Emergency Scheduling Model for Oil Containment Boom in Dynamically Changing Marine Oil Spills', author: 'Xu, Y., Zhang, L., Zheng, P., Liu, G., & Zhao, D. | Ningbo University | Systems 2025, 13, 716', desc: 'IMOGWO ๋‹ค๋ชฉ์  ์ตœ์ ํ™” ยท ์˜ค์ผํ•„๋ฆ„ ๋™์  ๋ชจ๋ธ ยท ๊ฒฝ์ œยท์ƒํƒœ ์†์‹ค ์ •๋Ÿ‰ํ™” ยท ์ฃผ์‚ฐํ•ด์—ญ ์ผ€์ด์Šค ์Šคํ„ฐ๋””', highlight: true }, { title: '๋“ฑ๋กํŠนํ—ˆ 10-1567431 ๊ธฐ๋ฐ˜ ์œ ์ถœ์œ  ํ™•์‚ฐ์˜ˆ์ธก-๋ฐฉ์ œ ์—ฐ๋™ ์‹œ์Šคํ…œ', author: '์ด๋ฌธ์ง„ ์™ธ | ํ•œ๊ตญํ•ด์–‘๊ณผํ•™๊ธฐ์ˆ ์› | 2015', desc: 'KOSPS ๊ธฐ๋ฐ˜ ํ™•์‚ฐ์˜ˆ์ธก-์˜ค์ผํŽœ์Šค ๋ฐฐ์น˜ ์—ฐ๋™ ์ฒด๊ณ„ ์›์ „ ยท ESI ๋ฐฉ์ œ์ •๋ณด์ง€๋„ ์—ฐ๋™ ยท ์ทจ์†ก๋ฅ˜ ๊ฒฝํ—˜์‹ ๊ธฐ๋ฐ˜ ๋ฐฉํ–ฅ๊ฐ ์‚ฐ์ • ๊ทผ๊ฑฐ' }, ] }, { title: '๐ŸŒŠ ์œ ์ฒด์—ญํ•™ ์ด๋ก ', color: 'var(--blue)', bg: 'rgba(59,130,246,.1)', bd: 'rgba(59,130,246,.25)', refs: [ { title: 'Oil Boom Failure: Critical Velocity and Boom Design', author: 'Leibovich, S. | Annual Review of Fluid Mechanics 8:177โ€“197, 1976', desc: '์˜ค์ผํŽœ์Šค ์ž„๊ณ„์œ ์† ์ด๋ก  ์›์ „ ยท Froude์ˆ˜ ๊ธฐ๋ฐ˜ Splash-over ์กฐ๊ฑด ยท ๋ฐฉํ–ฅ๊ฐ-์ฐจ๋‹จํšจ์œจ ๊ด€๊ณ„์‹' }, { title: 'Dynamic Behavior of Oil Containment Booms in Currents', author: 'Delvigne, G.A.L. | Spill Science & Technology Bulletin 5(3-4):181โ€“196, 1999', desc: '์กฐ๋ฅ˜ ์ค‘ ์˜ค์ผํŽœ์Šค ํ•ญ๋ ฅยท๋ณ€ํ˜• ๋™์—ญํ•™ ยท Catenary ํ˜•ํƒœ ํ•ด์„ ยท ์‹ค์šฉ ๋ฐฐ์น˜ ์„ค๊ณ„ ๊ธฐ์ค€' }, { title: 'Oil Boom Containment Efficiency in Waves and Currents', author: 'Wicks, M. | Proceedings of the Joint Conference on Prevention and Control of Oil Spills, 1969', desc: 'ํŒŒ๋ž‘+์กฐ๋ฅ˜ ๋ณตํ•ฉ ํ™˜๊ฒฝ์—์„œ ์˜ค์ผํŽœ์Šค ํšจ์œจ ์‹คํ—˜ ยท Vํ˜•ยทUํ˜• ์„ฑ๋Šฅ ๋น„๊ต ๊ธฐ์ดˆ ์ž๋ฃŒ' }, { title: 'Experimental, Numerical and Optimisation Study of Oil Spill Containment Boom', author: 'Muttin, F., Guyot, F., Nouchi, S. & Variot, B. | Coastal Environment V, WIT Press, 2004', desc: '์œ ์ฒด-๊ตฌ์กฐ ์ƒํ˜ธ์ž‘์šฉ ยท 1.5D/2.5D ๊ตฌ์กฐ๋ชจ๋ธ ยท ์œ ์ „์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ตœ์ ํ™” ยท SPH ์ˆ˜์น˜ํ•ด๋ฒ• ยท ERIKAยทPRESTIGE ์‚ฌ๊ณ  ๊ฒ€์ฆ', highlight: true }, ] }, { title: '๐Ÿ“ ์˜ค์ผํŽœ์Šค ๋ฐฐ์น˜ ์„ค๊ณ„', color: 'var(--cyan)', bg: 'rgba(6,182,212,.1)', bd: 'rgba(6,182,212,.25)', refs: [ { title: 'Optimization of an Oil Boom Arrangement', author: 'Fang, J. & Wong, K.-F.V. | Department of Mechanical Engineering, University of Miami', desc: '์˜ค์ผํŽœ์Šค ๋ฐฐ์น˜ ํ˜•ํƒœ(Vํ˜•ยทUํ˜•ยทJํ˜•) ์ตœ์ ํ™” ์—ฐ๊ตฌ ยท ์กฐ๋ฅ˜ ๋ฐฉํ–ฅ๊ฐ๊ณผ ์ฐจ๋‹จํšจ์œจ ๊ด€๊ณ„ ์ˆ˜์น˜ ๋ถ„์„ ยท ๋ฐฉ์ œ์ • ์˜ˆ์ธ๊ฐ๋„๋ณ„ ์„ฑ๋Šฅ ๋น„๊ต' }, ] }, { title: '๐Ÿ—บ๏ธ ๋ฐฉ์ œ ์šด์šฉ ๊ธฐ์ค€', color: 'var(--green)', bg: 'rgba(34,197,94,.1)', bd: 'rgba(34,197,94,.25)', refs: [ { title: '๊ธฐ๋ฆ„์˜ค์—ผ๋ฐฉ์ œ์‹œ ์˜ค์ผํŽœ์Šค ์‚ฌ์šฉ์ง€์นจ (ITOPF ๋ฐฉ์ œ๊ธฐ์ˆ ์ •๋ณด๋ฌธ์„œ 3)', author: 'ITOPF | ํ•ด์–‘๊ฒฝ์ฐฐ์ฒญยทํ•ด์–‘ํ™˜๊ฒฝ๊ด€๋ฆฌ๊ณต๋‹จ ๋ฒˆ์—ญ | ยฉ 2011 ITOPF Ltd.', desc: '์ปคํŠผํ˜•ยทํŽœ์Šคํ˜•ยทํ•ด์•ˆ์šฉ ๋ถ„๋ฅ˜ ยท 6๊ฐ€์ง€ ๊ธฐ๋ฆ„ ์œ ์‹ค ๋ฉ”์ปค๋‹ˆ์ฆ˜ ยท ํž˜ ๊ณ„์‚ฐ ๊ณต์‹ F=100ยทAยทVยฒ ยท ์œ ์†๋ณ„ ์ตœ๋Œ€ ์„ค์น˜๊ฐ๋„ ํ‘œ', highlight: true }, { title: 'NOAA ESI ๋ฐฉ์ œ์ •๋ณด์ง€๋„ ๊ธฐ๋ฐ˜ ์˜ค์ผํŽœ์Šค ์šฐ์„  ๋ฐฐ์น˜ ์ „๋žต', author: 'NOAA Office of Response and Restoration | Open Water Oil Identification Manual, 2013', desc: 'ESI 1~10 ๋“ฑ๊ธ‰๋ณ„ ๋ฐฉ์ œ ์šฐ์„ ์ˆœ์œ„ ยท ์˜ค์ผํŽœ์Šค ๊ฐ€์ค‘ ๋ฐฐ์น˜ ์ „๋žต ยท ์ทจ์ˆ˜์›ยท์–ดํ•ญ ๋ณดํ˜ธ ๊ธฐ์ค€' }, { title: 'ํ•ด์–‘๊ฒฝ์ฐฐ์ฒญ ํ•ด์–‘์˜ค์—ผ๋ฐฉ์ œ ์—…๋ฌด๋งค๋‰ด์–ผ โ€” ์˜ค์ผํŽœ์Šค ์ „๊ฐœ ์ ˆ์ฐจ', author: 'ํ•ด์–‘๊ฒฝ์ฐฐ์ฒญ ํ•ด์–‘์˜ค์—ผ๋Œ€์‘๊ตญ | ๋ฐฉ์ œ์—…๋ฌด ๊ธฐ๋ณธ์ง€์นจ, ์ตœ์‹ ํŒ', desc: '๊ตญ๋‚ด ํ•ด์—ญ ์˜ค์ผํŽœ์Šค ์šด์šฉ ๋ฒ•์  ๊ธฐ์ค€ ยท ๋ฐฉ์ œ์ • ์—ฐ๊ณ„ ์ „๊ฐœ ์ ˆ์ฐจ ยท ์„œํ•ด/๋‚จํ•ด/๋™ํ•ด ํ•ด์—ญ๋ณ„ ์šด์šฉ ํŠน์„ฑ' }, ] }, ] return ( <>
๐Ÿ“š ์˜ค์ผํŽœ์Šค ๋ฐฐ์น˜ ์ตœ์ ํ™” ์ด๋ก  ๊ทผ๊ฑฐ ๋ฌธํ—Œ
์ด 12ํŽธ ยท 4๊ฐœ ์นดํ…Œ๊ณ ๋ฆฌ
{categories.map((cat, ci) => (
{cat.title}
{cat.refs.map((ref, ri) => (
{ri + 1 === 1 ? 'โ‘ ' : ri + 1 === 2 ? 'โ‘ก' : ri + 1 === 3 ? 'โ‘ข' : 'โ‘ฃ'}
{ref.title}
{ref.author}
{ref.desc}
))}
))} ) }