export declare const REGULAR_GRID_STENCIL_WGSL = "\nstruct GridParams {\n nx: u32,\n ny: u32,\n nz: u32,\n hasVelocity: u32,\n dx: f32,\n dy: f32,\n dz: f32,\n dt: f32,\n alpha: f32,\n rhoCp: f32,\n cUniform: f32,\n _pad0: f32,\n};\n\n@group(0) @binding(0) var inputA: array;\n@group(0) @binding(1) var inputB: array;\n@group(0) @binding(2) var aux: array;\n@group(0) @binding(3) var outputField: array;\n@group(0) @binding(4) var params: GridParams;\n\nfn flat_index(i: u32, j: u32, k: u32) -> u32 {\n return (k * params.ny + j) * params.nx + i;\n}\n\nfn laplacian(field: ptr, read>, i: u32, j: u32, k: u32) -> f32 {\n let idx = flat_index(i, j, k);\n let center = (*field)[idx];\n var lap = 0.0;\n\n if (i > 0u && i < params.nx - 1u) {\n lap += ((*field)[flat_index(i + 1u, j, k)] - 2.0 * center + (*field)[flat_index(i - 1u, j, k)]) / (params.dx * params.dx);\n }\n if (j > 0u && j < params.ny - 1u) {\n lap += ((*field)[flat_index(i, j + 1u, k)] - 2.0 * center + (*field)[flat_index(i, j - 1u, k)]) / (params.dy * params.dy);\n }\n if (k > 0u && k < params.nz - 1u) {\n lap += ((*field)[flat_index(i, j, k + 1u)] - 2.0 * center + (*field)[flat_index(i, j, k - 1u)]) / (params.dz * params.dz);\n }\n\n return lap;\n}\n\n@compute @workgroup_size(128)\nfn thermal_explicit(@builtin(global_invocation_id) gid: vec3) {\n let n = params.nx * params.ny * params.nz;\n let idx = gid.x;\n if (idx >= n) {\n return;\n }\n\n let i = idx % params.nx;\n let j = (idx / params.nx) % params.ny;\n let k = idx / (params.nx * params.ny);\n let current = inputA[idx];\n\n if (i == 0u || j == 0u || k == 0u || i == params.nx - 1u || j == params.ny - 1u || k == params.nz - 1u) {\n outputField[idx] = current;\n return;\n }\n\n let lap = laplacian(&inputA, i, j, k);\n outputField[idx] = current + params.dt * (params.alpha * lap + aux[idx] / params.rhoCp);\n}\n\n@compute @workgroup_size(128)\nfn acoustic_leapfrog(@builtin(global_invocation_id) gid: vec3) {\n let n = params.nx * params.ny * params.nz;\n let idx = gid.x;\n if (idx >= n) {\n return;\n }\n\n let i = idx % params.nx;\n let j = (idx / params.nx) % params.ny;\n let k = idx / (params.nx * params.ny);\n\n if (i == 0u || j == 0u || k == 0u || i == params.nx - 1u || j == params.ny - 1u || k == params.nz - 1u) {\n outputField[idx] = inputA[idx];\n return;\n }\n\n let c = select(params.cUniform, aux[idx], params.hasVelocity != 0u);\n let c2dt2 = (c * params.dt) * (c * params.dt);\n let lap = laplacian(&inputA, i, j, k);\n outputField[idx] = 2.0 * inputA[idx] - inputB[idx] + c2dt2 * lap;\n}\n"; //# sourceMappingURL=regular_grid_stencils.d.ts.map