Gallery: describe the shape sweeps from the rendered metrics
build-deploy 1m 5sRaw log
Runner
Job build-deploy on ubuntu-latest Checking out proof-of-concept/steelsim21 at d5f4ed91 Container started from catthehacker/ubuntu:act-latest ▸ Post actions/setup-node@v4 (node:561) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead. (Use `node --trace-deprecation ...` to show where the warning was created) Cleaning up the job container
actions/checkout@v40s
▸ actions/checkout@v4 Using mochi's built-in checkout (actions/checkout@v4) proof-of-concept/steelsim21 is already checked out at d5f4ed91 (mochi checks out before the job starts)
actions/setup-node@v414s
▸ actions/setup-node@v4 Using cached actions/setup-node@v4 (49933ea5288c) Attempting to download 24... (node:55) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead. (Use `node --trace-deprecation ...` to show where the warning was created) Bad credentials Falling back to download directly from Node Acquiring 24.21.0 - x64 from https://nodejs.org/dist/v24.21.0/node-v24.21.0-linux-x64.tar.gz Extracting ... [command]/usr/bin/tar xz --strip 1 --warning=no-unknown-keyword --overwrite -C /mochi/temp/44fdf4bf-5fad-4a71-91a6-7c0d3c165378 -f /mochi/temp/3765f9e7-de4b-40a2-8402-0d0bf9eaf74c Adding to the cache ... Done ▾ Environment details node: v24.21.0 npm: 11.19.0 yarn: WARNING: Cache action is only supported on GHES version >= 3.5. If you are on version >=3.5 Please check with GHES admin if Actions cache service is enabled or not.
Run npm ci16s
▸ Run npm ci added 23 packages, and audited 24 packages in 15s 5 packages are looking for funding run `npm fund` for details found 0 vulnerabilities npm warn install-scripts 2 packages have install scripts not yet covered by allowScripts: npm warn install-scripts esbuild@0.25.12 (postinstall: node install.js) npm warn install-scripts webgpu@0.6.0 (postinstall: node build/postinstall.js) npm warn install-scripts npm warn install-scripts Run `npm install-scripts ls` to review, or `npm install-scripts approve <pkg>` to allow.
Run npm test8s
▸ Run npm test > steelsim21@0.1.0 test > node --test tests/*.test.ts ✔ bending stiffness is symmetric and has exactly three rigid modes (27.413742ms) ✔ membrane stiffness is symmetric and has exactly three rigid modes (61.472226ms) ✔ free square plate frequencies match the Leissa values (2634.161678ms) ✔ forces are the negative gradient of the discrete energy (nonlinear state) (7.587974ms) ✔ maximum frequency estimate is close to the in-plane CFL estimate (68.241059ms) ✔ forces are the energy gradient with an initial-shape imperfection (7.613221ms) ✔ elliptical sheet: bending and membrane stiffness are symmetric with exactly three rigid modes (286.713888ms) ✔ elliptical sheet: forces are the energy gradient, with and without an initial shape (19.590843ms) ✔ free circular plate frequencies approach the Leissa values (4045.499829ms) ℹ tests 9 ℹ suites 0 ℹ pass 9 ℹ fail 0 ℹ cancelled 0 ℹ skipped 0 ℹ todo 0 ℹ duration_ms 7226.443367
Run npm run build2s
▸ Run npm run build > steelsim21@0.1.0 build > tsc --noEmit && vite build && node scripts/copy-gallery.mjs vite v6.4.3 building for production... transforming... ✓ 20 modules transformed. rendering chunks... computing gzip size... dist/index.html 1.14 kB │ gzip: 0.54 kB dist/assets/index-D9W1lPrI.css 2.97 kB │ gzip: 1.12 kB dist/assets/index-Chwv3Nfx.js 74.59 kB │ gzip: 25.63 kB ✓ built in 184ms copied docs/gallery -> dist/docs/gallery
actions/configure-pages@v50s
▸ actions/configure-pages@v5 Using mochi's built-in configure-pages (actions/configure-pages@v5) This site will be served at https://steelsim21--proof-of-concept.vault1-sites.magland.org/
actions/upload-pages-artifact@v313s
▸ actions/upload-pages-artifact@v3 Using cached actions/upload-pages-artifact@v3 (56afc609e742) ▸ Archive artifact ▾ Archive artifact ./ ./docs/ ./docs/gallery/ ./docs/gallery/bow-amplitude-strike.json ./docs/gallery/bow-amplitude.json ./docs/gallery/bow-shape-strike.json ./docs/gallery/bow-shape.json ./docs/gallery/clips/ ./docs/gallery/clips/bow-amplitude-0.json ./docs/gallery/clips/bow-amplitude-0.png ./docs/gallery/clips/bow-amplitude-0.wav ./docs/gallery/clips/bow-amplitude-1.json ./docs/gallery/clips/bow-amplitude-1.png ./docs/gallery/clips/bow-amplitude-1.wav ./docs/gallery/clips/bow-amplitude-2.json ./docs/gallery/clips/bow-amplitude-2.png ./docs/gallery/clips/bow-amplitude-2.wav ./docs/gallery/clips/bow-amplitude-3.json ./docs/gallery/clips/bow-amplitude-3.png ./docs/gallery/clips/bow-amplitude-3.wav ./docs/gallery/clips/bow-amplitude-strike-0.json ./docs/gallery/clips/bow-amplitude-strike-0.png ./docs/gallery/clips/bow-amplitude-strike-0.wav ./docs/gallery/clips/bow-amplitude-strike-1.json ./docs/gallery/clips/bow-amplitude-strike-1.png ./docs/gallery/clips/bow-amplitude-strike-1.wav ./docs/gallery/clips/bow-amplitude-strike-2.json ./docs/gallery/clips/bow-amplitude-strike-2.png ./docs/gallery/clips/bow-amplitude-strike-2.wav ./docs/gallery/clips/bow-amplitude-strike-3.json ./docs/gallery/clips/bow-amplitude-strike-3.png ./docs/gallery/clips/bow-amplitude-strike-3.wav ./docs/gallery/clips/bow-shape-0.json ./docs/gallery/clips/bow-shape-0.png ./docs/gallery/clips/bow-shape-0.wav ./docs/gallery/clips/bow-shape-1.json ./docs/gallery/clips/bow-shape-1.png ./docs/gallery/clips/bow-shape-1.wav ./docs/gallery/clips/bow-shape-2.json ./docs/gallery/clips/bow-shape-2.png ./docs/gallery/clips/bow-shape-2.wav ./docs/gallery/clips/bow-shape-strike-0.json ./docs/gallery/clips/bow-shape-strike-0.png ./docs/gallery/clips/bow-shape-strike-0.wav ./docs/gallery/clips/bow-shape-strike-1.json ./docs/gallery/clips/bow-shape-strike-1.png ./docs/gallery/clips/bow-shape-strike-1.wav ./docs/gallery/clips/bow-shape-strike-2.json ./docs/gallery/clips/bow-shape-strike-2.png ./docs/gallery/clips/bow-shape-strike-2.wav ./docs/gallery/clips/damping-inplane-0.json ./docs/gallery/clips/damping-inplane-0.png ./docs/gallery/clips/damping-inplane-0.wav ./docs/gallery/clips/damping-inplane-1.json ./docs/gallery/clips/damping-inplane-1.png ./docs/gallery/clips/damping-inplane-1.wav ./docs/gallery/clips/damping-inplane-2.json ./docs/gallery/clips/damping-inplane-2.png ./docs/gallery/clips/damping-inplane-2.wav ./docs/gallery/clips/damping-inplane-strike-0.json ./docs/gallery/clips/damping-inplane-strike-0.png ./docs/gallery/clips/damping-inplane-strike-0.wav ./docs/gallery/clips/damping-inplane-strike-1.json ./docs/gallery/clips/damping-inplane-strike-1.png ./docs/gallery/clips/damping-inplane-strike-1.wav ./docs/gallery/clips/damping-inplane-strike-2.json ./docs/gallery/clips/damping-inplane-strike-2.png ./docs/gallery/clips/damping-inplane-strike-2.wav ./docs/gallery/clips/damping-sigma0-0.json ./docs/gallery/clips/damping-sigma0-0.png ./docs/gallery/clips/damping-sigma0-0.wav ./docs/gallery/clips/damping-sigma0-1.json ./docs/gallery/clips/damping-sigma0-1.png ./docs/gallery/clips/damping-sigma0-1.wav ./docs/gallery/clips/damping-sigma0-2.json ./docs/gallery/clips/damping-sigma0-2.png ./docs/gallery/clips/damping-sigma0-2.wav ./docs/gallery/clips/damping-sigma0-strike-0.json ./docs/gallery/clips/damping-sigma0-strike-0.png ./docs/gallery/clips/damping-sigma0-strike-0.wav ./docs/gallery/clips/damping-sigma0-strike-1.json ./docs/gallery/clips/damping-sigma0-strike-1.png ./docs/gallery/clips/damping-sigma0-strike-1.wav ./docs/gallery/clips/damping-sigma0-strike-2.json ./docs/gallery/clips/damping-sigma0-strike-2.png ./docs/gallery/clips/damping-sigma0-strike-2.wav ./docs/gallery/clips/damping-sigma1-0.json ./docs/gallery/clips/damping-sigma1-0.png ./docs/gallery/clips/damping-sigma1-0.wav ./docs/gallery/clips/damping-sigma1-1.json ./docs/gallery/clips/damping-sigma1-1.png ./docs/gallery/clips/damping-sigma1-1.wav ./docs/gallery/clips/damping-sigma1-2.json ./docs/gallery/clips/damping-sigma1-2.png ./docs/gallery/clips/damping-sigma1-2.wav ./docs/gallery/clips/damping-sigma1-strike-0.json ./docs/gallery/clips/damping-sigma1-strike-0.png ./docs/gallery/clips/damping-sigma1-strike-0.wav ./docs/gallery/clips/damping-sigma1-strike-1.json ./docs/gallery/clips/damping-sigma1-strike-1.png ./docs/gallery/clips/damping-sigma1-strike-1.wav ./docs/gallery/clips/damping-sigma1-strike-2.json ./docs/gallery/clips/damping-sigma1-strike-2.png ./docs/gallery/clips/damping-sigma1-strike-2.wav ./docs/gallery/clips/ellipse-bow-amplitude-0.json ./docs/gallery/clips/ellipse-bow-amplitude-0.png ./docs/gallery/clips/ellipse-bow-amplitude-0.wav ./docs/gallery/clips/ellipse-bow-amplitude-1.json ./docs/gallery/clips/ellipse-bow-amplitude-1.png ./docs/gallery/clips/ellipse-bow-amplitude-1.wav ./docs/gallery/clips/ellipse-bow-amplitude-2.json ./docs/gallery/clips/ellipse-bow-amplitude-2.png ./docs/gallery/clips/ellipse-bow-amplitude-2.wav ./docs/gallery/clips/ellipse-bow-amplitude-3.json ./docs/gallery/clips/ellipse-bow-amplitude-3.png ./docs/gallery/clips/ellipse-bow-amplitude-3.wav ./docs/gallery/clips/ellipse-bow-amplitude-strike-0.json ./docs/gallery/clips/ellipse-bow-amplitude-strike-0.png ./docs/gallery/clips/ellipse-bow-amplitude-strike-0.wav ./docs/gallery/clips/ellipse-bow-amplitude-strike-1.json ./docs/gallery/clips/ellipse-bow-amplitude-strike-1.png ./docs/gallery/clips/ellipse-bow-amplitude-strike-1.wav ./docs/gallery/clips/ellipse-bow-amplitude-strike-2.json ./docs/gallery/clips/ellipse-bow-amplitude-strike-2.png ./docs/gallery/clips/ellipse-bow-amplitude-strike-2.wav ./docs/gallery/clips/ellipse-bow-amplitude-strike-3.json ./docs/gallery/clips/ellipse-bow-amplitude-strike-3.png ./docs/gallery/clips/ellipse-bow-amplitude-strike-3.wav ./docs/gallery/clips/ellipse-bow-shape-0.json ./docs/gallery/clips/ellipse-bow-shape-0.png ./docs/gallery/clips/ellipse-bow-shape-0.wav ./docs/gallery/clips/ellipse-bow-shape-1.json ./docs/gallery/clips/ellipse-bow-shape-1.png ./docs/gallery/clips/ellipse-bow-shape-1.wav ./docs/gallery/clips/ellipse-bow-shape-2.json ./docs/gallery/clips/ellipse-bow-shape-2.png ./docs/gallery/clips/ellipse-bow-shape-2.wav ./docs/gallery/clips/ellipse-bow-shape-strike-0.json ./docs/gallery/clips/ellipse-bow-shape-strike-0.png ./docs/gallery/clips/ellipse-bow-shape-strike-0.wav ./docs/gallery/clips/ellipse-bow-shape-strike-1.json ./docs/gallery/clips/ellipse-bow-shape-strike-1.png ./docs/gallery/clips/ellipse-bow-shape-strike-1.wav ./docs/gallery/clips/ellipse-bow-shape-strike-2.json ./docs/gallery/clips/ellipse-bow-shape-strike-2.png ./docs/gallery/clips/ellipse-bow-shape-strike-2.wav ./docs/gallery/clips/ellipse-size-0.json ./docs/gallery/clips/ellipse-size-0.png ./docs/gallery/clips/ellipse-size-0.wav ./docs/gallery/clips/ellipse-size-1.json ./docs/gallery/clips/ellipse-size-1.png ./docs/gallery/clips/ellipse-size-1.wav ./docs/gallery/clips/ellipse-size-2.json ./docs/gallery/clips/ellipse-size-2.png ./docs/gallery/clips/ellipse-size-2.wav ./docs/gallery/clips/ellipse-size-3.json ./docs/gallery/clips/ellipse-size-3.png ./docs/gallery/clips/ellipse-size-3.wav ./docs/gallery/clips/ellipse-size-strike-0.json ./docs/gallery/clips/ellipse-size-strike-0.png ./docs/gallery/clips/ellipse-size-strike-0.wav ./docs/gallery/clips/ellipse-size-strike-1.json ./docs/gallery/clips/ellipse-size-strike-1.png ./docs/gallery/clips/ellipse-size-strike-1.wav ./docs/gallery/clips/ellipse-size-strike-2.json ./docs/gallery/clips/ellipse-size-strike-2.png ./docs/gallery/clips/ellipse-size-strike-2.wav ./docs/gallery/clips/ellipse-size-strike-3.json ./docs/gallery/clips/ellipse-size-strike-3.png ./docs/gallery/clips/ellipse-size-strike-3.wav ./docs/gallery/clips/material-0.json ./docs/gallery/clips/material-0.png ./docs/gallery/clips/material-0.wav ./docs/gallery/clips/material-1.json ./docs/gallery/clips/material-1.png ./docs/gallery/clips/material-1.wav ./docs/gallery/clips/material-2.json ./docs/gallery/clips/material-2.png ./docs/gallery/clips/material-2.wav ./docs/gallery/clips/material-strike-0.json ./docs/gallery/clips/material-strike-0.png ./docs/gallery/clips/material-strike-0.wav ./docs/gallery/clips/material-strike-1.json ./docs/gallery/clips/material-strike-1.png ./docs/gallery/clips/material-strike-1.wav ./docs/gallery/clips/material-strike-2.json ./docs/gallery/clips/material-strike-2.png ./docs/gallery/clips/material-strike-2.wav ./docs/gallery/clips/outline-0.json ./docs/gallery/clips/outline-0.png ./docs/gallery/clips/outline-0.wav ./docs/gallery/clips/outline-1.json ./docs/gallery/clips/outline-1.png ./docs/gallery/clips/outline-1.wav ./docs/gallery/clips/outline-2.json ./docs/gallery/clips/outline-2.png ./docs/gallery/clips/outline-2.wav ./docs/gallery/clips/outline-3.json ./docs/gallery/clips/outline-3.png ./docs/gallery/clips/outline-3.wav ./docs/gallery/clips/outline-strike-0.json ./docs/gallery/clips/outline-strike-0.png ./docs/gallery/clips/outline-strike-0.wav ./docs/gallery/clips/outline-strike-1.json ./docs/gallery/clips/outline-strike-1.png ./docs/gallery/clips/outline-strike-1.wav ./docs/gallery/clips/outline-strike-2.json ./docs/gallery/clips/outline-strike-2.png ./docs/gallery/clips/outline-strike-2.wav ./docs/gallery/clips/outline-strike-3.json ./docs/gallery/clips/outline-strike-3.png ./docs/gallery/clips/outline-strike-3.wav ./docs/gallery/clips/push-amount-0.json ./docs/gallery/clips/push-amount-0.png ./docs/gallery/clips/push-amount-0.wav ./docs/gallery/clips/push-amount-1.json ./docs/gallery/clips/push-amount-1.png ./docs/gallery/clips/push-amount-1.wav ./docs/gallery/clips/push-amount-2.json ./docs/gallery/clips/push-amount-2.png ./docs/gallery/clips/push-amount-2.wav ./docs/gallery/clips/push-amount-3.json ./docs/gallery/clips/push-amount-3.png ./docs/gallery/clips/push-amount-3.wav ./docs/gallery/clips/push-release-0.json ./docs/gallery/clips/push-release-0.png ./docs/gallery/clips/push-release-0.wav ./docs/gallery/clips/push-release-1.json ./docs/gallery/clips/push-release-1.png ./docs/gallery/clips/push-release-1.wav ./docs/gallery/clips/push-release-2.json ./docs/gallery/clips/push-release-2.png ./docs/gallery/clips/push-release-2.wav ./docs/gallery/clips/push-release-3.json ./docs/gallery/clips/push-release-3.png ./docs/gallery/clips/push-release-3.wav ./docs/gallery/clips/push-sign-0.json ./docs/gallery/clips/push-sign-0.png ./docs/gallery/clips/push-sign-0.wav ./docs/gallery/clips/push-sign-1.json ./docs/gallery/clips/push-sign-1.png ./docs/gallery/clips/push-sign-1.wav ./docs/gallery/clips/size-0.json ./docs/gallery/clips/size-0.png ./docs/gallery/clips/size-0.wav ./docs/gallery/clips/size-1.json ./docs/gallery/clips/size-1.png ./docs/gallery/clips/size-1.wav ./docs/gallery/clips/size-2.json ./docs/gallery/clips/size-2.png ./docs/gallery/clips/size-2.wav ./docs/gallery/clips/size-3.json ./docs/gallery/clips/size-3.png ./docs/gallery/clips/size-3.wav ./docs/gallery/clips/size-strike-0.json ./docs/gallery/clips/size-strike-0.png ./docs/gallery/clips/size-strike-0.wav ./docs/gallery/clips/size-strike-1.json ./docs/gallery/clips/size-strike-1.png ./docs/gallery/clips/size-strike-1.wav ./docs/gallery/clips/size-strike-2.json ./docs/gallery/clips/size-strike-2.png ./docs/gallery/clips/size-strike-2.wav ./docs/gallery/clips/size-strike-3.json ./docs/gallery/clips/size-strike-3.png ./docs/gallery/clips/size-strike-3.wav ./docs/gallery/clips/strike-mass-0.json ./docs/gallery/clips/strike-mass-0.png ./docs/gallery/clips/strike-mass-0.wav ./docs/gallery/clips/strike-mass-1.json ./docs/gallery/clips/strike-mass-1.png ./docs/gallery/clips/strike-mass-1.wav ./docs/gallery/clips/strike-mass-2.json ./docs/gallery/clips/strike-mass-2.png ./docs/gallery/clips/strike-mass-2.wav ./docs/gallery/clips/strike-mass-3.json ./docs/gallery/clips/strike-mass-3.png ./docs/gallery/clips/strike-mass-3.wav ./docs/gallery/clips/strike-position-0.json ./docs/gallery/clips/strike-position-0.png ./docs/gallery/clips/strike-position-0.wav ./docs/gallery/clips/strike-position-1.json ./docs/gallery/clips/strike-position-1.png ./docs/gallery/clips/strike-position-1.wav ./docs/gallery/clips/strike-position-2.json ./docs/gallery/clips/strike-position-2.png ./docs/gallery/clips/strike-position-2.wav ./docs/gallery/clips/strike-position-3.json ./docs/gallery/clips/strike-position-3.png ./docs/gallery/clips/strike-position-3.wav ./docs/gallery/clips/strike-speed-0.json ./docs/gallery/clips/strike-speed-0.png ./docs/gallery/clips/strike-speed-0.wav ./docs/gallery/clips/strike-speed-1.json ./docs/gallery/clips/strike-speed-1.png ./docs/gallery/clips/strike-speed-1.wav ./docs/gallery/clips/strike-speed-2.json ./docs/gallery/clips/strike-speed-2.png ./docs/gallery/clips/strike-speed-2.wav ./docs/gallery/clips/strike-speed-3.json ./docs/gallery/clips/strike-speed-3.png ./docs/gallery/clips/strike-speed-3.wav ./docs/gallery/clips/strike-speed-4.json ./docs/gallery/clips/strike-speed-4.png ./docs/gallery/clips/strike-speed-4.wav ./docs/gallery/clips/strike-speed-5.json ./docs/gallery/clips/strike-speed-5.png ./docs/gallery/clips/strike-speed-5.wav ./docs/gallery/clips/strike-stiffness-0.json ./docs/gallery/clips/strike-stiffness-0.png ./docs/gallery/clips/strike-stiffness-0.wav ./docs/gallery/clips/strike-stiffness-1.json ./docs/gallery/clips/strike-stiffness-1.png ./docs/gallery/clips/strike-stiffness-1.wav ./docs/gallery/clips/strike-stiffness-2.json ./docs/gallery/clips/strike-stiffness-2.png ./docs/gallery/clips/strike-stiffness-2.wav ./docs/gallery/clips/strike-stiffness-3.json ./docs/gallery/clips/strike-stiffness-3.png ./docs/gallery/clips/strike-stiffness-3.wav ./docs/gallery/clips/thickness-0.json ./docs/gallery/clips/thickness-0.png ./docs/gallery/clips/thickness-0.wav ./docs/gallery/clips/thickness-1.json ./docs/gallery/clips/thickness-1.png ./docs/gallery/clips/thickness-1.wav ./docs/gallery/clips/thickness-2.json ./docs/gallery/clips/thickness-2.png ./docs/gallery/clips/thickness-2.wav ./docs/gallery/clips/thickness-3.json ./docs/gallery/clips/thickness-3.png ./docs/gallery/clips/thickness-3.wav ./docs/gallery/clips/thickness-strike-0.json ./docs/gallery/clips/thickness-strike-0.png ./docs/gallery/clips/thickness-strike-0.wav ./docs/gallery/clips/thickness-strike-1.json ./docs/gallery/clips/thickness-strike-1.png ./docs/gallery/clips/thickness-strike-1.wav ./docs/gallery/clips/thickness-strike-2.json ./docs/gallery/clips/thickness-strike-2.png ./docs/gallery/clips/thickness-strike-2.wav ./docs/gallery/clips/thickness-strike-3.json ./docs/gallery/clips/thickness-strike-3.png ./docs/gallery/clips/thickness-strike-3.wav ./docs/gallery/damping-inplane-strike.json ./docs/gallery/damping-inplane.json ./docs/gallery/damping-sigma0-strike.json ./docs/gallery/damping-sigma0.json ./docs/gallery/damping-sigma1-strike.json ./docs/gallery/damping-sigma1.json ./docs/gallery/ellipse-bow-amplitude-strike.json ./docs/gallery/ellipse-bow-amplitude.json ./docs/gallery/ellipse-bow-shape-strike.json ./docs/gallery/ellipse-bow-shape.json ./docs/gallery/ellipse-size-strike.json ./docs/gallery/ellipse-size.json ./docs/gallery/index.html ./docs/gallery/manifest.json ./docs/gallery/material-strike.json ./docs/gallery/material.json ./docs/gallery/outline-strike.json ./docs/gallery/outline.json ./docs/gallery/push-amount.json ./docs/gallery/push-release.json ./docs/gallery/push-sign.json ./docs/gallery/size-strike.json ./docs/gallery/size.json ./docs/gallery/strike-mass.json ./docs/gallery/strike-position.json ./docs/gallery/strike-speed.json ./docs/gallery/strike-stiffness.json ./docs/gallery/thickness-strike.json ./docs/gallery/thickness.json ./assets/ ./assets/index-D9W1lPrI.css ./assets/index-Chwv3Nfx.js ./index.html ▸ Upload artifact Using mochi's built-in upload-artifact (actions/upload-artifact@v4) Uploading artifact github-pages (1 file, 48599040 bytes)
actions/deploy-pages@v41s
▸ actions/deploy-pages@v4 Using mochi's built-in deploy-pages (actions/deploy-pages@v4) Deployed 372 files to https://steelsim21--proof-of-concept.vault1-sites.magland.org/