FEAScript: Heat Conduction in a Two-Dimensional Fin Example
by nikoscham
HTML
<!doctype html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width" />
<title>FEAScript: Heat Conduction in a Two-Dimensional Fin Example</title>
<!-- Math.js and Plotly.js libraries -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/5.0.0/math.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/plotly.js/2.27.0/plotly.min.js"></script>
<!-- Link to the CSS file -->
<link
href="https://feascript.com/FEAScript-website.css"
rel="stylesheet"
type="text/css"
/>
<link
href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap"
rel="stylesheet"
/>
</head>
<body>
<h1>Heat Conduction in a Two-Dimensional Fin Example</h1>
<div id="solutionPlot"></div>
<p>
The mesh configuration and boundary conditions are defined directly within
the JavaScript code in this example. Please refresh the page to update the
results. Detailed instructions for this example can be found in the
corresponding
<a
href="https://github.com/FEAScript/FEAScript-website/blob/main/tutorialSolidHeatTransfer01/tutorialSolidHeatTransfer01.html"
target="_blank"
>FEAScript tutorial</a
>. If you need further assistance, you can visit the
<a href="https://feascript.com/" target="_blank">FEAScript website</a>.
</p>
<p>
FEAScript is distributed under the terms of the
<a href="https://opensource.org/license/mit" target="_blank"
>MIT license</a
>. © 2024 FEAScript.
</p>
</body>
</html>
JavaScript
import {
FEAScriptModel,
plotSolution,
printVersion,
} from "https://feascript.github.io/FEAScript/src/index.js";
window.addEventListener("DOMContentLoaded", () => {
// Print FEAScript version in the console
printVersion();
// Create a new FEAScript model
const model = new FEAScriptModel();
// Set solver configuration
model.setSolverConfig("solidHeatTransferScript");
// Define mesh configuration
model.setMeshConfig({
meshDimension: "2D",
elementOrder: "quadratic",
numElementsX: 8,
numElementsY: 4,
maxX: 4,
maxY: 2,
});
// Define boundary conditions
model.addBoundaryCondition("0", ["constantTemp", 200]);
model.addBoundaryCondition("1", ["symmetry"]);
model.addBoundaryCondition("2", ["convection", 1, 20]);
model.addBoundaryCondition("3", ["constantTemp", 200]);
// Solve the problem and get the solution
const { solutionVector, nodesCoordinates } = model.solve();
// Plot the solution as a 2D contour plot
plotSolution(
solutionVector,
nodesCoordinates,
model.solverConfig,
model.meshConfig.meshDimension,
"contour",
"solutionPlot"
);
});