Skip to content

Instantly share code, notes, and snippets.

@wd15
Last active May 28, 2026 17:39
Show Gist options
  • Select an option

  • Save wd15/a1c167efa0ce001476d7b9744bc53843 to your computer and use it in GitHub Desktop.

Select an option

Save wd15/a1c167efa0ce001476d7b9744bc53843 to your computer and use it in GitHub Desktop.
Simplified Digital Twin Workflow
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Simplified Digital Twin Workflow - Brief</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: #ffffff;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
}
.diagram-wrapper {
position: relative;
width: 800px;
height: 520px;
background: #ffffff;
border-radius: 12px;
box-shadow: 0 10px 40px rgba(0,0,0,0.08);
border: 1px solid #e1e4e8;
overflow: hidden;
}
/* Base Box Style */
.box {
position: absolute;
display: flex;
flex-direction: column;
justify-content: center;
width: 220px;
padding: 15px;
border-radius: 8px;
z-index: 2;
box-shadow: 0 4px 15px rgba(0,0,0,0.05);
background: white;
border-left: 6px solid;
}
.box-title {
font-size: 16px;
font-weight: 700;
margin-bottom: 4px;
color: #24292f;
}
.box-subtext {
font-size: 13px;
color: #57606a;
line-height: 1.3;
}
/* Specific Box Themes & Positions */
.box-hifi {
top: 40px; left: 50px;
border-color: #34495e; /* Dark Blue/Gray */
}
.box-surrogate {
top: 200px; left: 50px;
border-color: #2980b9; /* Bright Blue */
}
.box-dt {
top: 380px; left: 50px;
border-color: #27ae60; /* Emerald Green */
}
.box-da {
top: 200px; left: 500px;
border-color: #8e44ad; /* Purple */
}
.box-physical {
top: 380px; left: 500px;
border-color: #c0392b; /* Red */
}
/* SVG Layer for Connecting Lines */
.line-layer {
position: absolute;
top: 0; left: 0;
width: 100%; height: 100%;
z-index: 1;
pointer-events: none;
}
.flow-line {
fill: none;
stroke: #95a5a6;
stroke-width: 3;
marker-end: url(#arrowhead);
}
.flow-line-dashed {
fill: none;
stroke: #95a5a6;
stroke-width: 3;
stroke-dasharray: 6, 6;
marker-end: url(#arrowhead);
}
.label-text {
font-size: 13px;
font-weight: 600;
fill: #57606a;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
</style>
</head>
<body>
<div class="diagram-wrapper">
<div class="box box-hifi">
<div class="box-title">High-Fidelity Models</div>
<div class="box-subtext">Physics-based ground truth (e.g., AdditiveFOAM).</div>
</div>
<div class="box box-surrogate">
<div class="box-title">Ensembles & Surrogates</div>
<div class="box-subtext">Fast-executing AI (FNOs) generating prior states.</div>
</div>
<div class="box box-dt">
<div class="box-title">Digital Twin</div>
<div class="box-subtext">Continuously updated digital shadow.</div>
</div>
<div class="box box-da">
<div class="box-title">Data Assimilation</div>
<div class="box-subtext">EnKF framework for state correction.</div>
</div>
<div class="box box-physical">
<div class="box-title">Experimental Data</div>
<div class="box-subtext"></div>
</div>
<svg class="line-layer">
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#95a5a6" />
</marker>
</defs>
<path d="M 160 110 L 160 190" class="flow-line" />
<text x="175" y="155" class="label-text">Training</text>
<path d="M 160 270 L 160 370" class="flow-line" />
<text x="175" y="325" class="label-text">Prior</text>
<path d="M 610 380 L 610 270" class="flow-line" />
<text x="625" y="330" class="label-text">Observations</text>
<path d="M 300 235 L 490 235" class="flow-line" />
<text x="345" y="225" class="label-text">Predictions</text>
<path d="M 500 255 C 400 255, 400 410, 300 410" class="flow-line-dashed" />
<text x="360" y="325" class="label-text" fill="#8e44ad">Correction</text>
</svg>
</div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment