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"
  );
});