Overview

Heat Conduction in a 2D Fin Tutorial (Multi-threaded)

This page demonstrates solving the 2D heat conduction fin problem using FEAScript in a web worker for improved browser responsiveness. For the mathematical formulation and theory, see the basic tutorial.

Web Worker implementation

The code below shows how to use FEAScript with a web worker. The solution is plotted as a 2D contour.

<body>
  <!-- ...body region... -->
  <script type="module">
    import {
      FEAScriptWorker,
      plotSolution,
      printVersion,
    } from "https://core.feascript.com/src/index.js";

    window.addEventListener("DOMContentLoaded", async () => {
      console.log("FEAScript version:", printVersion);

      // 1. Create the model in a web worker and select the physics
      const model = new FEAScriptWorker();
      await model.ping(); // Wait until the worker is ready
      await model.setModelConfig("heatConductionScript");

      // 2. Define the mesh
      await model.setMeshConfig({
        meshDimension: "2D",
        elementOrder: "quadratic",
        numElementsX: 8,
        numElementsY: 4,
        maxX: 4,
        maxY: 2,
      });

      // 3. Apply the boundary conditions
      await model.addBoundaryCondition("0", ["constantTemperature", 200]); // Bottom
      await model.addBoundaryCondition("1", ["symmetry"]);                 // Left
      await model.addBoundaryCondition("2", ["convection", 1, 20]);        // Top
      await model.addBoundaryCondition("3", ["constantTemperature", 200]); // Right

      // 4. Solve
      await model.setSolverMethod("lusolve");
      const result = await model.solve();

      // 5. Plot the results
      const modelInfo = await model.getModelInfo();
      plotSolution(modelInfo, result, "contour", "resultsCanvas");

      // 6. Terminate the worker
      model.terminate();
    });
  </script>
  <!-- ...rest of body region... -->
</body>

Results

Below is the 2D contour plot of the computed temperature distribution. This plot is generated in real time using FEAScript.

Solving...