|
|
<!DOCTYPE html>
|
|
|
<html>
|
|
|
<head>
|
|
|
<meta charset="UTF-8">
|
|
|
<title>Grid-Responsive MAC-DAC System - Technical Diagram</title>
|
|
|
<style>
|
|
|
* { box-sizing: border-box; }
|
|
|
body {
|
|
|
font-family: "Helvetica Neue", Arial, sans-serif;
|
|
|
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
|
|
|
min-height: 100vh;
|
|
|
margin: 0;
|
|
|
padding: 30px;
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
align-items: center;
|
|
|
}
|
|
|
|
|
|
.main-title {
|
|
|
color: #fff;
|
|
|
text-align: center;
|
|
|
margin-bottom: 30px;
|
|
|
}
|
|
|
.main-title h1 {
|
|
|
font-size: 28px;
|
|
|
margin: 0 0 10px 0;
|
|
|
background: linear-gradient(90deg, #00d9ff, #00ff88);
|
|
|
-webkit-background-clip: text;
|
|
|
-webkit-text-fill-color: transparent;
|
|
|
background-clip: text;
|
|
|
letter-spacing: 2px;
|
|
|
}
|
|
|
.main-title p {
|
|
|
font-size: 14px;
|
|
|
color: #8892b0;
|
|
|
margin: 5px 0;
|
|
|
}
|
|
|
|
|
|
.drawing-board {
|
|
|
width: 1200px;
|
|
|
background: #fdfdfd;
|
|
|
border-radius: 8px;
|
|
|
box-shadow: 0 20px 60px rgba(0,0,0,0.4);
|
|
|
overflow: hidden;
|
|
|
}
|
|
|
|
|
|
.diagram-container {
|
|
|
padding: 20px;
|
|
|
background: linear-gradient(180deg, #fafbfc 0%, #f0f2f5 100%);
|
|
|
}
|
|
|
|
|
|
|
|
|
text { font-family: 'Consolas', 'Monaco', monospace; font-size: 11px; fill: #333; }
|
|
|
.pipe { fill: none; stroke: #2c3e50; stroke-width: 4; }
|
|
|
.pipe-thin { fill: none; stroke: #555; stroke-width: 2; }
|
|
|
.equipment { fill: url(#metalGradient); stroke: #1a1a2e; stroke-width: 2; }
|
|
|
.jacket { fill: rgba(100, 181, 246, 0.2); stroke: #1976d2; stroke-width: 2; stroke-dasharray: 6,3; }
|
|
|
.instrument { fill: #fff; stroke: #333; stroke-width: 1.5; }
|
|
|
.liquid { fill: url(#liquidGradient); }
|
|
|
.arrow { fill: #333; }
|
|
|
.label-box { fill: #fff; stroke: #ddd; rx: 4; }
|
|
|
.pump-body { fill: url(#pumpGradient); stroke: #333; stroke-width: 2; }
|
|
|
.heat-exchanger { fill: url(#heatGradient); stroke: #c62828; stroke-width: 2; }
|
|
|
.calciner { fill: url(#calcinerGradient); stroke: #333; stroke-width: 2; }
|
|
|
.stream-label { font-size: 9px; fill: #666; }
|
|
|
.component-label { font-size: 12px; font-weight: bold; fill: #1a1a2e; }
|
|
|
.grid-signal { fill: none; stroke: #e53935; stroke-width: 3; stroke-dasharray: 8,4; }
|
|
|
.control-signal { fill: none; stroke: #7b1fa2; stroke-width: 1.5; stroke-dasharray: 4,2; }
|
|
|
.steam-line { fill: none; stroke: #ff9800; stroke-width: 3; stroke-dasharray: 10,5; }
|
|
|
.slurry-line { fill: none; stroke: #795548; stroke-width: 4; }
|
|
|
|
|
|
.legend-box {
|
|
|
position: absolute;
|
|
|
bottom: 100px;
|
|
|
left: 20px;
|
|
|
background: rgba(255,255,255,0.95);
|
|
|
border: 1px solid #ddd;
|
|
|
border-radius: 6px;
|
|
|
padding: 12px;
|
|
|
font-size: 10px;
|
|
|
}
|
|
|
.legend-item { display: flex; align-items: center; margin: 4px 0; }
|
|
|
.legend-line { width: 30px; height: 4px; margin-right: 8px; border-radius: 2px; }
|
|
|
|
|
|
.title-block {
|
|
|
background: linear-gradient(135deg, #1a1a2e, #0f3460);
|
|
|
padding: 20px 30px;
|
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
|
border-top: 3px solid #00d9ff;
|
|
|
}
|
|
|
.title-block-left h2 {
|
|
|
font-size: 16px;
|
|
|
margin: 0 0 8px 0;
|
|
|
color: #fff;
|
|
|
text-transform: uppercase;
|
|
|
letter-spacing: 1px;
|
|
|
}
|
|
|
.title-block-left p { font-size: 11px; margin: 3px 0; color: #8892b0; }
|
|
|
.title-block-right { text-align: right; }
|
|
|
.title-block-right p { font-size: 11px; margin: 3px 0; color: #8892b0; }
|
|
|
.title-block-right strong { color: #00d9ff; }
|
|
|
|
|
|
.specs-panel {
|
|
|
background: #fff;
|
|
|
border-radius: 8px;
|
|
|
margin-top: 30px;
|
|
|
width: 1200px;
|
|
|
box-shadow: 0 10px 40px rgba(0,0,0,0.3);
|
|
|
overflow: hidden;
|
|
|
}
|
|
|
.specs-header {
|
|
|
background: linear-gradient(135deg, #1a1a2e, #0f3460);
|
|
|
padding: 15px 25px;
|
|
|
border-bottom: 2px solid #00d9ff;
|
|
|
}
|
|
|
.specs-header h3 {
|
|
|
margin: 0;
|
|
|
color: #fff;
|
|
|
font-size: 16px;
|
|
|
letter-spacing: 1px;
|
|
|
}
|
|
|
.specs-grid {
|
|
|
display: grid;
|
|
|
grid-template-columns: repeat(4, 1fr);
|
|
|
gap: 20px;
|
|
|
padding: 25px;
|
|
|
}
|
|
|
.spec-card {
|
|
|
background: linear-gradient(135deg, #f8f9fa, #e9ecef);
|
|
|
border-radius: 8px;
|
|
|
padding: 15px;
|
|
|
border-left: 4px solid #00d9ff;
|
|
|
}
|
|
|
.spec-card h4 {
|
|
|
margin: 0 0 10px 0;
|
|
|
font-size: 12px;
|
|
|
color: #1a1a2e;
|
|
|
text-transform: uppercase;
|
|
|
letter-spacing: 0.5px;
|
|
|
}
|
|
|
.spec-card ul {
|
|
|
margin: 0;
|
|
|
padding-left: 15px;
|
|
|
font-size: 11px;
|
|
|
color: #555;
|
|
|
line-height: 1.6;
|
|
|
}
|
|
|
|
|
|
.control-logic {
|
|
|
margin-top: 30px;
|
|
|
width: 1200px;
|
|
|
background: #fff;
|
|
|
border-radius: 8px;
|
|
|
box-shadow: 0 10px 40px rgba(0,0,0,0.3);
|
|
|
overflow: hidden;
|
|
|
}
|
|
|
.control-header {
|
|
|
background: linear-gradient(135deg, #7b1fa2, #4a148c);
|
|
|
padding: 15px 25px;
|
|
|
border-bottom: 2px solid #e040fb;
|
|
|
}
|
|
|
.control-header h3 {
|
|
|
margin: 0;
|
|
|
color: #fff;
|
|
|
font-size: 16px;
|
|
|
letter-spacing: 1px;
|
|
|
}
|
|
|
.control-content {
|
|
|
display: grid;
|
|
|
grid-template-columns: 1fr 1fr 1fr;
|
|
|
gap: 20px;
|
|
|
padding: 25px;
|
|
|
}
|
|
|
.mode-card {
|
|
|
border-radius: 8px;
|
|
|
padding: 20px;
|
|
|
text-align: center;
|
|
|
}
|
|
|
.mode-surplus {
|
|
|
background: linear-gradient(135deg, #e8f5e9, #c8e6c9);
|
|
|
border: 2px solid #4caf50;
|
|
|
}
|
|
|
.mode-standard {
|
|
|
background: linear-gradient(135deg, #fff3e0, #ffe0b2);
|
|
|
border: 2px solid #ff9800;
|
|
|
}
|
|
|
.mode-idle {
|
|
|
background: linear-gradient(135deg, #ffebee, #ffcdd2);
|
|
|
border: 2px solid #f44336;
|
|
|
}
|
|
|
.mode-card h4 {
|
|
|
margin: 0 0 10px 0;
|
|
|
font-size: 14px;
|
|
|
text-transform: uppercase;
|
|
|
}
|
|
|
.mode-card .condition {
|
|
|
font-size: 11px;
|
|
|
color: #666;
|
|
|
margin-bottom: 10px;
|
|
|
font-family: 'Consolas', monospace;
|
|
|
background: rgba(0,0,0,0.05);
|
|
|
padding: 8px;
|
|
|
border-radius: 4px;
|
|
|
}
|
|
|
.mode-card .action {
|
|
|
font-size: 12px;
|
|
|
color: #333;
|
|
|
font-weight: 500;
|
|
|
}
|
|
|
.mode-card .rpm {
|
|
|
font-size: 20px;
|
|
|
font-weight: bold;
|
|
|
margin-top: 10px;
|
|
|
}
|
|
|
</style>
|
|
|
</head>
|
|
|
<body>
|
|
|
|
|
|
<div class="main-title">
|
|
|
<h1>Grid-Responsive Direct Air Capture System</h1>
|
|
|
<p>Mechanically Agitated Contactor (MAC) with Thermal Integration</p>
|
|
|
<p>Technical Disclosure • Prior Art Publication</p>
|
|
|
</div>
|
|
|
|
|
|
<div class="drawing-board">
|
|
|
<div class="diagram-container">
|
|
|
<svg width="100%" height="800" viewBox="0 0 1160 800">
|
|
|
<defs>
|
|
|
<linearGradient id="metalGradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
|
<stop offset="0%" style="stop-color:#e8e8e8;stop-opacity:1" />
|
|
|
<stop offset="30%" style="stop-color:#ffffff;stop-opacity:1" />
|
|
|
<stop offset="70%" style="stop-color:#d0d0d0;stop-opacity:1" />
|
|
|
<stop offset="100%" style="stop-color:#b0b0b0;stop-opacity:1" />
|
|
|
</linearGradient>
|
|
|
<linearGradient id="liquidGradient" x1="0%" y1="0%" x2="0%" y2="100%">
|
|
|
<stop offset="0%" style="stop-color:rgba(100,181,246,0.3);stop-opacity:1" />
|
|
|
<stop offset="100%" style="stop-color:rgba(30,136,229,0.5);stop-opacity:1" />
|
|
|
</linearGradient>
|
|
|
<linearGradient id="pumpGradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
|
|
<stop offset="0%" style="stop-color:#4fc3f7;stop-opacity:1" />
|
|
|
<stop offset="100%" style="stop-color:#0288d1;stop-opacity:1" />
|
|
|
</linearGradient>
|
|
|
<linearGradient id="heatGradient" x1="0%" y1="0%" x2="100%" y2="0%">
|
|
|
<stop offset="0%" style="stop-color:#ffcc80;stop-opacity:1" />
|
|
|
<stop offset="50%" style="stop-color:#ff8a65;stop-opacity:1" />
|
|
|
<stop offset="100%" style="stop-color:#ef5350;stop-opacity:1" />
|
|
|
</linearGradient>
|
|
|
<linearGradient id="calcinerGradient" x1="0%" y1="100%" x2="0%" y2="0%">
|
|
|
<stop offset="0%" style="stop-color:#ff5722;stop-opacity:1" />
|
|
|
<stop offset="50%" style="stop-color:#ff9800;stop-opacity:1" />
|
|
|
<stop offset="100%" style="stop-color:#ffc107;stop-opacity:1" />
|
|
|
</linearGradient>
|
|
|
<marker id="arrowhead" markerWidth="7" markerHeight="5" refX="6" refY="2.5" orient="auto">
|
|
|
<polygon points="0 0, 7 2.5, 0 5" fill="#2c3e50" />
|
|
|
</marker>
|
|
|
<marker id="arrowhead-red" markerWidth="7" markerHeight="5" refX="6" refY="2.5" orient="auto">
|
|
|
<polygon points="0 0, 7 2.5, 0 5" fill="#e53935" />
|
|
|
</marker>
|
|
|
<marker id="arrowhead-orange" markerWidth="7" markerHeight="5" refX="6" refY="2.5" orient="auto">
|
|
|
<polygon points="0 0, 7 2.5, 0 5" fill="#ff9800" />
|
|
|
</marker>
|
|
|
<marker id="arrowhead-purple" markerWidth="7" markerHeight="5" refX="6" refY="2.5" orient="auto">
|
|
|
<polygon points="0 0, 7 2.5, 0 5" fill="#7b1fa2" />
|
|
|
</marker>
|
|
|
<pattern id="bafflePattern" x="0" y="0" width="10" height="10" patternUnits="userSpaceOnUse">
|
|
|
<line x1="0" y1="10" x2="10" y2="0" stroke="#999" stroke-width="1"/>
|
|
|
</pattern>
|
|
|
</defs>
|
|
|
|
|
|
|
|
|
<g id="grid-input" transform="translate(900, 40)">
|
|
|
<rect x="0" y="0" width="220" height="80" rx="8" fill="#ffebee" stroke="#e53935" stroke-width="2"/>
|
|
|
<text x="110" y="25" text-anchor="middle" class="component-label" fill="#c62828">⚡ GRID INTERFACE</text>
|
|
|
<text x="110" y="45" text-anchor="middle" font-size="10" fill="#666">Price Signal ($/MWh)</text>
|
|
|
<text x="110" y="60" text-anchor="middle" font-size="10" fill="#666">Frequency Signal (Hz)</text>
|
|
|
<text x="110" y="75" text-anchor="middle" font-size="10" fill="#666">Forecast Data</text>
|
|
|
</g>
|
|
|
|
|
|
|
|
|
<path d="M 900 80 L 780 80 L 780 130" class="grid-signal" marker-end="url(#arrowhead-red)"/>
|
|
|
<text x="785" y="70" font-size="10" fill="#e53935" font-weight="bold">GRID PRICE SIGNAL</text>
|
|
|
|
|
|
|
|
|
<g id="controller" transform="translate(680, 130)">
|
|
|
<rect x="0" y="0" width="200" height="100" rx="8" fill="#f3e5f5" stroke="#7b1fa2" stroke-width="2"/>
|
|
|
<text x="100" y="25" text-anchor="middle" class="component-label" fill="#4a148c">🖥️ GRID-RESPONSIVE</text>
|
|
|
<text x="100" y="42" text-anchor="middle" class="component-label" fill="#4a148c">CONTROLLER (DCS)</text>
|
|
|
<line x1="10" y1="55" x2="190" y2="55" stroke="#7b1fa2" stroke-width="1"/>
|
|
|
<text x="100" y="72" text-anchor="middle" font-size="9" fill="#666">Mode Selection Algorithm</text>
|
|
|
<text x="100" y="85" text-anchor="middle" font-size="9" fill="#666">VFD Speed Control</text>
|
|
|
<text x="100" y="98" text-anchor="middle" font-size="9" fill="#666">Ancillary Services Logic</text>
|
|
|
</g>
|
|
|
|
|
|
|
|
|
<g id="air-intake" transform="translate(10, 420)">
|
|
|
<rect x="0" y="0" width="95" height="55" rx="6" fill="#e3f2fd" stroke="#1976d2" stroke-width="2"/>
|
|
|
<text x="48" y="22" text-anchor="middle" class="component-label" fill="#1565c0">💨 AMBIENT</text>
|
|
|
<text x="48" y="37" text-anchor="middle" class="component-label" fill="#1565c0">AIR INTAKE</text>
|
|
|
<text x="48" y="50" text-anchor="middle" font-size="9" fill="#666">~420 ppm CO₂</text>
|
|
|
</g>
|
|
|
|
|
|
|
|
|
<g id="blower" transform="translate(120, 430)">
|
|
|
<circle cx="20" cy="20" r="20" fill="url(#pumpGradient)" stroke="#0277bd" stroke-width="2"/>
|
|
|
<path d="M 12 20 L 20 12 L 28 20 L 20 28 Z" fill="#fff"/>
|
|
|
<text x="20" y="55" text-anchor="middle" font-size="10" font-weight="bold">B-101</text>
|
|
|
<text x="20" y="67" text-anchor="middle" font-size="9" fill="#666">Air Blower</text>
|
|
|
</g>
|
|
|
|
|
|
|
|
|
<path d="M 105 450 L 120 450" class="pipe" marker-end="url(#arrowhead)"/>
|
|
|
<path d="M 160 450 L 280 450 L 280 520" class="pipe" marker-end="url(#arrowhead)"/>
|
|
|
|
|
|
|
|
|
<g id="reactor" transform="translate(220, 180)">
|
|
|
|
|
|
<path d="M -25 30 L -25 340 Q -25 360 -5 360 L 225 360 Q 245 360 245 340 L 245 30" class="jacket"/>
|
|
|
<text x="-75" y="50" font-size="9" fill="#1976d2">Cooling</text>
|
|
|
<text x="-75" y="62" font-size="9" fill="#1976d2">Water In</text>
|
|
|
<path d="M -55 70 L -25 70" stroke="#1976d2" stroke-width="2" marker-end="url(#arrowhead)"/>
|
|
|
<text x="260" y="350" font-size="9" fill="#1976d2">Cooling</text>
|
|
|
<text x="260" y="362" font-size="9" fill="#1976d2">Water Out</text>
|
|
|
<path d="M 245 340 L 260 340" stroke="#1976d2" stroke-width="2" marker-end="url(#arrowhead)"/>
|
|
|
|
|
|
|
|
|
<rect x="0" y="0" width="220" height="330" rx="20" class="equipment"/>
|
|
|
|
|
|
|
|
|
<rect x="5" y="60" width="210" height="265" rx="15" class="liquid"/>
|
|
|
|
|
|
|
|
|
<rect x="15" y="10" width="8" height="310" fill="#888" stroke="#555" stroke-width="1"/>
|
|
|
<rect x="197" y="10" width="8" height="310" fill="#888" stroke="#555" stroke-width="1"/>
|
|
|
<text x="110" y="25" text-anchor="middle" font-size="8" fill="#666">4× Vertical Baffles (T/10)</text>
|
|
|
|
|
|
|
|
|
<rect x="105" y="-60" width="10" height="320" fill="#444"/>
|
|
|
|
|
|
|
|
|
<g transform="translate(110, 200)">
|
|
|
<rect x="-50" y="-8" width="100" height="16" fill="#333"/>
|
|
|
<rect x="-55" y="-20" width="15" height="40" fill="#555" stroke="#333"/>
|
|
|
<rect x="40" y="-20" width="15" height="40" fill="#555" stroke="#333"/>
|
|
|
<rect x="-25" y="-15" width="12" height="30" fill="#555" stroke="#333"/>
|
|
|
<rect x="13" y="-15" width="12" height="30" fill="#555" stroke="#333"/>
|
|
|
</g>
|
|
|
|
|
|
|
|
|
<g transform="translate(70, -120)">
|
|
|
<rect x="0" y="0" width="80" height="60" rx="5" class="equipment"/>
|
|
|
<path d="M 0 0 L 80 60" stroke="#333" stroke-width="1"/>
|
|
|
<path d="M 80 0 L 0 60" stroke="#333" stroke-width="1"/>
|
|
|
|
|
|
<text x="-10" y="25" text-anchor="end" font-size="11" font-weight="bold">M-101</text>
|
|
|
<text x="-10" y="37" text-anchor="end" font-size="9" fill="#666">VFD Motor</text>
|
|
|
<text x="-10" y="49" text-anchor="end" font-size="8" fill="#7b1fa2">100-1200 RPM</text>
|
|
|
</g>
|
|
|
|
|
|
|
|
|
<g transform="translate(60, 320)">
|
|
|
<rect x="0" y="0" width="100" height="8" fill="#333" rx="2"/>
|
|
|
<circle cx="10" cy="4" r="3" fill="#666"/>
|
|
|
<circle cx="30" cy="4" r="3" fill="#666"/>
|
|
|
<circle cx="50" cy="4" r="3" fill="#666"/>
|
|
|
<circle cx="70" cy="4" r="3" fill="#666"/>
|
|
|
<circle cx="90" cy="4" r="3" fill="#666"/>
|
|
|
<text x="50" y="-5" text-anchor="middle" font-size="8" fill="#666">Gas Sparger Ring</text>
|
|
|
</g>
|
|
|
|
|
|
|
|
|
<text x="110" y="-140" text-anchor="middle" class="component-label">R-101</text>
|
|
|
<text x="110" y="-128" text-anchor="middle" font-size="10" fill="#666">Mechanically Agitated Contactor</text>
|
|
|
</g>
|
|
|
|
|
|
|
|
|
<g transform="translate(500, 280)">
|
|
|
<rect x="0" y="0" width="150" height="130" rx="6" fill="#fff" stroke="#ccc" stroke-width="1"/>
|
|
|
<rect x="0" y="0" width="150" height="25" rx="6" fill="#2196f3"/>
|
|
|
<text x="75" y="17" text-anchor="middle" font-size="10" fill="#ffffff" font-weight="bold">REACTOR SPECS</text>
|
|
|
<text x="10" y="42" font-size="9" fill="#333">• Material: 316L SS</text>
|
|
|
<text x="10" y="56" font-size="9" fill="#333">• Power: 0.5-10 kW/m³</text>
|
|
|
<text x="10" y="70" font-size="9" fill="#333">• Sorbent: 1-8M NaOH</text>
|
|
|
<text x="10" y="84" font-size="9" fill="#333">• pH Range: 12.5-14</text>
|
|
|
<text x="10" y="98" font-size="9" fill="#333">• Temp: 20-80°C</text>
|
|
|
<text x="10" y="112" font-size="9" fill="#333">• kₗa: 0.1-1.5 s⁻¹</text>
|
|
|
<text x="10" y="126" font-size="9" fill="#333">• Solids: 5-40 wt%</text>
|
|
|
</g>
|
|
|
|
|
|
|
|
|
<path d="M 680 180 L 450 180 L 330 80" class="control-signal" marker-end="url(#arrowhead-purple)"/>
|
|
|
<text x="520" y="170" font-size="9" fill="#7b1fa2">Speed Setpoint</text>
|
|
|
|
|
|
|
|
|
|
|
|
<g transform="translate(520, 430)">
|
|
|
<circle cx="0" cy="0" r="18" class="instrument"/>
|
|
|
<text x="0" y="4" text-anchor="middle" font-size="10" font-weight="bold">AE</text>
|
|
|
<text x="25" y="-5" text-anchor="start" font-size="9">AT-101</text>
|
|
|
<text x="25" y="7" text-anchor="start" font-size="8" fill="#666">CO₂ Analyzer</text>
|
|
|
<line x1="-18" y1="0" x2="-80" y2="0" stroke="#333" stroke-width="1"/>
|
|
|
</g>
|
|
|
|
|
|
|
|
|
<g transform="translate(520, 490)">
|
|
|
<circle cx="0" cy="0" r="18" class="instrument"/>
|
|
|
<text x="0" y="4" text-anchor="middle" font-size="10" font-weight="bold">TT</text>
|
|
|
<text x="25" y="4" text-anchor="start" font-size="9">TT-101</text>
|
|
|
<line x1="-18" y1="0" x2="-80" y2="0" stroke="#333" stroke-width="1"/>
|
|
|
</g>
|
|
|
|
|
|
|
|
|
<g transform="translate(160, 400)">
|
|
|
<circle cx="0" cy="0" r="18" class="instrument"/>
|
|
|
<text x="0" y="4" text-anchor="middle" font-size="10" font-weight="bold">pH</text>
|
|
|
<text x="-25" y="4" text-anchor="end" font-size="9">pHT-101</text>
|
|
|
<line x1="18" y1="0" x2="60" y2="0" stroke="#333" stroke-width="1"/>
|
|
|
</g>
|
|
|
|
|
|
|
|
|
<path d="M 330 180 L 330 130 L 550 130" class="pipe" marker-end="url(#arrowhead)"/>
|
|
|
<g transform="translate(560, 110)">
|
|
|
<rect x="0" y="0" width="100" height="40" rx="6" fill="#e8f5e9" stroke="#43a047" stroke-width="2"/>
|
|
|
<text x="50" y="18" text-anchor="middle" font-size="10" font-weight="bold" fill="#2e7d32">🌿 CLEAN AIR</text>
|
|
|
<text x="50" y="32" text-anchor="middle" font-size="9" fill="#666"><50 ppm CO₂</text>
|
|
|
</g>
|
|
|
|
|
|
|
|
|
<path d="M 330 540 L 330 600 L 550 600" class="slurry-line" marker-end="url(#arrowhead)"/>
|
|
|
<text x="400" y="590" font-size="10" font-weight="bold" fill="#795548">Na₂CO₃ Slurry</text>
|
|
|
|
|
|
|
|
|
<g transform="translate(40, 540)">
|
|
|
<circle cx="25" cy="25" r="25" class="pump-body" stroke="#0277bd" stroke-width="2"/>
|
|
|
<polygon points="25,10 40,35 10,35" fill="#fff"/>
|
|
|
<text x="60" y="20" text-anchor="start" font-size="10" font-weight="bold">P-101</text>
|
|
|
<text x="60" y="32" text-anchor="start" font-size="9" fill="#666">Slurry Pump</text>
|
|
|
</g>
|
|
|
<path d="M 220 510 L 40 510 L 40 535" class="slurry-line"/>
|
|
|
<path d="M 40 590 L 40 650 L 220 650 L 220 540" class="slurry-line" marker-end="url(#arrowhead)"/>
|
|
|
<text x="130" y="668" text-anchor="middle" font-size="9" fill="#666">Recirculation Loop</text>
|
|
|
|
|
|
|
|
|
<g transform="translate(570, 560)">
|
|
|
<rect x="0" y="0" width="140" height="100" rx="10" class="equipment"/>
|
|
|
<rect x="5" y="30" width="130" height="65" rx="8" fill="rgba(139,195,74,0.3)"/>
|
|
|
<text x="70" y="20" text-anchor="middle" class="component-label">T-201</text>
|
|
|
<text x="70" y="55" text-anchor="middle" font-size="9" fill="#333">Causticization</text>
|
|
|
<text x="70" y="70" text-anchor="middle" font-size="8" fill="#666">Na₂CO₃ + Ca(OH)₂ →</text>
|
|
|
<text x="70" y="82" text-anchor="middle" font-size="8" fill="#666">2NaOH + CaCite↓</text>
|
|
|
</g>
|
|
|
|
|
|
|
|
|
<g transform="translate(780, 460)">
|
|
|
<path d="M 0 100 L 0 20 Q 0 0 20 0 L 100 0 Q 120 0 120 20 L 120 100 Q 120 140 60 160 Q 0 140 0 100" class="calciner"/>
|
|
|
<text x="60" y="-10" text-anchor="middle" class="component-label">CAL-301</text>
|
|
|
<text x="60" y="50" text-anchor="middle" font-size="10" fill="#fff" font-weight="bold">CALCINER</text>
|
|
|
<text x="60" y="70" text-anchor="middle" font-size="8" fill="#fff">CaCO₃ → CaO + CO₂</text>
|
|
|
<text x="60" y="90" text-anchor="middle" font-size="8" fill="#fff">900-1000°C</text>
|
|
|
</g>
|
|
|
|
|
|
|
|
|
<path d="M 710 610 L 750 610 L 750 560 L 780 560" class="slurry-line" marker-end="url(#arrowhead)"/>
|
|
|
<text x="715" y="580" font-size="9" fill="#795548">CaCO₃</text>
|
|
|
|
|
|
|
|
|
<g transform="translate(920, 400)">
|
|
|
<rect x="0" y="0" width="120" height="50" rx="8" fill="#fff3e0" stroke="#ff9800" stroke-width="2"/>
|
|
|
<text x="60" y="20" text-anchor="middle" font-size="11" font-weight="bold" fill="#e65100">🎯 CAPTURED CO₂</text>
|
|
|
<text x="60" y="38" text-anchor="middle" font-size="9" fill="#666">Pure Stream (>95%)</text>
|
|
|
</g>
|
|
|
<path d="M 900 460 L 960 460 L 960 450" class="pipe" stroke="#ff9800" marker-end="url(#arrowhead-orange)"/>
|
|
|
|
|
|
|
|
|
<g transform="translate(920, 530)">
|
|
|
<rect x="0" y="0" width="180" height="90" rx="10" fill="url(#heatGradient)" stroke="#c62828" stroke-width="2"/>
|
|
|
<text x="90" y="25" text-anchor="middle" font-size="12" font-weight="bold" fill="#fff">🔥 THERMAL SOURCE</text>
|
|
|
<text x="90" y="45" text-anchor="middle" font-size="10" fill="#fff">Nuclear SMR / Geothermal</text>
|
|
|
<text x="90" y="62" text-anchor="middle" font-size="9" fill="#fff">Industrial Waste Heat</text>
|
|
|
<text x="90" y="80" text-anchor="middle" font-size="9" fill="#fff">Steam: 2-5 bar</text>
|
|
|
</g>
|
|
|
<path d="M 920 575 L 900 575" class="steam-line" marker-end="url(#arrowhead-orange)"/>
|
|
|
<text x="850" y="570" font-size="9" fill="#ff9800" font-weight="bold">Heat</text>
|
|
|
|
|
|
|
|
|
<path d="M 840 620 L 840 680 L 640 680 L 640 660" class="pipe-thin" stroke="#795548" marker-end="url(#arrowhead)"/>
|
|
|
<text x="740" y="695" text-anchor="middle" font-size="9" fill="#795548">CaO + H₂O → Ca(OH)₂ Recycle</text>
|
|
|
|
|
|
|
|
|
<path d="M 570 660 L 440 660 L 440 540" class="pipe" stroke="#4caf50" marker-end="url(#arrowhead)"/>
|
|
|
<text x="510" y="675" font-size="9" fill="#4caf50" font-weight="bold">Regenerated NaOH</text>
|
|
|
|
|
|
|
|
|
<g transform="translate(1010, 690)">
|
|
|
<rect x="0" y="0" width="130" height="100" rx="6" fill="rgba(255,255,255,0.95)" stroke="#ddd"/>
|
|
|
<text x="65" y="15" text-anchor="middle" font-size="10" font-weight="bold">LEGEND</text>
|
|
|
<line x1="10" y1="28" x2="40" y2="28" stroke="#2c3e50" stroke-width="4"/>
|
|
|
<text x="50" y="32" font-size="9">Process Pipe</text>
|
|
|
<line x1="10" y1="44" x2="40" y2="44" stroke="#e53935" stroke-width="3" stroke-dasharray="8,4"/>
|
|
|
<text x="50" y="48" font-size="9">Grid Signal</text>
|
|
|
<line x1="10" y1="60" x2="40" y2="60" stroke="#7b1fa2" stroke-width="1.5" stroke-dasharray="4,2"/>
|
|
|
<text x="50" y="64" font-size="9">Control Signal</text>
|
|
|
<line x1="10" y1="76" x2="40" y2="76" stroke="#ff9800" stroke-width="3" stroke-dasharray="10,5"/>
|
|
|
<text x="50" y="80" font-size="9">Steam/Heat</text>
|
|
|
<line x1="10" y1="92" x2="40" y2="92" stroke="#795548" stroke-width="4"/>
|
|
|
<text x="50" y="96" font-size="9">Slurry Line</text>
|
|
|
</g>
|
|
|
|
|
|
</svg>
|
|
|
</div>
|
|
|
|
|
|
<div class="title-block">
|
|
|
<div class="title-block-left">
|
|
|
<h2>Process Flow Diagram</h2>
|
|
|
<p><strong>System:</strong> Grid-Responsive MAC-DAC with Calcium Loop Regeneration</p>
|
|
|
<p><strong>Field:</strong> Chemical Engineering • Grid Regulation • Carbon Dioxide Removal (CDR)</p>
|
|
|
</div>
|
|
|
<div class="title-block-right">
|
|
|
<p><strong>Drawing No:</strong> HVS-001-A Rev.2</p>
|
|
|
<p><strong>Date:</strong> 05-JAN-2026</p>
|
|
|
<p><strong>Author:</strong> Parth Parekh (Independent Researcher)</p>
|
|
|
<p><strong>Status:</strong> Prior Art Publication</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="specs-panel">
|
|
|
<div class="specs-header">
|
|
|
<h3>📊 OPERATING PARAMETER RANGES</h3>
|
|
|
</div>
|
|
|
<div class="specs-grid">
|
|
|
<div class="spec-card">
|
|
|
<h4>Mechanical Parameters</h4>
|
|
|
<ul>
|
|
|
<li>Agitator Speed: 100 – 1200 RPM</li>
|
|
|
<li>Power Input: 0.5 – 10.0 kW/m³</li>
|
|
|
<li>Impeller: Rushton/Smith Turbine</li>
|
|
|
<li>Baffles: 4× (width T/10)</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
<div class="spec-card">
|
|
|
<h4>Chemical Parameters</h4>
|
|
|
<ul>
|
|
|
<li>Sorbent: 1.0 – 8.0 M NaOH/KOH</li>
|
|
|
<li>pH Range: 12.5 – 14.0</li>
|
|
|
<li>Slurry Solids: 5 – 40 wt%</li>
|
|
|
<li>Bubble Size (d₃₂): 0.1 – 5 mm</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
<div class="spec-card">
|
|
|
<h4>Process Conditions</h4>
|
|
|
<ul>
|
|
|
<li>Temperature: 20°C – 80°C</li>
|
|
|
<li>Gas Residence: 10 – 300 sec</li>
|
|
|
<li>Target kₗa: 0.1 – 1.5 s⁻¹</li>
|
|
|
<li>Regeneration: 900-1000°C</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
<div class="spec-card">
|
|
|
<h4>Ancillary Services</h4>
|
|
|
<ul>
|
|
|
<li>Frequency Regulation: <1 sec response</li>
|
|
|
<li>Spinning Reserve: Instant load shed</li>
|
|
|
<li>Voltage Support: Reactive power ctrl</li>
|
|
|
<li>"Negative Load" Battery Mode</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
|
|
|
<div class="control-logic">
|
|
|
<div class="control-header">
|
|
|
<h3>🎛️ GRID-RESPONSIVE CONTROL ALGORITHM</h3>
|
|
|
</div>
|
|
|
<div class="control-content">
|
|
|
<div class="mode-card mode-surplus">
|
|
|
<h4 style="color:#2e7d32">⚡ Maximum Capture Mode</h4>
|
|
|
<div class="condition">
|
|
|
IF Grid_Freq > 60.05 Hz<br>
|
|
|
OR Grid_Price < Price_Low
|
|
|
</div>
|
|
|
<div class="action">
|
|
|
Activate Auxiliary Blowers<br>
|
|
|
Run at Maximum Power
|
|
|
</div>
|
|
|
<div class="rpm" style="color:#2e7d32">1200 RPM</div>
|
|
|
<div style="font-size:10px;color:#666;margin-top:5px">Surplus Power Dump Load</div>
|
|
|
</div>
|
|
|
<div class="mode-card mode-standard">
|
|
|
<h4 style="color:#e65100">📈 Economic Optimization</h4>
|
|
|
<div class="condition">
|
|
|
IF Price_Low < Grid_Price<br>
|
|
|
< Price_High
|
|
|
</div>
|
|
|
<div class="action">
|
|
|
Calculate Optimal RPM based on<br>
|
|
|
Grid Price vs Carbon Credits
|
|
|
</div>
|
|
|
<div class="rpm" style="color:#e65100">VARIABLE</div>
|
|
|
<div style="font-size:10px;color:#666;margin-top:5px">Balance Cost & Capture</div>
|
|
|
</div>
|
|
|
<div class="mode-card mode-idle">
|
|
|
<h4 style="color:#c62828">🔻 Grid Support / Idle</h4>
|
|
|
<div class="condition">
|
|
|
IF Grid_Price > Price_High<br>
|
|
|
(Scarcity Scenario)
|
|
|
</div>
|
|
|
<div class="action">
|
|
|
Minimum Suspension Speed<br>
|
|
|
Deactivate Heaters
|
|
|
</div>
|
|
|
<div class="rpm" style="color:#c62828">~100 RPM</div>
|
|
|
<div style="font-size:10px;color:#666;margin-top:5px">Prevent Solids Settling Only</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
</body>
|
|
|
</html> |