Skip to content

Commit d0245f7

Browse files
committed
minor-feat: example html
1 parent aa7dc0f commit d0245f7

6 files changed

Lines changed: 40 additions & 85 deletions

File tree

examples/creepingFlowScript/lidDrivenCavity2DCreepingFlow/lidDrivenCavity2DCreepingFlow.html

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@
1313
<head>
1414
<title>FEAScript Example: Lid-Driven Cavity 2D Creeping Flow</title>
1515
<meta charset="UTF-8" />
16-
<!-- Link to the CSS files -->
16+
<link rel="icon" type="image/svg+xml" href="/favicon.png" />
17+
1718
<link href="https://feascript.com/feascript-website.css" rel="stylesheet" type="text/css" />
1819
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet" />
19-
<!-- Import the Math.js library for mathematical operations -->
20+
2021
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/11.12.0/math.min.js"></script>
21-
<!-- Import map for VTK.js modules -->
22+
2223
<script type="importmap">
2324
{
2425
"imports": {
@@ -41,20 +42,15 @@ <h3>v-Velocity Component</h3>
4142
<div id="vVelocityCanvas"></div>
4243

4344
<script type="module">
44-
// Import FEAScript library
45-
import { FEAScriptModel, plotInterpolatedSolutionVtk, createColorScale, createContourLineOptions, printVersion } from "https://core.feascript.com/dist/feascript.esm.js";
46-
// import { FEAScriptModel, plotInterpolatedSolutionVtk, createColorScale, createContourLineOptions, printVersion } from "../../../src/index.js";
45+
import { FEAScriptModel, plotInterpolatedSolutionVtk, createColorScale, createContourLineOptions, printVersion } from "../../../src/index.js";
4746

4847
window.addEventListener("DOMContentLoaded", async () => {
4948
console.log("FEAScript Version:", printVersion);
5049

51-
// Create a new FEAScript model
5250
const model = new FEAScriptModel();
5351

54-
// Select physics/PDE
5552
model.setModelConfig("creepingFlowScript");
5653

57-
// Define mesh configuration
5854
model.setMeshConfig({
5955
meshDimension: "2D",
6056
elementOrder: "quadratic",
@@ -64,31 +60,24 @@ <h3>v-Velocity Component</h3>
6460
maxY: 2,
6561
});
6662

67-
// Define boundary conditions
68-
model.addBoundaryCondition("0", ["constantVelocity", 0, 0]); // Bottom boundary
69-
model.addBoundaryCondition("1", ["constantVelocity", 0, 0]); // Left boundary
70-
model.addBoundaryCondition("2", ["constantVelocity", 1, 0]); // Top boundary
71-
model.addBoundaryCondition("3", ["constantVelocity", 0, 0]); // Right boundary
63+
model.addBoundaryCondition("0", ["constantVelocity", 0, 0]);
64+
model.addBoundaryCondition("1", ["constantVelocity", 0, 0]);
65+
model.addBoundaryCondition("2", ["constantVelocity", 1, 0]);
66+
model.addBoundaryCondition("3", ["constantVelocity", 0, 0]);
7267

73-
// Set solver method
7468
model.setSolverMethod("lusolve");
7569

76-
// Solve the problem
7770
const result = model.solve();
7871

79-
// Print results to console
8072
console.log(`Number of nodes in mesh: ${result.nodesCoordinates.nodesXCoordinates.length}`);
8173
console.log("Solution vector:", result.solutionVector);
8274

83-
// Extract velocity and pressure fields from the solution vector
84-
// DOF layout: [u₀…u_{N₂−1}, v₀…v_{N₂−1}, p₀…p_{N₁−1}]
8575
const totalNodesVelocity = model._creepingFlowMetadata.totalNodesVelocity;
8676
const solutionVector = result.solutionVector;
8777
const uVelocity = solutionVector.slice(0, totalNodesVelocity);
8878
const vVelocity = solutionVector.slice(totalNodesVelocity, 2 * totalNodesVelocity);
8979
const velocityMagnitude = uVelocity.map((u, i) => Math.sqrt(u * u + vVelocity[i] * vVelocity[i]));
9080

91-
// Define render options for VTK.js contour plots
9281
const renderOptions = {
9382
contourLines: createContourLineOptions({
9483
enabled: true,
@@ -97,7 +86,6 @@ <h3>v-Velocity Component</h3>
9786
}),
9887
};
9988

100-
// Plot velocity magnitude as a 2D contour plot
10189
await plotInterpolatedSolutionVtk(
10290
model,
10391
{ solutionVector: velocityMagnitude, nodesCoordinates: result.nodesCoordinates },
@@ -112,7 +100,6 @@ <h3>v-Velocity Component</h3>
112100
}
113101
);
114102

115-
// Plot u-velocity component as a 2D contour plot
116103
await plotInterpolatedSolutionVtk(
117104
model,
118105
{ solutionVector: uVelocity, nodesCoordinates: result.nodesCoordinates },
@@ -127,7 +114,6 @@ <h3>v-Velocity Component</h3>
127114
}
128115
);
129116

130-
// Plot v-velocity component as a 2D contour plot
131117
await plotInterpolatedSolutionVtk(
132118
model,
133119
{ solutionVector: vVelocity, nodesCoordinates: result.nodesCoordinates },

examples/frontPropagationScript/solidificationFront2D/solidificationFront2D.html

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@
1313
<head>
1414
<title>FEAScript Example: Solidification Front 2D</title>
1515
<meta charset="UTF-8" />
16-
<!-- Link to the CSS files -->
16+
<link rel="icon" type="image/svg+xml" href="/favicon.png" />
17+
1718
<link href="https://feascript.com/feascript-website.css" rel="stylesheet" type="text/css" />
1819
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet" />
19-
<!-- Import the Math.js library for mathematical operations -->
20+
2021
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/11.12.0/math.min.js"></script>
21-
<!-- Import map for VTK.js modules -->
22+
2223
<script type="importmap">
2324
{
2425
"imports": {
@@ -31,24 +32,18 @@
3132
<body>
3233
<h2>Solidification Front 2D</h2>
3334

34-
<!-- Container element where the solution plot will be rendered -->
3535
<div id="resultsCanvas"></div>
3636

3737
<script type="module">
38-
// Import FEAScript library
39-
import { FEAScriptModel, plotInterpolatedSolutionVtk, createColorScale, createContourLineOptions, printVersion } from "https://core.feascript.com/dist/feascript.esm.js";
40-
// import { FEAScriptModel, plotInterpolatedSolutionVtk, createColorScale, createContourLineOptions, printVersion } from "../../../src/index.js";
38+
import { FEAScriptModel, plotInterpolatedSolutionVtk, createColorScale, createContourLineOptions, printVersion } from "../../../src/index.js";
4139

4240
window.addEventListener("DOMContentLoaded", async () => {
4341
console.log("FEAScript Version:", printVersion);
4442

45-
// Create a new FEAScript model
4643
const model = new FEAScriptModel();
4744

48-
// Select physics/PDE
4945
model.setModelConfig("frontPropagationScript");
5046

51-
// Define mesh configuration
5247
model.setMeshConfig({
5348
meshDimension: "2D",
5449
elementOrder: "quadratic",
@@ -58,23 +53,18 @@ <h2>Solidification Front 2D</h2>
5853
maxY: 2,
5954
});
6055

61-
// Define boundary conditions
62-
model.addBoundaryCondition("0", ["constantValue", 0]); // Bottom boundary
63-
model.addBoundaryCondition("1", ["constantValue", 0]); // Left boundary
64-
model.addBoundaryCondition("2", ["zeroGradient"]); // Top boundary
65-
model.addBoundaryCondition("3", ["constantValue", 0]); // Right boundary
56+
model.addBoundaryCondition("0", ["constantValue", 0]);
57+
model.addBoundaryCondition("1", ["constantValue", 0]);
58+
model.addBoundaryCondition("2", ["zeroGradient"]);
59+
model.addBoundaryCondition("3", ["constantValue", 0]);
6660

67-
// Set solver method
6861
model.setSolverMethod("lusolve");
6962

70-
// Solve the problem
7163
const result = model.solve();
7264

73-
// Print results to console
7465
console.log(`Number of nodes in mesh: ${result.nodesCoordinates.nodesXCoordinates.length}`);
7566
console.log("Solution vector:", result.solutionVector);
7667

77-
// Plot the solution as a 2D contour plot
7868
await plotInterpolatedSolutionVtk(model, result, "contour", "resultsCanvas", {
7969
colorScale: createColorScale({
8070
presetName: "Cool to Warm",

examples/generalFormPDEScript/advectionDiffusion1D/advectionDiffusion1D.html

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@
1313
<head>
1414
<title>FEAScript Example: Advection-Diffusion 1D</title>
1515
<meta charset="UTF-8" />
16-
<!-- Link to the CSS files -->
16+
<link rel="icon" type="image/svg+xml" href="/favicon.png" />
17+
1718
<link href="https://feascript.com/feascript-website.css" rel="stylesheet" type="text/css" />
1819
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet" />
19-
<!-- Import the Math.js library for mathematical operations -->
20+
2021
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/11.12.0/math.min.js"></script>
21-
<!-- Import map for VTK.js modules -->
22+
2223
<script type="importmap">
2324
{
2425
"imports": {
@@ -31,54 +32,42 @@
3132
<body>
3233
<h2>Advection-Diffusion 1D</h2>
3334

34-
<!-- Container element where the solution plot will be rendered -->
3535
<div id="resultsCanvas"></div>
3636

3737
<script type="module">
38-
// Import FEAScript library
39-
import { FEAScriptModel, plotSolutionVtk, printVersion } from "https://core.feascript.com/dist/feascript.esm.js";
40-
// import { FEAScriptModel, plotSolutionVtk, printVersion } from "../../../src/index.js";
38+
import { FEAScriptModel, plotSolutionVtk, printVersion } from "../../../src/index.js";
4139

4240
window.addEventListener("DOMContentLoaded", async () => {
4341
console.log("FEAScript Version:", printVersion);
4442

45-
// Create a new FEAScript model
4643
const model = new FEAScriptModel();
4744

48-
// Select physics/PDE
4945
model.setModelConfig("generalFormPDEScript", {
5046
coefficientFunctions: {
51-
// Equation d²u/dx² - 10 du/dx = 10 * exp(-200 * (x - 0.5)²)
52-
A: (x) => 1, // Diffusion coefficient
53-
B: (x) => -10, // Advection coefficient
54-
C: (x) => 0, // Reaction coefficient
55-
D: (x) => 10 * Math.exp(-200 * Math.pow(x - 0.5, 2)), // Source term
47+
A: (x) => 1,
48+
B: (x) => -10,
49+
C: (x) => 0,
50+
D: (x) => 10 * Math.exp(-200 * Math.pow(x - 0.5, 2)),
5651
},
5752
});
5853

59-
// Define mesh configuration
6054
model.setMeshConfig({
6155
meshDimension: "1D",
6256
elementOrder: "quadratic",
6357
numElementsX: 20,
6458
maxX: 1.0,
6559
});
6660

67-
// Define boundary conditions
68-
model.addBoundaryCondition("0", ["constantValue", 1]); // Left boundary
69-
model.addBoundaryCondition("1", "zeroGradient"); // Right boundary
61+
model.addBoundaryCondition("0", ["constantValue", 1]);
62+
model.addBoundaryCondition("1", "zeroGradient");
7063

71-
// Set solver method
7264
model.setSolverMethod("lusolve");
7365

74-
// Solve the problem
7566
const result = model.solve();
7667

77-
// Print results to console
7868
console.log(`Number of nodes in mesh: ${result.nodesCoordinates.nodesXCoordinates.length}`);
7969
console.log("Solution vector:", result.solutionVector);
8070

81-
// Plot the solution as a 1D line plot
8271
await plotSolutionVtk(model, result, "line", "resultsCanvas");
8372
});
8473
</script>

examples/heatConductionScript/heatConduction1DWall/heatConduction1DWall.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<head>
1414
<title>FEAScript Example: Heat Conduction 1D Wall</title>
1515
<meta charset="UTF-8" />
16+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
1617
<!-- Link to the CSS files -->
1718
<link href="https://feascript.com/feascript-website.css" rel="stylesheet" type="text/css" />
1819
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet" />
@@ -36,8 +37,7 @@ <h2>Heat Conduction 1D Wall</h2>
3637

3738
<script type="module">
3839
// Import FEAScript library
39-
import { FEAScriptModel, plotSolutionVtk, printVersion } from "https://core.feascript.com/dist/feascript.esm.js";
40-
// import { FEAScriptModel, plotSolutionVtk, printVersion } from "../../../src/index.js";
40+
import { FEAScriptModel, plotSolutionVtk, printVersion } from "../../../src/index.js";
4141

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

examples/heatConductionScript/heatConduction2DFin/heatConduction2DFin.html

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@
1313
<head>
1414
<title>FEAScript Example: Heat Conduction 2D Fin</title>
1515
<meta charset="UTF-8" />
16-
<!-- Link to the CSS files -->
16+
<link rel="icon" type="image/svg+xml" href="/favicon.png" />
17+
1718
<link href="https://feascript.com/feascript-website.css" rel="stylesheet" type="text/css" />
1819
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet" />
19-
<!-- Import the Math.js library for mathematical operations -->
20+
2021
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/11.12.0/math.min.js"></script>
21-
<!-- Import map for VTK.js modules -->
22+
2223
<script type="importmap">
2324
{
2425
"imports": {
@@ -31,24 +32,18 @@
3132
<body>
3233
<h2>Heat Conduction 2D Fin</h2>
3334

34-
<!-- Container element where the solution plot will be rendered -->
3535
<div id="resultsCanvas"></div>
3636

3737
<script type="module">
38-
// Import FEAScript library
39-
import { FEAScriptModel, plotInterpolatedSolutionVtk, createColorScale, createContourLineOptions, printVersion } from "https://core.feascript.com/dist/feascript.esm.js";
40-
// import { FEAScriptModel, plotInterpolatedSolutionVtk, createColorScale, createContourLineOptions, printVersion } from "../../../src/index.js";
38+
import { FEAScriptModel, plotInterpolatedSolutionVtk, createColorScale, createContourLineOptions, printVersion } from "../../../src/index.js";
4139

4240
window.addEventListener("DOMContentLoaded", async () => {
4341
console.log("FEAScript Version:", printVersion);
4442

45-
// Create a new FEAScript model
4643
const model = new FEAScriptModel();
4744

48-
// Select physics/PDE
4945
model.setModelConfig("heatConductionScript");
5046

51-
// Define mesh configuration
5247
model.setMeshConfig({
5348
meshDimension: "2D",
5449
elementOrder: "quadratic",
@@ -58,23 +53,18 @@ <h2>Heat Conduction 2D Fin</h2>
5853
maxY: 2,
5954
});
6055

61-
// Define boundary conditions
62-
model.addBoundaryCondition("0", ["constantTemp", 200]); // Bottom boundary
63-
model.addBoundaryCondition("1", ["symmetry"]); // Left boundary
64-
model.addBoundaryCondition("2", ["convection", 1, 20]); // Top boundary
65-
model.addBoundaryCondition("3", ["constantTemp", 200]); // Right boundary
56+
model.addBoundaryCondition("0", ["constantTemp", 200]);
57+
model.addBoundaryCondition("1", ["symmetry"]);
58+
model.addBoundaryCondition("2", ["convection", 1, 20]);
59+
model.addBoundaryCondition("3", ["constantTemp", 200]);
6660

67-
// Set solver method
6861
model.setSolverMethod("lusolve");
6962

70-
// Solve the problem
7163
const result = model.solve();
7264

73-
// Print results to console
7465
console.log(`Number of nodes in mesh: ${result.nodesCoordinates.nodesXCoordinates.length}`);
7566
console.log("Solution vector:", result.solutionVector);
7667

77-
// Plot the solution as a 2D contour plot
7868
await plotInterpolatedSolutionVtk(model, result, "contour", "resultsCanvas", {
7969
colorScale: createColorScale({
8070
presetName: "Cool to Warm",

favicon.png

38.5 KB
Loading

0 commit comments

Comments
 (0)