Skip to content

Commit 4532b2b

Browse files
committed
Perform various modification for cleaning up the GPU solvers
1 parent 913cddc commit 4532b2b

14 files changed

+441
-395
lines changed

src/FEAScript.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ import { newtonRaphson } from "./methods/newtonRaphsonScript.js";
1313
import { solveLinearSystem } from "./methods/linearSystemSolverScript.js";
1414
import { solveLinearSystemAsync } from "./methods/linearSystemSolverScript.js";
1515
import { prepareMesh } from "./mesh/meshUtilsScript.js";
16-
import { assembleFrontPropagationMat } from "./solvers/frontPropagationScript.js";
17-
import { assembleGeneralFormPDEMat, assembleGeneralFormPDEFront } from "./solvers/generalFormPDEScript.js";
18-
import { assembleHeatConductionMat, assembleHeatConductionFront } from "./solvers/heatConductionScript.js";
16+
import { assembleFrontPropagationMat } from "./models/frontPropagationScript.js";
17+
import { assembleGeneralFormPDEMat, assembleGeneralFormPDEFront } from "./models/generalFormPDEScript.js";
18+
import { assembleHeatConductionMat, assembleHeatConductionFront } from "./models/heatConductionScript.js";
1919
import { runFrontalSolver } from "./methods/frontalSolverScript.js";
2020
import { basicLog, debugLog, warnLog, errorLog } from "./utilities/loggingScript.js";
2121

@@ -119,7 +119,7 @@ export class FEAScriptModel {
119119

120120
// Use WebGPU Jacobi method
121121
const initialGuess = new Array(b.length).fill(0);
122-
solutionVector = await computeEngine.jacobiSolve(A, b, initialGuess, 10000, 1e-3);
122+
solutionVector = await computeEngine.webgpuJacobiSolver(A, b, initialGuess, 10000, 1e-3);
123123

124124
console.timeEnd("systemSolving");
125125
basicLog("System solved successfully with WebGPU Jacobi");

src/methods/frontalSolverScript.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
// Internal imports
1212
import { BasisFunctions } from "../mesh/basisFunctionsScript.js";
1313
import { initializeFEA } from "../mesh/meshUtilsScript.js";
14-
import { assembleHeatConductionFront } from "../solvers/heatConductionScript.js";
15-
import { ThermalBoundaryConditions } from "../solvers/thermalBoundaryConditionsScript.js";
16-
import { assembleFrontPropagationFront } from "../solvers/frontPropagationScript.js";
17-
import { GenericBoundaryConditions } from "../solvers/genericBoundaryConditionsScript.js";
14+
import { assembleHeatConductionFront } from "../models/heatConductionScript.js";
15+
import { ThermalBoundaryConditions } from "../models/thermalBoundaryConditionsScript.js";
16+
import { assembleFrontPropagationFront } from "../models/frontPropagationScript.js";
17+
import { GenericBoundaryConditions } from "../models/genericBoundaryConditionsScript.js";
1818
import { basicLog, debugLog, errorLog } from "../utilities/loggingScript.js";
1919

2020
// Create object templates

src/methods/linearSystemSolverScript.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ export function solveLinearSystem(solverMethod, jacobianMatrix, residualVector,
7474

7575
// Helper to lazily create a default WebGPU compute engine (Comlink + worker)
7676
async function createDefaultComputeEngine() {
77-
const worker = new Worker(new URL("../workers/webgpuComputeWorker.js", import.meta.url), {
77+
const worker = new Worker(new URL("../workers/webgpuWorkerScript.js", import.meta.url), {
7878
type: "module",
7979
});
8080
const computeEngine = Comlink.wrap(worker);
@@ -108,11 +108,11 @@ export async function solveLinearSystemAsync(solverMethod, jacobianMatrix, resid
108108
const x0 = new Array(b.length).fill(0);
109109
let result;
110110

111-
if (computeEngine && typeof computeEngine.jacobiSolve === "function") {
112-
result = await computeEngine.jacobiSolve(A, b, x0, maxIterations, tolerance);
111+
if (computeEngine && typeof computeEngine.webgpuJacobiSolver === "function") {
112+
result = await computeEngine.webgpuJacobiSolver(A, b, x0, maxIterations, tolerance);
113113
} else {
114114
// Fallback to CPU Jacobi
115-
warnLog("Falling back to CPU Jacobi: computeEngine.jacobiSolve not available");
115+
warnLog("Falling back to CPU Jacobi: computeEngine.webgpuJacobiSolver not available");
116116
const cpu = jacobiSolver(A, b, x0, { maxIterations, tolerance });
117117
result = { x: cpu.solutionVector, converged: cpu.converged, iterations: cpu.iterations };
118118
}

src/methods/newtonRaphsonScript.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { euclideanNorm } from "../methods/euclideanNormScript.js";
1313
import { solveLinearSystem } from "./linearSystemSolverScript.js";
1414
import { basicLog, debugLog, errorLog } from "../utilities/loggingScript.js";
1515
import { runFrontalSolver } from "./frontalSolverScript.js";
16-
import { assembleFrontPropagationFront } from "../solvers/frontPropagationScript.js";
16+
import { assembleFrontPropagationFront } from "../models/frontPropagationScript.js";
1717

1818
/**
1919
* Function to solve a system of non-linear equations using the Newton-Raphson method

0 commit comments

Comments
 (0)